##// END OF EJS Templates
croak cleanly on non-ascii home dir names
vivainio -
Show More
@@ -1,84 +1,84 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 2281 2007-04-27 11:08:18Z vivainio $"""
4 $Id: Release.py 2297 2007-04-30 11:08:46Z 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 = '2280'
25 revision = '2280'
26
26
27 #version = '0.8.1.svn.r' + revision.rstrip('M')
27 #version = '0.8.1.svn.r' + revision.rstrip('M')
28 version = '0.8.1.rc2'
28 version = '0.8.1.rc3'
29
29
30 description = "An enhanced interactive Python shell."
30 description = "An enhanced interactive Python shell."
31
31
32 long_description = \
32 long_description = \
33 """
33 """
34 IPython provides a replacement for the interactive Python interpreter with
34 IPython provides a replacement for the interactive Python interpreter with
35 extra functionality.
35 extra functionality.
36
36
37 Main features:
37 Main features:
38
38
39 * Comprehensive object introspection.
39 * Comprehensive object introspection.
40
40
41 * Input history, persistent across sessions.
41 * Input history, persistent across sessions.
42
42
43 * Caching of output results during a session with automatically generated
43 * Caching of output results during a session with automatically generated
44 references.
44 references.
45
45
46 * Readline based name completion.
46 * Readline based name completion.
47
47
48 * Extensible system of 'magic' commands for controlling the environment and
48 * Extensible system of 'magic' commands for controlling the environment and
49 performing many tasks related either to IPython or the operating system.
49 performing many tasks related either to IPython or the operating system.
50
50
51 * Configuration system with easy switching between different setups (simpler
51 * Configuration system with easy switching between different setups (simpler
52 than changing $PYTHONSTARTUP environment variables every time).
52 than changing $PYTHONSTARTUP environment variables every time).
53
53
54 * Session logging and reloading.
54 * Session logging and reloading.
55
55
56 * Extensible syntax processing for special purpose situations.
56 * Extensible syntax processing for special purpose situations.
57
57
58 * Access to the system shell with user-extensible alias system.
58 * Access to the system shell with user-extensible alias system.
59
59
60 * Easily embeddable in other Python programs.
60 * Easily embeddable in other Python programs.
61
61
62 * Integrated access to the pdb debugger and the Python profiler.
62 * Integrated access to the pdb debugger and the Python profiler.
63
63
64 The latest development version is always available at the IPython subversion
64 The latest development version is always available at the IPython subversion
65 repository_.
65 repository_.
66
66
67 .. _repository: http://ipython.scipy.org/svn/ipython/ipython/trunk#egg=ipython-dev
67 .. _repository: http://ipython.scipy.org/svn/ipython/ipython/trunk#egg=ipython-dev
68 """
68 """
69
69
70 license = 'BSD'
70 license = 'BSD'
71
71
72 authors = {'Fernando' : ('Fernando Perez','fperez@colorado.edu'),
72 authors = {'Fernando' : ('Fernando Perez','fperez@colorado.edu'),
73 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
73 'Janko' : ('Janko Hauser','jhauser@zscout.de'),
74 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
74 'Nathan' : ('Nathaniel Gray','n8gray@caltech.edu'),
75 'Ville' : ('Ville Vainio','vivainio@gmail.com')
75 'Ville' : ('Ville Vainio','vivainio@gmail.com')
76 }
76 }
77
77
78 url = 'http://ipython.scipy.org'
78 url = 'http://ipython.scipy.org'
79
79
80 download_url = 'http://ipython.scipy.org/dist'
80 download_url = 'http://ipython.scipy.org/dist'
81
81
82 platforms = ['Linux','Mac OSX','Windows XP/2000/NT','Windows 95/98/ME']
82 platforms = ['Linux','Mac OSX','Windows XP/2000/NT','Windows 95/98/ME']
83
83
84 keywords = ['Interactive','Interpreter','Shell']
84 keywords = ['Interactive','Interpreter','Shell']
@@ -1,2623 +1,2630 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.3 or newer.
5 Requires Python 2.3 or newer.
6
6
7 This file contains all the classes and helper functions specific to IPython.
7 This file contains all the classes and helper functions specific to IPython.
8
8
9 $Id: iplib.py 2266 2007-04-22 18:55:48Z jstenar $
9 $Id: iplib.py 2297 2007-04-30 11:08:46Z vivainio $
10 """
10 """
11
11
12 #*****************************************************************************
12 #*****************************************************************************
13 # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and
13 # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and
14 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
14 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
15 #
15 #
16 # Distributed under the terms of the BSD License. The full license is in
16 # Distributed under the terms of the BSD License. The full license is in
17 # the file COPYING, distributed as part of this software.
17 # the file COPYING, distributed as part of this software.
18 #
18 #
19 # Note: this code originally subclassed code.InteractiveConsole from the
19 # Note: this code originally subclassed code.InteractiveConsole from the
20 # Python standard library. Over time, all of that class has been copied
20 # Python standard library. Over time, all of that class has been copied
21 # verbatim here for modifications which could not be accomplished by
21 # verbatim here for modifications which could not be accomplished by
22 # subclassing. At this point, there are no dependencies at all on the code
22 # subclassing. At this point, there are no dependencies at all on the code
23 # module anymore (it is not even imported). The Python License (sec. 2)
23 # module anymore (it is not even imported). The Python License (sec. 2)
24 # allows for this, but it's always nice to acknowledge credit where credit is
24 # allows for this, but it's always nice to acknowledge credit where credit is
25 # due.
25 # due.
26 #*****************************************************************************
26 #*****************************************************************************
27
27
28 #****************************************************************************
28 #****************************************************************************
29 # Modules and globals
29 # Modules and globals
30
30
31 from IPython import Release
31 from IPython import Release
32 __author__ = '%s <%s>\n%s <%s>' % \
32 __author__ = '%s <%s>\n%s <%s>' % \
33 ( Release.authors['Janko'] + Release.authors['Fernando'] )
33 ( Release.authors['Janko'] + Release.authors['Fernando'] )
34 __license__ = Release.license
34 __license__ = Release.license
35 __version__ = Release.version
35 __version__ = Release.version
36
36
37 # Python standard modules
37 # Python standard modules
38 import __main__
38 import __main__
39 import __builtin__
39 import __builtin__
40 import StringIO
40 import StringIO
41 import bdb
41 import bdb
42 import cPickle as pickle
42 import cPickle as pickle
43 import codeop
43 import codeop
44 import exceptions
44 import exceptions
45 import glob
45 import glob
46 import inspect
46 import inspect
47 import keyword
47 import keyword
48 import new
48 import new
49 import os
49 import os
50 import pydoc
50 import pydoc
51 import re
51 import re
52 import shutil
52 import shutil
53 import string
53 import string
54 import sys
54 import sys
55 import tempfile
55 import tempfile
56 import traceback
56 import traceback
57 import types
57 import types
58 import pickleshare
58 import pickleshare
59 from sets import Set
59 from sets import Set
60 from pprint import pprint, pformat
60 from pprint import pprint, pformat
61
61
62 # IPython's own modules
62 # IPython's own modules
63 import IPython
63 import IPython
64 from IPython import Debugger,OInspect,PyColorize,ultraTB
64 from IPython import Debugger,OInspect,PyColorize,ultraTB
65 from IPython.ColorANSI import ColorScheme,ColorSchemeTable # too long names
65 from IPython.ColorANSI import ColorScheme,ColorSchemeTable # too long names
66 from IPython.FakeModule import FakeModule
66 from IPython.FakeModule import FakeModule
67 from IPython.Itpl import Itpl,itpl,printpl,ItplNS,itplns
67 from IPython.Itpl import Itpl,itpl,printpl,ItplNS,itplns
68 from IPython.Logger import Logger
68 from IPython.Logger import Logger
69 from IPython.Magic import Magic
69 from IPython.Magic import Magic
70 from IPython.Prompts import CachedOutput
70 from IPython.Prompts import CachedOutput
71 from IPython.ipstruct import Struct
71 from IPython.ipstruct import Struct
72 from IPython.background_jobs import BackgroundJobManager
72 from IPython.background_jobs import BackgroundJobManager
73 from IPython.usage import cmd_line_usage,interactive_usage
73 from IPython.usage import cmd_line_usage,interactive_usage
74 from IPython.genutils import *
74 from IPython.genutils import *
75 from IPython.strdispatch import StrDispatch
75 from IPython.strdispatch import StrDispatch
76 import IPython.ipapi
76 import IPython.ipapi
77
77
78 # Globals
78 # Globals
79
79
80 # store the builtin raw_input globally, and use this always, in case user code
80 # store the builtin raw_input globally, and use this always, in case user code
81 # overwrites it (like wx.py.PyShell does)
81 # overwrites it (like wx.py.PyShell does)
82 raw_input_original = raw_input
82 raw_input_original = raw_input
83
83
84 # compiled regexps for autoindent management
84 # compiled regexps for autoindent management
85 dedent_re = re.compile(r'^\s+raise|^\s+return|^\s+pass')
85 dedent_re = re.compile(r'^\s+raise|^\s+return|^\s+pass')
86
86
87
87
88 #****************************************************************************
88 #****************************************************************************
89 # Some utility function definitions
89 # Some utility function definitions
90
90
91 ini_spaces_re = re.compile(r'^(\s+)')
91 ini_spaces_re = re.compile(r'^(\s+)')
92
92
93 def num_ini_spaces(strng):
93 def num_ini_spaces(strng):
94 """Return the number of initial spaces in a string"""
94 """Return the number of initial spaces in a string"""
95
95
96 ini_spaces = ini_spaces_re.match(strng)
96 ini_spaces = ini_spaces_re.match(strng)
97 if ini_spaces:
97 if ini_spaces:
98 return ini_spaces.end()
98 return ini_spaces.end()
99 else:
99 else:
100 return 0
100 return 0
101
101
102 def softspace(file, newvalue):
102 def softspace(file, newvalue):
103 """Copied from code.py, to remove the dependency"""
103 """Copied from code.py, to remove the dependency"""
104
104
105 oldvalue = 0
105 oldvalue = 0
106 try:
106 try:
107 oldvalue = file.softspace
107 oldvalue = file.softspace
108 except AttributeError:
108 except AttributeError:
109 pass
109 pass
110 try:
110 try:
111 file.softspace = newvalue
111 file.softspace = newvalue
112 except (AttributeError, TypeError):
112 except (AttributeError, TypeError):
113 # "attribute-less object" or "read-only attributes"
113 # "attribute-less object" or "read-only attributes"
114 pass
114 pass
115 return oldvalue
115 return oldvalue
116
116
117
117
118 #****************************************************************************
118 #****************************************************************************
119 # Local use exceptions
119 # Local use exceptions
120 class SpaceInInput(exceptions.Exception): pass
120 class SpaceInInput(exceptions.Exception): pass
121
121
122
122
123 #****************************************************************************
123 #****************************************************************************
124 # Local use classes
124 # Local use classes
125 class Bunch: pass
125 class Bunch: pass
126
126
127 class Undefined: pass
127 class Undefined: pass
128
128
129 class Quitter(object):
129 class Quitter(object):
130 """Simple class to handle exit, similar to Python 2.5's.
130 """Simple class to handle exit, similar to Python 2.5's.
131
131
132 It handles exiting in an ipython-safe manner, which the one in Python 2.5
132 It handles exiting in an ipython-safe manner, which the one in Python 2.5
133 doesn't do (obviously, since it doesn't know about ipython)."""
133 doesn't do (obviously, since it doesn't know about ipython)."""
134
134
135 def __init__(self,shell,name):
135 def __init__(self,shell,name):
136 self.shell = shell
136 self.shell = shell
137 self.name = name
137 self.name = name
138
138
139 def __repr__(self):
139 def __repr__(self):
140 return 'Type %s() to exit.' % self.name
140 return 'Type %s() to exit.' % self.name
141 __str__ = __repr__
141 __str__ = __repr__
142
142
143 def __call__(self):
143 def __call__(self):
144 self.shell.exit()
144 self.shell.exit()
145
145
146 class InputList(list):
146 class InputList(list):
147 """Class to store user input.
147 """Class to store user input.
148
148
149 It's basically a list, but slices return a string instead of a list, thus
149 It's basically a list, but slices return a string instead of a list, thus
150 allowing things like (assuming 'In' is an instance):
150 allowing things like (assuming 'In' is an instance):
151
151
152 exec In[4:7]
152 exec In[4:7]
153
153
154 or
154 or
155
155
156 exec In[5:9] + In[14] + In[21:25]"""
156 exec In[5:9] + In[14] + In[21:25]"""
157
157
158 def __getslice__(self,i,j):
158 def __getslice__(self,i,j):
159 return ''.join(list.__getslice__(self,i,j))
159 return ''.join(list.__getslice__(self,i,j))
160
160
161 class SyntaxTB(ultraTB.ListTB):
161 class SyntaxTB(ultraTB.ListTB):
162 """Extension which holds some state: the last exception value"""
162 """Extension which holds some state: the last exception value"""
163
163
164 def __init__(self,color_scheme = 'NoColor'):
164 def __init__(self,color_scheme = 'NoColor'):
165 ultraTB.ListTB.__init__(self,color_scheme)
165 ultraTB.ListTB.__init__(self,color_scheme)
166 self.last_syntax_error = None
166 self.last_syntax_error = None
167
167
168 def __call__(self, etype, value, elist):
168 def __call__(self, etype, value, elist):
169 self.last_syntax_error = value
169 self.last_syntax_error = value
170 ultraTB.ListTB.__call__(self,etype,value,elist)
170 ultraTB.ListTB.__call__(self,etype,value,elist)
171
171
172 def clear_err_state(self):
172 def clear_err_state(self):
173 """Return the current error state and clear it"""
173 """Return the current error state and clear it"""
174 e = self.last_syntax_error
174 e = self.last_syntax_error
175 self.last_syntax_error = None
175 self.last_syntax_error = None
176 return e
176 return e
177
177
178 #****************************************************************************
178 #****************************************************************************
179 # Main IPython class
179 # Main IPython class
180
180
181 # FIXME: the Magic class is a mixin for now, and will unfortunately remain so
181 # FIXME: the Magic class is a mixin for now, and will unfortunately remain so
182 # until a full rewrite is made. I've cleaned all cross-class uses of
182 # until a full rewrite is made. I've cleaned all cross-class uses of
183 # attributes and methods, but too much user code out there relies on the
183 # attributes and methods, but too much user code out there relies on the
184 # equlity %foo == __IP.magic_foo, so I can't actually remove the mixin usage.
184 # equlity %foo == __IP.magic_foo, so I can't actually remove the mixin usage.
185 #
185 #
186 # But at least now, all the pieces have been separated and we could, in
186 # But at least now, all the pieces have been separated and we could, in
187 # principle, stop using the mixin. This will ease the transition to the
187 # principle, stop using the mixin. This will ease the transition to the
188 # chainsaw branch.
188 # chainsaw branch.
189
189
190 # For reference, the following is the list of 'self.foo' uses in the Magic
190 # For reference, the following is the list of 'self.foo' uses in the Magic
191 # class as of 2005-12-28. These are names we CAN'T use in the main ipython
191 # class as of 2005-12-28. These are names we CAN'T use in the main ipython
192 # class, to prevent clashes.
192 # class, to prevent clashes.
193
193
194 # ['self.__class__', 'self.__dict__', 'self._inspect', 'self._ofind',
194 # ['self.__class__', 'self.__dict__', 'self._inspect', 'self._ofind',
195 # 'self.arg_err', 'self.extract_input', 'self.format_', 'self.lsmagic',
195 # 'self.arg_err', 'self.extract_input', 'self.format_', 'self.lsmagic',
196 # 'self.magic_', 'self.options_table', 'self.parse', 'self.shell',
196 # 'self.magic_', 'self.options_table', 'self.parse', 'self.shell',
197 # 'self.value']
197 # 'self.value']
198
198
199 class InteractiveShell(object,Magic):
199 class InteractiveShell(object,Magic):
200 """An enhanced console for Python."""
200 """An enhanced console for Python."""
201
201
202 # class attribute to indicate whether the class supports threads or not.
202 # class attribute to indicate whether the class supports threads or not.
203 # Subclasses with thread support should override this as needed.
203 # Subclasses with thread support should override this as needed.
204 isthreaded = False
204 isthreaded = False
205
205
206 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
206 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
207 user_ns = None,user_global_ns=None,banner2='',
207 user_ns = None,user_global_ns=None,banner2='',
208 custom_exceptions=((),None),embedded=False):
208 custom_exceptions=((),None),embedded=False):
209
209
210 # log system
210 # log system
211 self.logger = Logger(self,logfname='ipython_log.py',logmode='rotate')
211 self.logger = Logger(self,logfname='ipython_log.py',logmode='rotate')
212
212
213 # some minimal strict typechecks. For some core data structures, I
213 # some minimal strict typechecks. For some core data structures, I
214 # want actual basic python types, not just anything that looks like
214 # want actual basic python types, not just anything that looks like
215 # one. This is especially true for namespaces.
215 # one. This is especially true for namespaces.
216 for ns in (user_ns,user_global_ns):
216 for ns in (user_ns,user_global_ns):
217 if ns is not None and type(ns) != types.DictType:
217 if ns is not None and type(ns) != types.DictType:
218 raise TypeError,'namespace must be a dictionary'
218 raise TypeError,'namespace must be a dictionary'
219
219
220 # Job manager (for jobs run as background threads)
220 # Job manager (for jobs run as background threads)
221 self.jobs = BackgroundJobManager()
221 self.jobs = BackgroundJobManager()
222
222
223 # Store the actual shell's name
223 # Store the actual shell's name
224 self.name = name
224 self.name = name
225
225
226 # We need to know whether the instance is meant for embedding, since
226 # We need to know whether the instance is meant for embedding, since
227 # global/local namespaces need to be handled differently in that case
227 # global/local namespaces need to be handled differently in that case
228 self.embedded = embedded
228 self.embedded = embedded
229
229
230 # command compiler
230 # command compiler
231 self.compile = codeop.CommandCompiler()
231 self.compile = codeop.CommandCompiler()
232
232
233 # User input buffer
233 # User input buffer
234 self.buffer = []
234 self.buffer = []
235
235
236 # Default name given in compilation of code
236 # Default name given in compilation of code
237 self.filename = '<ipython console>'
237 self.filename = '<ipython console>'
238
238
239 # Install our own quitter instead of the builtins. For python2.3-2.4,
239 # Install our own quitter instead of the builtins. For python2.3-2.4,
240 # this brings in behavior like 2.5, and for 2.5 it's identical.
240 # this brings in behavior like 2.5, and for 2.5 it's identical.
241 __builtin__.exit = Quitter(self,'exit')
241 __builtin__.exit = Quitter(self,'exit')
242 __builtin__.quit = Quitter(self,'quit')
242 __builtin__.quit = Quitter(self,'quit')
243
243
244 # Make an empty namespace, which extension writers can rely on both
244 # Make an empty namespace, which extension writers can rely on both
245 # existing and NEVER being used by ipython itself. This gives them a
245 # existing and NEVER being used by ipython itself. This gives them a
246 # convenient location for storing additional information and state
246 # convenient location for storing additional information and state
247 # their extensions may require, without fear of collisions with other
247 # their extensions may require, without fear of collisions with other
248 # ipython names that may develop later.
248 # ipython names that may develop later.
249 self.meta = Struct()
249 self.meta = Struct()
250
250
251 # Create the namespace where the user will operate. user_ns is
251 # Create the namespace where the user will operate. user_ns is
252 # normally the only one used, and it is passed to the exec calls as
252 # normally the only one used, and it is passed to the exec calls as
253 # the locals argument. But we do carry a user_global_ns namespace
253 # the locals argument. But we do carry a user_global_ns namespace
254 # given as the exec 'globals' argument, This is useful in embedding
254 # given as the exec 'globals' argument, This is useful in embedding
255 # situations where the ipython shell opens in a context where the
255 # situations where the ipython shell opens in a context where the
256 # distinction between locals and globals is meaningful.
256 # distinction between locals and globals is meaningful.
257
257
258 # FIXME. For some strange reason, __builtins__ is showing up at user
258 # FIXME. For some strange reason, __builtins__ is showing up at user
259 # level as a dict instead of a module. This is a manual fix, but I
259 # level as a dict instead of a module. This is a manual fix, but I
260 # should really track down where the problem is coming from. Alex
260 # should really track down where the problem is coming from. Alex
261 # Schmolck reported this problem first.
261 # Schmolck reported this problem first.
262
262
263 # A useful post by Alex Martelli on this topic:
263 # A useful post by Alex Martelli on this topic:
264 # Re: inconsistent value from __builtins__
264 # Re: inconsistent value from __builtins__
265 # Von: Alex Martelli <aleaxit@yahoo.com>
265 # Von: Alex Martelli <aleaxit@yahoo.com>
266 # Datum: Freitag 01 Oktober 2004 04:45:34 nachmittags/abends
266 # Datum: Freitag 01 Oktober 2004 04:45:34 nachmittags/abends
267 # Gruppen: comp.lang.python
267 # Gruppen: comp.lang.python
268
268
269 # Michael Hohn <hohn@hooknose.lbl.gov> wrote:
269 # Michael Hohn <hohn@hooknose.lbl.gov> wrote:
270 # > >>> print type(builtin_check.get_global_binding('__builtins__'))
270 # > >>> print type(builtin_check.get_global_binding('__builtins__'))
271 # > <type 'dict'>
271 # > <type 'dict'>
272 # > >>> print type(__builtins__)
272 # > >>> print type(__builtins__)
273 # > <type 'module'>
273 # > <type 'module'>
274 # > Is this difference in return value intentional?
274 # > Is this difference in return value intentional?
275
275
276 # Well, it's documented that '__builtins__' can be either a dictionary
276 # Well, it's documented that '__builtins__' can be either a dictionary
277 # or a module, and it's been that way for a long time. Whether it's
277 # or a module, and it's been that way for a long time. Whether it's
278 # intentional (or sensible), I don't know. In any case, the idea is
278 # intentional (or sensible), I don't know. In any case, the idea is
279 # that if you need to access the built-in namespace directly, you
279 # that if you need to access the built-in namespace directly, you
280 # should start with "import __builtin__" (note, no 's') which will
280 # should start with "import __builtin__" (note, no 's') which will
281 # definitely give you a module. Yeah, it's somewhat confusing:-(.
281 # definitely give you a module. Yeah, it's somewhat confusing:-(.
282
282
283 # These routines return properly built dicts as needed by the rest of
283 # These routines return properly built dicts as needed by the rest of
284 # the code, and can also be used by extension writers to generate
284 # the code, and can also be used by extension writers to generate
285 # properly initialized namespaces.
285 # properly initialized namespaces.
286 user_ns = IPython.ipapi.make_user_ns(user_ns)
286 user_ns = IPython.ipapi.make_user_ns(user_ns)
287 user_global_ns = IPython.ipapi.make_user_global_ns(user_global_ns)
287 user_global_ns = IPython.ipapi.make_user_global_ns(user_global_ns)
288
288
289 # Assign namespaces
289 # Assign namespaces
290 # This is the namespace where all normal user variables live
290 # This is the namespace where all normal user variables live
291 self.user_ns = user_ns
291 self.user_ns = user_ns
292 # Embedded instances require a separate namespace for globals.
292 # Embedded instances require a separate namespace for globals.
293 # Normally this one is unused by non-embedded instances.
293 # Normally this one is unused by non-embedded instances.
294 self.user_global_ns = user_global_ns
294 self.user_global_ns = user_global_ns
295 # A namespace to keep track of internal data structures to prevent
295 # A namespace to keep track of internal data structures to prevent
296 # them from cluttering user-visible stuff. Will be updated later
296 # them from cluttering user-visible stuff. Will be updated later
297 self.internal_ns = {}
297 self.internal_ns = {}
298
298
299 # Namespace of system aliases. Each entry in the alias
299 # Namespace of system aliases. Each entry in the alias
300 # table must be a 2-tuple of the form (N,name), where N is the number
300 # table must be a 2-tuple of the form (N,name), where N is the number
301 # of positional arguments of the alias.
301 # of positional arguments of the alias.
302 self.alias_table = {}
302 self.alias_table = {}
303
303
304 # A table holding all the namespaces IPython deals with, so that
304 # A table holding all the namespaces IPython deals with, so that
305 # introspection facilities can search easily.
305 # introspection facilities can search easily.
306 self.ns_table = {'user':user_ns,
306 self.ns_table = {'user':user_ns,
307 'user_global':user_global_ns,
307 'user_global':user_global_ns,
308 'alias':self.alias_table,
308 'alias':self.alias_table,
309 'internal':self.internal_ns,
309 'internal':self.internal_ns,
310 'builtin':__builtin__.__dict__
310 'builtin':__builtin__.__dict__
311 }
311 }
312
312
313 # The user namespace MUST have a pointer to the shell itself.
313 # The user namespace MUST have a pointer to the shell itself.
314 self.user_ns[name] = self
314 self.user_ns[name] = self
315
315
316 # We need to insert into sys.modules something that looks like a
316 # We need to insert into sys.modules something that looks like a
317 # module but which accesses the IPython namespace, for shelve and
317 # module but which accesses the IPython namespace, for shelve and
318 # pickle to work interactively. Normally they rely on getting
318 # pickle to work interactively. Normally they rely on getting
319 # everything out of __main__, but for embedding purposes each IPython
319 # everything out of __main__, but for embedding purposes each IPython
320 # instance has its own private namespace, so we can't go shoving
320 # instance has its own private namespace, so we can't go shoving
321 # everything into __main__.
321 # everything into __main__.
322
322
323 # note, however, that we should only do this for non-embedded
323 # note, however, that we should only do this for non-embedded
324 # ipythons, which really mimic the __main__.__dict__ with their own
324 # ipythons, which really mimic the __main__.__dict__ with their own
325 # namespace. Embedded instances, on the other hand, should not do
325 # namespace. Embedded instances, on the other hand, should not do
326 # this because they need to manage the user local/global namespaces
326 # this because they need to manage the user local/global namespaces
327 # only, but they live within a 'normal' __main__ (meaning, they
327 # only, but they live within a 'normal' __main__ (meaning, they
328 # shouldn't overtake the execution environment of the script they're
328 # shouldn't overtake the execution environment of the script they're
329 # embedded in).
329 # embedded in).
330
330
331 if not embedded:
331 if not embedded:
332 try:
332 try:
333 main_name = self.user_ns['__name__']
333 main_name = self.user_ns['__name__']
334 except KeyError:
334 except KeyError:
335 raise KeyError,'user_ns dictionary MUST have a "__name__" key'
335 raise KeyError,'user_ns dictionary MUST have a "__name__" key'
336 else:
336 else:
337 #print "pickle hack in place" # dbg
337 #print "pickle hack in place" # dbg
338 #print 'main_name:',main_name # dbg
338 #print 'main_name:',main_name # dbg
339 sys.modules[main_name] = FakeModule(self.user_ns)
339 sys.modules[main_name] = FakeModule(self.user_ns)
340
340
341 # List of input with multi-line handling.
341 # List of input with multi-line handling.
342 # Fill its zero entry, user counter starts at 1
342 # Fill its zero entry, user counter starts at 1
343 self.input_hist = InputList(['\n'])
343 self.input_hist = InputList(['\n'])
344 # This one will hold the 'raw' input history, without any
344 # This one will hold the 'raw' input history, without any
345 # pre-processing. This will allow users to retrieve the input just as
345 # pre-processing. This will allow users to retrieve the input just as
346 # it was exactly typed in by the user, with %hist -r.
346 # it was exactly typed in by the user, with %hist -r.
347 self.input_hist_raw = InputList(['\n'])
347 self.input_hist_raw = InputList(['\n'])
348
348
349 # list of visited directories
349 # list of visited directories
350 try:
350 try:
351 self.dir_hist = [os.getcwd()]
351 self.dir_hist = [os.getcwd()]
352 except IOError, e:
352 except IOError, e:
353 self.dir_hist = []
353 self.dir_hist = []
354
354
355 # dict of output history
355 # dict of output history
356 self.output_hist = {}
356 self.output_hist = {}
357
357
358 # Get system encoding at startup time. Certain terminals (like Emacs
358 # Get system encoding at startup time. Certain terminals (like Emacs
359 # under Win32 have it set to None, and we need to have a known valid
359 # under Win32 have it set to None, and we need to have a known valid
360 # encoding to use in the raw_input() method
360 # encoding to use in the raw_input() method
361 self.stdin_encoding = sys.stdin.encoding or 'ascii'
361 self.stdin_encoding = sys.stdin.encoding or 'ascii'
362
362
363 # dict of things NOT to alias (keywords, builtins and some magics)
363 # dict of things NOT to alias (keywords, builtins and some magics)
364 no_alias = {}
364 no_alias = {}
365 no_alias_magics = ['cd','popd','pushd','dhist','alias','unalias']
365 no_alias_magics = ['cd','popd','pushd','dhist','alias','unalias']
366 for key in keyword.kwlist + no_alias_magics:
366 for key in keyword.kwlist + no_alias_magics:
367 no_alias[key] = 1
367 no_alias[key] = 1
368 no_alias.update(__builtin__.__dict__)
368 no_alias.update(__builtin__.__dict__)
369 self.no_alias = no_alias
369 self.no_alias = no_alias
370
370
371 # make global variables for user access to these
371 # make global variables for user access to these
372 self.user_ns['_ih'] = self.input_hist
372 self.user_ns['_ih'] = self.input_hist
373 self.user_ns['_oh'] = self.output_hist
373 self.user_ns['_oh'] = self.output_hist
374 self.user_ns['_dh'] = self.dir_hist
374 self.user_ns['_dh'] = self.dir_hist
375
375
376 # user aliases to input and output histories
376 # user aliases to input and output histories
377 self.user_ns['In'] = self.input_hist
377 self.user_ns['In'] = self.input_hist
378 self.user_ns['Out'] = self.output_hist
378 self.user_ns['Out'] = self.output_hist
379
379
380 # Object variable to store code object waiting execution. This is
380 # Object variable to store code object waiting execution. This is
381 # used mainly by the multithreaded shells, but it can come in handy in
381 # used mainly by the multithreaded shells, but it can come in handy in
382 # other situations. No need to use a Queue here, since it's a single
382 # other situations. No need to use a Queue here, since it's a single
383 # item which gets cleared once run.
383 # item which gets cleared once run.
384 self.code_to_run = None
384 self.code_to_run = None
385
385
386 # escapes for automatic behavior on the command line
386 # escapes for automatic behavior on the command line
387 self.ESC_SHELL = '!'
387 self.ESC_SHELL = '!'
388 self.ESC_HELP = '?'
388 self.ESC_HELP = '?'
389 self.ESC_MAGIC = '%'
389 self.ESC_MAGIC = '%'
390 self.ESC_QUOTE = ','
390 self.ESC_QUOTE = ','
391 self.ESC_QUOTE2 = ';'
391 self.ESC_QUOTE2 = ';'
392 self.ESC_PAREN = '/'
392 self.ESC_PAREN = '/'
393
393
394 # And their associated handlers
394 # And their associated handlers
395 self.esc_handlers = {self.ESC_PAREN : self.handle_auto,
395 self.esc_handlers = {self.ESC_PAREN : self.handle_auto,
396 self.ESC_QUOTE : self.handle_auto,
396 self.ESC_QUOTE : self.handle_auto,
397 self.ESC_QUOTE2 : self.handle_auto,
397 self.ESC_QUOTE2 : self.handle_auto,
398 self.ESC_MAGIC : self.handle_magic,
398 self.ESC_MAGIC : self.handle_magic,
399 self.ESC_HELP : self.handle_help,
399 self.ESC_HELP : self.handle_help,
400 self.ESC_SHELL : self.handle_shell_escape,
400 self.ESC_SHELL : self.handle_shell_escape,
401 }
401 }
402
402
403 # class initializations
403 # class initializations
404 Magic.__init__(self,self)
404 Magic.__init__(self,self)
405
405
406 # Python source parser/formatter for syntax highlighting
406 # Python source parser/formatter for syntax highlighting
407 pyformat = PyColorize.Parser().format
407 pyformat = PyColorize.Parser().format
408 self.pycolorize = lambda src: pyformat(src,'str',self.rc['colors'])
408 self.pycolorize = lambda src: pyformat(src,'str',self.rc['colors'])
409
409
410 # hooks holds pointers used for user-side customizations
410 # hooks holds pointers used for user-side customizations
411 self.hooks = Struct()
411 self.hooks = Struct()
412
412
413 self.strdispatchers = {}
413 self.strdispatchers = {}
414
414
415 # Set all default hooks, defined in the IPython.hooks module.
415 # Set all default hooks, defined in the IPython.hooks module.
416 hooks = IPython.hooks
416 hooks = IPython.hooks
417 for hook_name in hooks.__all__:
417 for hook_name in hooks.__all__:
418 # default hooks have priority 100, i.e. low; user hooks should have
418 # default hooks have priority 100, i.e. low; user hooks should have
419 # 0-100 priority
419 # 0-100 priority
420 self.set_hook(hook_name,getattr(hooks,hook_name), 100)
420 self.set_hook(hook_name,getattr(hooks,hook_name), 100)
421 #print "bound hook",hook_name
421 #print "bound hook",hook_name
422
422
423 # Flag to mark unconditional exit
423 # Flag to mark unconditional exit
424 self.exit_now = False
424 self.exit_now = False
425
425
426 self.usage_min = """\
426 self.usage_min = """\
427 An enhanced console for Python.
427 An enhanced console for Python.
428 Some of its features are:
428 Some of its features are:
429 - Readline support if the readline library is present.
429 - Readline support if the readline library is present.
430 - Tab completion in the local namespace.
430 - Tab completion in the local namespace.
431 - Logging of input, see command-line options.
431 - Logging of input, see command-line options.
432 - System shell escape via ! , eg !ls.
432 - System shell escape via ! , eg !ls.
433 - Magic commands, starting with a % (like %ls, %pwd, %cd, etc.)
433 - Magic commands, starting with a % (like %ls, %pwd, %cd, etc.)
434 - Keeps track of locally defined variables via %who, %whos.
434 - Keeps track of locally defined variables via %who, %whos.
435 - Show object information with a ? eg ?x or x? (use ?? for more info).
435 - Show object information with a ? eg ?x or x? (use ?? for more info).
436 """
436 """
437 if usage: self.usage = usage
437 if usage: self.usage = usage
438 else: self.usage = self.usage_min
438 else: self.usage = self.usage_min
439
439
440 # Storage
440 # Storage
441 self.rc = rc # This will hold all configuration information
441 self.rc = rc # This will hold all configuration information
442 self.pager = 'less'
442 self.pager = 'less'
443 # temporary files used for various purposes. Deleted at exit.
443 # temporary files used for various purposes. Deleted at exit.
444 self.tempfiles = []
444 self.tempfiles = []
445
445
446 # Keep track of readline usage (later set by init_readline)
446 # Keep track of readline usage (later set by init_readline)
447 self.has_readline = False
447 self.has_readline = False
448
448
449 # template for logfile headers. It gets resolved at runtime by the
449 # template for logfile headers. It gets resolved at runtime by the
450 # logstart method.
450 # logstart method.
451 self.loghead_tpl = \
451 self.loghead_tpl = \
452 """#log# Automatic Logger file. *** THIS MUST BE THE FIRST LINE ***
452 """#log# Automatic Logger file. *** THIS MUST BE THE FIRST LINE ***
453 #log# DO NOT CHANGE THIS LINE OR THE TWO BELOW
453 #log# DO NOT CHANGE THIS LINE OR THE TWO BELOW
454 #log# opts = %s
454 #log# opts = %s
455 #log# args = %s
455 #log# args = %s
456 #log# It is safe to make manual edits below here.
456 #log# It is safe to make manual edits below here.
457 #log#-----------------------------------------------------------------------
457 #log#-----------------------------------------------------------------------
458 """
458 """
459 # for pushd/popd management
459 # for pushd/popd management
460 try:
460 try:
461 self.home_dir = get_home_dir()
461 self.home_dir = get_home_dir()
462 except HomeDirError,msg:
462 except HomeDirError,msg:
463 fatal(msg)
463 fatal(msg)
464
464
465 self.dir_stack = [os.getcwd().replace(self.home_dir,'~')]
465 self.dir_stack = [os.getcwd().replace(self.home_dir,'~')]
466
466
467 # Functions to call the underlying shell.
467 # Functions to call the underlying shell.
468
468
469 # The first is similar to os.system, but it doesn't return a value,
469 # The first is similar to os.system, but it doesn't return a value,
470 # and it allows interpolation of variables in the user's namespace.
470 # and it allows interpolation of variables in the user's namespace.
471 self.system = lambda cmd: \
471 self.system = lambda cmd: \
472 shell(self.var_expand(cmd,depth=2),
472 shell(self.var_expand(cmd,depth=2),
473 header=self.rc.system_header,
473 header=self.rc.system_header,
474 verbose=self.rc.system_verbose)
474 verbose=self.rc.system_verbose)
475
475
476 # These are for getoutput and getoutputerror:
476 # These are for getoutput and getoutputerror:
477 self.getoutput = lambda cmd: \
477 self.getoutput = lambda cmd: \
478 getoutput(self.var_expand(cmd,depth=2),
478 getoutput(self.var_expand(cmd,depth=2),
479 header=self.rc.system_header,
479 header=self.rc.system_header,
480 verbose=self.rc.system_verbose)
480 verbose=self.rc.system_verbose)
481
481
482 self.getoutputerror = lambda cmd: \
482 self.getoutputerror = lambda cmd: \
483 getoutputerror(self.var_expand(cmd,depth=2),
483 getoutputerror(self.var_expand(cmd,depth=2),
484 header=self.rc.system_header,
484 header=self.rc.system_header,
485 verbose=self.rc.system_verbose)
485 verbose=self.rc.system_verbose)
486
486
487 # RegExp for splitting line contents into pre-char//first
487 # RegExp for splitting line contents into pre-char//first
488 # word-method//rest. For clarity, each group in on one line.
488 # word-method//rest. For clarity, each group in on one line.
489
489
490 # WARNING: update the regexp if the above escapes are changed, as they
490 # WARNING: update the regexp if the above escapes are changed, as they
491 # are hardwired in.
491 # are hardwired in.
492
492
493 # Don't get carried away with trying to make the autocalling catch too
493 # Don't get carried away with trying to make the autocalling catch too
494 # much: it's better to be conservative rather than to trigger hidden
494 # much: it's better to be conservative rather than to trigger hidden
495 # evals() somewhere and end up causing side effects.
495 # evals() somewhere and end up causing side effects.
496 self.line_split = re.compile(r'^(\s*[,;/]?\s*)'
496 self.line_split = re.compile(r'^(\s*[,;/]?\s*)'
497 r'([\?\w\.]+\w*\s*)'
497 r'([\?\w\.]+\w*\s*)'
498 r'(\(?.*$)')
498 r'(\(?.*$)')
499
499
500 self.shell_line_split = re.compile(r'^(\s*)'
500 self.shell_line_split = re.compile(r'^(\s*)'
501 r'(\S*\s*)'
501 r'(\S*\s*)'
502 r'(\(?.*$)')
502 r'(\(?.*$)')
503
503
504 # A simpler regexp used as a fallback if the above doesn't work. This
504 # A simpler regexp used as a fallback if the above doesn't work. This
505 # one is more conservative in how it partitions the input. This code
505 # one is more conservative in how it partitions the input. This code
506 # can probably be cleaned up to do everything with just one regexp, but
506 # can probably be cleaned up to do everything with just one regexp, but
507 # I'm afraid of breaking something; do it once the unit tests are in
507 # I'm afraid of breaking something; do it once the unit tests are in
508 # place.
508 # place.
509 self.line_split_fallback = re.compile(r'^(\s*)'
509 self.line_split_fallback = re.compile(r'^(\s*)'
510 r'([%\!\?\w\.]*)'
510 r'([%\!\?\w\.]*)'
511 r'(.*)')
511 r'(.*)')
512
512
513 # Original re, keep around for a while in case changes break something
513 # Original re, keep around for a while in case changes break something
514 #self.line_split = re.compile(r'(^[\s*!\?%,/]?)'
514 #self.line_split = re.compile(r'(^[\s*!\?%,/]?)'
515 # r'(\s*[\?\w\.]+\w*\s*)'
515 # r'(\s*[\?\w\.]+\w*\s*)'
516 # r'(\(?.*$)')
516 # r'(\(?.*$)')
517
517
518 # RegExp to identify potential function names
518 # RegExp to identify potential function names
519 self.re_fun_name = re.compile(r'[a-zA-Z_]([a-zA-Z0-9_.]*) *$')
519 self.re_fun_name = re.compile(r'[a-zA-Z_]([a-zA-Z0-9_.]*) *$')
520
520
521 # RegExp to exclude strings with this start from autocalling. In
521 # RegExp to exclude strings with this start from autocalling. In
522 # particular, all binary operators should be excluded, so that if foo
522 # particular, all binary operators should be excluded, so that if foo
523 # is callable, foo OP bar doesn't become foo(OP bar), which is
523 # is callable, foo OP bar doesn't become foo(OP bar), which is
524 # invalid. The characters '!=()' don't need to be checked for, as the
524 # invalid. The characters '!=()' don't need to be checked for, as the
525 # _prefilter routine explicitely does so, to catch direct calls and
525 # _prefilter routine explicitely does so, to catch direct calls and
526 # rebindings of existing names.
526 # rebindings of existing names.
527
527
528 # Warning: the '-' HAS TO BE AT THE END of the first group, otherwise
528 # Warning: the '-' HAS TO BE AT THE END of the first group, otherwise
529 # it affects the rest of the group in square brackets.
529 # it affects the rest of the group in square brackets.
530 self.re_exclude_auto = re.compile(r'^[<>,&^\|\*/\+-]'
530 self.re_exclude_auto = re.compile(r'^[<>,&^\|\*/\+-]'
531 '|^is |^not |^in |^and |^or ')
531 '|^is |^not |^in |^and |^or ')
532
532
533 # try to catch also methods for stuff in lists/tuples/dicts: off
533 # try to catch also methods for stuff in lists/tuples/dicts: off
534 # (experimental). For this to work, the line_split regexp would need
534 # (experimental). For this to work, the line_split regexp would need
535 # to be modified so it wouldn't break things at '['. That line is
535 # to be modified so it wouldn't break things at '['. That line is
536 # nasty enough that I shouldn't change it until I can test it _well_.
536 # nasty enough that I shouldn't change it until I can test it _well_.
537 #self.re_fun_name = re.compile (r'[a-zA-Z_]([a-zA-Z0-9_.\[\]]*) ?$')
537 #self.re_fun_name = re.compile (r'[a-zA-Z_]([a-zA-Z0-9_.\[\]]*) ?$')
538
538
539 # keep track of where we started running (mainly for crash post-mortem)
539 # keep track of where we started running (mainly for crash post-mortem)
540 self.starting_dir = os.getcwd()
540 self.starting_dir = os.getcwd()
541
541
542 # Various switches which can be set
542 # Various switches which can be set
543 self.CACHELENGTH = 5000 # this is cheap, it's just text
543 self.CACHELENGTH = 5000 # this is cheap, it's just text
544 self.BANNER = "Python %(version)s on %(platform)s\n" % sys.__dict__
544 self.BANNER = "Python %(version)s on %(platform)s\n" % sys.__dict__
545 self.banner2 = banner2
545 self.banner2 = banner2
546
546
547 # TraceBack handlers:
547 # TraceBack handlers:
548
548
549 # Syntax error handler.
549 # Syntax error handler.
550 self.SyntaxTB = SyntaxTB(color_scheme='NoColor')
550 self.SyntaxTB = SyntaxTB(color_scheme='NoColor')
551
551
552 # The interactive one is initialized with an offset, meaning we always
552 # The interactive one is initialized with an offset, meaning we always
553 # want to remove the topmost item in the traceback, which is our own
553 # want to remove the topmost item in the traceback, which is our own
554 # internal code. Valid modes: ['Plain','Context','Verbose']
554 # internal code. Valid modes: ['Plain','Context','Verbose']
555 self.InteractiveTB = ultraTB.AutoFormattedTB(mode = 'Plain',
555 self.InteractiveTB = ultraTB.AutoFormattedTB(mode = 'Plain',
556 color_scheme='NoColor',
556 color_scheme='NoColor',
557 tb_offset = 1)
557 tb_offset = 1)
558
558
559 # IPython itself shouldn't crash. This will produce a detailed
559 # IPython itself shouldn't crash. This will produce a detailed
560 # post-mortem if it does. But we only install the crash handler for
560 # post-mortem if it does. But we only install the crash handler for
561 # non-threaded shells, the threaded ones use a normal verbose reporter
561 # non-threaded shells, the threaded ones use a normal verbose reporter
562 # and lose the crash handler. This is because exceptions in the main
562 # and lose the crash handler. This is because exceptions in the main
563 # thread (such as in GUI code) propagate directly to sys.excepthook,
563 # thread (such as in GUI code) propagate directly to sys.excepthook,
564 # and there's no point in printing crash dumps for every user exception.
564 # and there's no point in printing crash dumps for every user exception.
565 if self.isthreaded:
565 if self.isthreaded:
566 ipCrashHandler = ultraTB.FormattedTB()
566 ipCrashHandler = ultraTB.FormattedTB()
567 else:
567 else:
568 from IPython import CrashHandler
568 from IPython import CrashHandler
569 ipCrashHandler = CrashHandler.IPythonCrashHandler(self)
569 ipCrashHandler = CrashHandler.IPythonCrashHandler(self)
570 self.set_crash_handler(ipCrashHandler)
570 self.set_crash_handler(ipCrashHandler)
571
571
572 # and add any custom exception handlers the user may have specified
572 # and add any custom exception handlers the user may have specified
573 self.set_custom_exc(*custom_exceptions)
573 self.set_custom_exc(*custom_exceptions)
574
574
575 # indentation management
575 # indentation management
576 self.autoindent = False
576 self.autoindent = False
577 self.indent_current_nsp = 0
577 self.indent_current_nsp = 0
578
578
579 # Make some aliases automatically
579 # Make some aliases automatically
580 # Prepare list of shell aliases to auto-define
580 # Prepare list of shell aliases to auto-define
581 if os.name == 'posix':
581 if os.name == 'posix':
582 auto_alias = ('mkdir mkdir', 'rmdir rmdir',
582 auto_alias = ('mkdir mkdir', 'rmdir rmdir',
583 'mv mv -i','rm rm -i','cp cp -i',
583 'mv mv -i','rm rm -i','cp cp -i',
584 'cat cat','less less','clear clear',
584 'cat cat','less less','clear clear',
585 # a better ls
585 # a better ls
586 'ls ls -F',
586 'ls ls -F',
587 # long ls
587 # long ls
588 'll ls -lF')
588 'll ls -lF')
589 # Extra ls aliases with color, which need special treatment on BSD
589 # Extra ls aliases with color, which need special treatment on BSD
590 # variants
590 # variants
591 ls_extra = ( # color ls
591 ls_extra = ( # color ls
592 'lc ls -F -o --color',
592 'lc ls -F -o --color',
593 # ls normal files only
593 # ls normal files only
594 'lf ls -F -o --color %l | grep ^-',
594 'lf ls -F -o --color %l | grep ^-',
595 # ls symbolic links
595 # ls symbolic links
596 'lk ls -F -o --color %l | grep ^l',
596 'lk ls -F -o --color %l | grep ^l',
597 # directories or links to directories,
597 # directories or links to directories,
598 'ldir ls -F -o --color %l | grep /$',
598 'ldir ls -F -o --color %l | grep /$',
599 # things which are executable
599 # things which are executable
600 'lx ls -F -o --color %l | grep ^-..x',
600 'lx ls -F -o --color %l | grep ^-..x',
601 )
601 )
602 # The BSDs don't ship GNU ls, so they don't understand the
602 # The BSDs don't ship GNU ls, so they don't understand the
603 # --color switch out of the box
603 # --color switch out of the box
604 if 'bsd' in sys.platform:
604 if 'bsd' in sys.platform:
605 ls_extra = ( # ls normal files only
605 ls_extra = ( # ls normal files only
606 'lf ls -lF | grep ^-',
606 'lf ls -lF | grep ^-',
607 # ls symbolic links
607 # ls symbolic links
608 'lk ls -lF | grep ^l',
608 'lk ls -lF | grep ^l',
609 # directories or links to directories,
609 # directories or links to directories,
610 'ldir ls -lF | grep /$',
610 'ldir ls -lF | grep /$',
611 # things which are executable
611 # things which are executable
612 'lx ls -lF | grep ^-..x',
612 'lx ls -lF | grep ^-..x',
613 )
613 )
614 auto_alias = auto_alias + ls_extra
614 auto_alias = auto_alias + ls_extra
615 elif os.name in ['nt','dos']:
615 elif os.name in ['nt','dos']:
616 auto_alias = ('dir dir /on', 'ls dir /on',
616 auto_alias = ('dir dir /on', 'ls dir /on',
617 'ddir dir /ad /on', 'ldir dir /ad /on',
617 'ddir dir /ad /on', 'ldir dir /ad /on',
618 'mkdir mkdir','rmdir rmdir','echo echo',
618 'mkdir mkdir','rmdir rmdir','echo echo',
619 'ren ren','cls cls','copy copy')
619 'ren ren','cls cls','copy copy')
620 else:
620 else:
621 auto_alias = ()
621 auto_alias = ()
622 self.auto_alias = [s.split(None,1) for s in auto_alias]
622 self.auto_alias = [s.split(None,1) for s in auto_alias]
623 # Call the actual (public) initializer
623 # Call the actual (public) initializer
624 self.init_auto_alias()
624 self.init_auto_alias()
625
625
626 # Produce a public API instance
626 # Produce a public API instance
627 self.api = IPython.ipapi.IPApi(self)
627 self.api = IPython.ipapi.IPApi(self)
628
628
629 # track which builtins we add, so we can clean up later
629 # track which builtins we add, so we can clean up later
630 self.builtins_added = {}
630 self.builtins_added = {}
631 # This method will add the necessary builtins for operation, but
631 # This method will add the necessary builtins for operation, but
632 # tracking what it did via the builtins_added dict.
632 # tracking what it did via the builtins_added dict.
633 self.add_builtins()
633 self.add_builtins()
634
634
635 # end __init__
635 # end __init__
636
636
637 def var_expand(self,cmd,depth=0):
637 def var_expand(self,cmd,depth=0):
638 """Expand python variables in a string.
638 """Expand python variables in a string.
639
639
640 The depth argument indicates how many frames above the caller should
640 The depth argument indicates how many frames above the caller should
641 be walked to look for the local namespace where to expand variables.
641 be walked to look for the local namespace where to expand variables.
642
642
643 The global namespace for expansion is always the user's interactive
643 The global namespace for expansion is always the user's interactive
644 namespace.
644 namespace.
645 """
645 """
646
646
647 return str(ItplNS(cmd.replace('#','\#'),
647 return str(ItplNS(cmd.replace('#','\#'),
648 self.user_ns, # globals
648 self.user_ns, # globals
649 # Skip our own frame in searching for locals:
649 # Skip our own frame in searching for locals:
650 sys._getframe(depth+1).f_locals # locals
650 sys._getframe(depth+1).f_locals # locals
651 ))
651 ))
652
652
653 def pre_config_initialization(self):
653 def pre_config_initialization(self):
654 """Pre-configuration init method
654 """Pre-configuration init method
655
655
656 This is called before the configuration files are processed to
656 This is called before the configuration files are processed to
657 prepare the services the config files might need.
657 prepare the services the config files might need.
658
658
659 self.rc already has reasonable default values at this point.
659 self.rc already has reasonable default values at this point.
660 """
660 """
661 rc = self.rc
661 rc = self.rc
662
662 try:
663 self.db = pickleshare.PickleShareDB(rc.ipythondir + "/db")
663 self.db = pickleshare.PickleShareDB(rc.ipythondir + "/db")
664 except exceptions.UnicodeDecodeError:
665 print "Your ipythondir can't be decoded to unicode!"
666 print "Please set HOME environment variable to something that"
667 print r"only has ASCII characters, e.g. c:\home"
668 print "Now it is",rc.ipythondir
669 sys.exit()
670
664
671
665 def post_config_initialization(self):
672 def post_config_initialization(self):
666 """Post configuration init method
673 """Post configuration init method
667
674
668 This is called after the configuration files have been processed to
675 This is called after the configuration files have been processed to
669 'finalize' the initialization."""
676 'finalize' the initialization."""
670
677
671 rc = self.rc
678 rc = self.rc
672
679
673 # Object inspector
680 # Object inspector
674 self.inspector = OInspect.Inspector(OInspect.InspectColors,
681 self.inspector = OInspect.Inspector(OInspect.InspectColors,
675 PyColorize.ANSICodeColors,
682 PyColorize.ANSICodeColors,
676 'NoColor',
683 'NoColor',
677 rc.object_info_string_level)
684 rc.object_info_string_level)
678
685
679 # Load readline proper
686 # Load readline proper
680 if rc.readline:
687 if rc.readline:
681 self.init_readline()
688 self.init_readline()
682
689
683 # local shortcut, this is used a LOT
690 # local shortcut, this is used a LOT
684 self.log = self.logger.log
691 self.log = self.logger.log
685
692
686 # Initialize cache, set in/out prompts and printing system
693 # Initialize cache, set in/out prompts and printing system
687 self.outputcache = CachedOutput(self,
694 self.outputcache = CachedOutput(self,
688 rc.cache_size,
695 rc.cache_size,
689 rc.pprint,
696 rc.pprint,
690 input_sep = rc.separate_in,
697 input_sep = rc.separate_in,
691 output_sep = rc.separate_out,
698 output_sep = rc.separate_out,
692 output_sep2 = rc.separate_out2,
699 output_sep2 = rc.separate_out2,
693 ps1 = rc.prompt_in1,
700 ps1 = rc.prompt_in1,
694 ps2 = rc.prompt_in2,
701 ps2 = rc.prompt_in2,
695 ps_out = rc.prompt_out,
702 ps_out = rc.prompt_out,
696 pad_left = rc.prompts_pad_left)
703 pad_left = rc.prompts_pad_left)
697
704
698 # user may have over-ridden the default print hook:
705 # user may have over-ridden the default print hook:
699 try:
706 try:
700 self.outputcache.__class__.display = self.hooks.display
707 self.outputcache.__class__.display = self.hooks.display
701 except AttributeError:
708 except AttributeError:
702 pass
709 pass
703
710
704 # I don't like assigning globally to sys, because it means when
711 # I don't like assigning globally to sys, because it means when
705 # embedding instances, each embedded instance overrides the previous
712 # embedding instances, each embedded instance overrides the previous
706 # choice. But sys.displayhook seems to be called internally by exec,
713 # choice. But sys.displayhook seems to be called internally by exec,
707 # so I don't see a way around it. We first save the original and then
714 # so I don't see a way around it. We first save the original and then
708 # overwrite it.
715 # overwrite it.
709 self.sys_displayhook = sys.displayhook
716 self.sys_displayhook = sys.displayhook
710 sys.displayhook = self.outputcache
717 sys.displayhook = self.outputcache
711
718
712 # Set user colors (don't do it in the constructor above so that it
719 # Set user colors (don't do it in the constructor above so that it
713 # doesn't crash if colors option is invalid)
720 # doesn't crash if colors option is invalid)
714 self.magic_colors(rc.colors)
721 self.magic_colors(rc.colors)
715
722
716 # Set calling of pdb on exceptions
723 # Set calling of pdb on exceptions
717 self.call_pdb = rc.pdb
724 self.call_pdb = rc.pdb
718
725
719 # Load user aliases
726 # Load user aliases
720 for alias in rc.alias:
727 for alias in rc.alias:
721 self.magic_alias(alias)
728 self.magic_alias(alias)
722 self.hooks.late_startup_hook()
729 self.hooks.late_startup_hook()
723
730
724 batchrun = False
731 batchrun = False
725 for batchfile in [path(arg) for arg in self.rc.args
732 for batchfile in [path(arg) for arg in self.rc.args
726 if arg.lower().endswith('.ipy')]:
733 if arg.lower().endswith('.ipy')]:
727 if not batchfile.isfile():
734 if not batchfile.isfile():
728 print "No such batch file:", batchfile
735 print "No such batch file:", batchfile
729 continue
736 continue
730 self.api.runlines(batchfile.text())
737 self.api.runlines(batchfile.text())
731 batchrun = True
738 batchrun = True
732 if batchrun:
739 if batchrun:
733 self.exit_now = True
740 self.exit_now = True
734
741
735 def add_builtins(self):
742 def add_builtins(self):
736 """Store ipython references into the builtin namespace.
743 """Store ipython references into the builtin namespace.
737
744
738 Some parts of ipython operate via builtins injected here, which hold a
745 Some parts of ipython operate via builtins injected here, which hold a
739 reference to IPython itself."""
746 reference to IPython itself."""
740
747
741 # TODO: deprecate all except _ip; 'jobs' should be installed
748 # TODO: deprecate all except _ip; 'jobs' should be installed
742 # by an extension and the rest are under _ip, ipalias is redundant
749 # by an extension and the rest are under _ip, ipalias is redundant
743 builtins_new = dict(__IPYTHON__ = self,
750 builtins_new = dict(__IPYTHON__ = self,
744 ip_set_hook = self.set_hook,
751 ip_set_hook = self.set_hook,
745 jobs = self.jobs,
752 jobs = self.jobs,
746 ipmagic = wrap_deprecated(self.ipmagic,'_ip.magic()'),
753 ipmagic = wrap_deprecated(self.ipmagic,'_ip.magic()'),
747 ipalias = wrap_deprecated(self.ipalias),
754 ipalias = wrap_deprecated(self.ipalias),
748 ipsystem = wrap_deprecated(self.ipsystem,'_ip.system()'),
755 ipsystem = wrap_deprecated(self.ipsystem,'_ip.system()'),
749 _ip = self.api
756 _ip = self.api
750 )
757 )
751 for biname,bival in builtins_new.items():
758 for biname,bival in builtins_new.items():
752 try:
759 try:
753 # store the orignal value so we can restore it
760 # store the orignal value so we can restore it
754 self.builtins_added[biname] = __builtin__.__dict__[biname]
761 self.builtins_added[biname] = __builtin__.__dict__[biname]
755 except KeyError:
762 except KeyError:
756 # or mark that it wasn't defined, and we'll just delete it at
763 # or mark that it wasn't defined, and we'll just delete it at
757 # cleanup
764 # cleanup
758 self.builtins_added[biname] = Undefined
765 self.builtins_added[biname] = Undefined
759 __builtin__.__dict__[biname] = bival
766 __builtin__.__dict__[biname] = bival
760
767
761 # Keep in the builtins a flag for when IPython is active. We set it
768 # Keep in the builtins a flag for when IPython is active. We set it
762 # with setdefault so that multiple nested IPythons don't clobber one
769 # with setdefault so that multiple nested IPythons don't clobber one
763 # another. Each will increase its value by one upon being activated,
770 # another. Each will increase its value by one upon being activated,
764 # which also gives us a way to determine the nesting level.
771 # which also gives us a way to determine the nesting level.
765 __builtin__.__dict__.setdefault('__IPYTHON__active',0)
772 __builtin__.__dict__.setdefault('__IPYTHON__active',0)
766
773
767 def clean_builtins(self):
774 def clean_builtins(self):
768 """Remove any builtins which might have been added by add_builtins, or
775 """Remove any builtins which might have been added by add_builtins, or
769 restore overwritten ones to their previous values."""
776 restore overwritten ones to their previous values."""
770 for biname,bival in self.builtins_added.items():
777 for biname,bival in self.builtins_added.items():
771 if bival is Undefined:
778 if bival is Undefined:
772 del __builtin__.__dict__[biname]
779 del __builtin__.__dict__[biname]
773 else:
780 else:
774 __builtin__.__dict__[biname] = bival
781 __builtin__.__dict__[biname] = bival
775 self.builtins_added.clear()
782 self.builtins_added.clear()
776
783
777 def set_hook(self,name,hook, priority = 50, str_key = None, re_key = None):
784 def set_hook(self,name,hook, priority = 50, str_key = None, re_key = None):
778 """set_hook(name,hook) -> sets an internal IPython hook.
785 """set_hook(name,hook) -> sets an internal IPython hook.
779
786
780 IPython exposes some of its internal API as user-modifiable hooks. By
787 IPython exposes some of its internal API as user-modifiable hooks. By
781 adding your function to one of these hooks, you can modify IPython's
788 adding your function to one of these hooks, you can modify IPython's
782 behavior to call at runtime your own routines."""
789 behavior to call at runtime your own routines."""
783
790
784 # At some point in the future, this should validate the hook before it
791 # At some point in the future, this should validate the hook before it
785 # accepts it. Probably at least check that the hook takes the number
792 # accepts it. Probably at least check that the hook takes the number
786 # of args it's supposed to.
793 # of args it's supposed to.
787
794
788 f = new.instancemethod(hook,self,self.__class__)
795 f = new.instancemethod(hook,self,self.__class__)
789
796
790 # check if the hook is for strdispatcher first
797 # check if the hook is for strdispatcher first
791 if str_key is not None:
798 if str_key is not None:
792 sdp = self.strdispatchers.get(name, StrDispatch())
799 sdp = self.strdispatchers.get(name, StrDispatch())
793 sdp.add_s(str_key, f, priority )
800 sdp.add_s(str_key, f, priority )
794 self.strdispatchers[name] = sdp
801 self.strdispatchers[name] = sdp
795 return
802 return
796 if re_key is not None:
803 if re_key is not None:
797 sdp = self.strdispatchers.get(name, StrDispatch())
804 sdp = self.strdispatchers.get(name, StrDispatch())
798 sdp.add_re(re.compile(re_key), f, priority )
805 sdp.add_re(re.compile(re_key), f, priority )
799 self.strdispatchers[name] = sdp
806 self.strdispatchers[name] = sdp
800 return
807 return
801
808
802 dp = getattr(self.hooks, name, None)
809 dp = getattr(self.hooks, name, None)
803 if name not in IPython.hooks.__all__:
810 if name not in IPython.hooks.__all__:
804 print "Warning! Hook '%s' is not one of %s" % (name, IPython.hooks.__all__ )
811 print "Warning! Hook '%s' is not one of %s" % (name, IPython.hooks.__all__ )
805 if not dp:
812 if not dp:
806 dp = IPython.hooks.CommandChainDispatcher()
813 dp = IPython.hooks.CommandChainDispatcher()
807
814
808 try:
815 try:
809 dp.add(f,priority)
816 dp.add(f,priority)
810 except AttributeError:
817 except AttributeError:
811 # it was not commandchain, plain old func - replace
818 # it was not commandchain, plain old func - replace
812 dp = f
819 dp = f
813
820
814 setattr(self.hooks,name, dp)
821 setattr(self.hooks,name, dp)
815
822
816
823
817 #setattr(self.hooks,name,new.instancemethod(hook,self,self.__class__))
824 #setattr(self.hooks,name,new.instancemethod(hook,self,self.__class__))
818
825
819 def set_crash_handler(self,crashHandler):
826 def set_crash_handler(self,crashHandler):
820 """Set the IPython crash handler.
827 """Set the IPython crash handler.
821
828
822 This must be a callable with a signature suitable for use as
829 This must be a callable with a signature suitable for use as
823 sys.excepthook."""
830 sys.excepthook."""
824
831
825 # Install the given crash handler as the Python exception hook
832 # Install the given crash handler as the Python exception hook
826 sys.excepthook = crashHandler
833 sys.excepthook = crashHandler
827
834
828 # The instance will store a pointer to this, so that runtime code
835 # The instance will store a pointer to this, so that runtime code
829 # (such as magics) can access it. This is because during the
836 # (such as magics) can access it. This is because during the
830 # read-eval loop, it gets temporarily overwritten (to deal with GUI
837 # read-eval loop, it gets temporarily overwritten (to deal with GUI
831 # frameworks).
838 # frameworks).
832 self.sys_excepthook = sys.excepthook
839 self.sys_excepthook = sys.excepthook
833
840
834
841
835 def set_custom_exc(self,exc_tuple,handler):
842 def set_custom_exc(self,exc_tuple,handler):
836 """set_custom_exc(exc_tuple,handler)
843 """set_custom_exc(exc_tuple,handler)
837
844
838 Set a custom exception handler, which will be called if any of the
845 Set a custom exception handler, which will be called if any of the
839 exceptions in exc_tuple occur in the mainloop (specifically, in the
846 exceptions in exc_tuple occur in the mainloop (specifically, in the
840 runcode() method.
847 runcode() method.
841
848
842 Inputs:
849 Inputs:
843
850
844 - exc_tuple: a *tuple* of valid exceptions to call the defined
851 - exc_tuple: a *tuple* of valid exceptions to call the defined
845 handler for. It is very important that you use a tuple, and NOT A
852 handler for. It is very important that you use a tuple, and NOT A
846 LIST here, because of the way Python's except statement works. If
853 LIST here, because of the way Python's except statement works. If
847 you only want to trap a single exception, use a singleton tuple:
854 you only want to trap a single exception, use a singleton tuple:
848
855
849 exc_tuple == (MyCustomException,)
856 exc_tuple == (MyCustomException,)
850
857
851 - handler: this must be defined as a function with the following
858 - handler: this must be defined as a function with the following
852 basic interface: def my_handler(self,etype,value,tb).
859 basic interface: def my_handler(self,etype,value,tb).
853
860
854 This will be made into an instance method (via new.instancemethod)
861 This will be made into an instance method (via new.instancemethod)
855 of IPython itself, and it will be called if any of the exceptions
862 of IPython itself, and it will be called if any of the exceptions
856 listed in the exc_tuple are caught. If the handler is None, an
863 listed in the exc_tuple are caught. If the handler is None, an
857 internal basic one is used, which just prints basic info.
864 internal basic one is used, which just prints basic info.
858
865
859 WARNING: by putting in your own exception handler into IPython's main
866 WARNING: by putting in your own exception handler into IPython's main
860 execution loop, you run a very good chance of nasty crashes. This
867 execution loop, you run a very good chance of nasty crashes. This
861 facility should only be used if you really know what you are doing."""
868 facility should only be used if you really know what you are doing."""
862
869
863 assert type(exc_tuple)==type(()) , \
870 assert type(exc_tuple)==type(()) , \
864 "The custom exceptions must be given AS A TUPLE."
871 "The custom exceptions must be given AS A TUPLE."
865
872
866 def dummy_handler(self,etype,value,tb):
873 def dummy_handler(self,etype,value,tb):
867 print '*** Simple custom exception handler ***'
874 print '*** Simple custom exception handler ***'
868 print 'Exception type :',etype
875 print 'Exception type :',etype
869 print 'Exception value:',value
876 print 'Exception value:',value
870 print 'Traceback :',tb
877 print 'Traceback :',tb
871 print 'Source code :','\n'.join(self.buffer)
878 print 'Source code :','\n'.join(self.buffer)
872
879
873 if handler is None: handler = dummy_handler
880 if handler is None: handler = dummy_handler
874
881
875 self.CustomTB = new.instancemethod(handler,self,self.__class__)
882 self.CustomTB = new.instancemethod(handler,self,self.__class__)
876 self.custom_exceptions = exc_tuple
883 self.custom_exceptions = exc_tuple
877
884
878 def set_custom_completer(self,completer,pos=0):
885 def set_custom_completer(self,completer,pos=0):
879 """set_custom_completer(completer,pos=0)
886 """set_custom_completer(completer,pos=0)
880
887
881 Adds a new custom completer function.
888 Adds a new custom completer function.
882
889
883 The position argument (defaults to 0) is the index in the completers
890 The position argument (defaults to 0) is the index in the completers
884 list where you want the completer to be inserted."""
891 list where you want the completer to be inserted."""
885
892
886 newcomp = new.instancemethod(completer,self.Completer,
893 newcomp = new.instancemethod(completer,self.Completer,
887 self.Completer.__class__)
894 self.Completer.__class__)
888 self.Completer.matchers.insert(pos,newcomp)
895 self.Completer.matchers.insert(pos,newcomp)
889
896
890 def set_completer(self):
897 def set_completer(self):
891 """reset readline's completer to be our own."""
898 """reset readline's completer to be our own."""
892 self.readline.set_completer(self.Completer.complete)
899 self.readline.set_completer(self.Completer.complete)
893
900
894 def _get_call_pdb(self):
901 def _get_call_pdb(self):
895 return self._call_pdb
902 return self._call_pdb
896
903
897 def _set_call_pdb(self,val):
904 def _set_call_pdb(self,val):
898
905
899 if val not in (0,1,False,True):
906 if val not in (0,1,False,True):
900 raise ValueError,'new call_pdb value must be boolean'
907 raise ValueError,'new call_pdb value must be boolean'
901
908
902 # store value in instance
909 # store value in instance
903 self._call_pdb = val
910 self._call_pdb = val
904
911
905 # notify the actual exception handlers
912 # notify the actual exception handlers
906 self.InteractiveTB.call_pdb = val
913 self.InteractiveTB.call_pdb = val
907 if self.isthreaded:
914 if self.isthreaded:
908 try:
915 try:
909 self.sys_excepthook.call_pdb = val
916 self.sys_excepthook.call_pdb = val
910 except:
917 except:
911 warn('Failed to activate pdb for threaded exception handler')
918 warn('Failed to activate pdb for threaded exception handler')
912
919
913 call_pdb = property(_get_call_pdb,_set_call_pdb,None,
920 call_pdb = property(_get_call_pdb,_set_call_pdb,None,
914 'Control auto-activation of pdb at exceptions')
921 'Control auto-activation of pdb at exceptions')
915
922
916
923
917 # These special functions get installed in the builtin namespace, to
924 # These special functions get installed in the builtin namespace, to
918 # provide programmatic (pure python) access to magics, aliases and system
925 # provide programmatic (pure python) access to magics, aliases and system
919 # calls. This is important for logging, user scripting, and more.
926 # calls. This is important for logging, user scripting, and more.
920
927
921 # We are basically exposing, via normal python functions, the three
928 # We are basically exposing, via normal python functions, the three
922 # mechanisms in which ipython offers special call modes (magics for
929 # mechanisms in which ipython offers special call modes (magics for
923 # internal control, aliases for direct system access via pre-selected
930 # internal control, aliases for direct system access via pre-selected
924 # names, and !cmd for calling arbitrary system commands).
931 # names, and !cmd for calling arbitrary system commands).
925
932
926 def ipmagic(self,arg_s):
933 def ipmagic(self,arg_s):
927 """Call a magic function by name.
934 """Call a magic function by name.
928
935
929 Input: a string containing the name of the magic function to call and any
936 Input: a string containing the name of the magic function to call and any
930 additional arguments to be passed to the magic.
937 additional arguments to be passed to the magic.
931
938
932 ipmagic('name -opt foo bar') is equivalent to typing at the ipython
939 ipmagic('name -opt foo bar') is equivalent to typing at the ipython
933 prompt:
940 prompt:
934
941
935 In[1]: %name -opt foo bar
942 In[1]: %name -opt foo bar
936
943
937 To call a magic without arguments, simply use ipmagic('name').
944 To call a magic without arguments, simply use ipmagic('name').
938
945
939 This provides a proper Python function to call IPython's magics in any
946 This provides a proper Python function to call IPython's magics in any
940 valid Python code you can type at the interpreter, including loops and
947 valid Python code you can type at the interpreter, including loops and
941 compound statements. It is added by IPython to the Python builtin
948 compound statements. It is added by IPython to the Python builtin
942 namespace upon initialization."""
949 namespace upon initialization."""
943
950
944 args = arg_s.split(' ',1)
951 args = arg_s.split(' ',1)
945 magic_name = args[0]
952 magic_name = args[0]
946 magic_name = magic_name.lstrip(self.ESC_MAGIC)
953 magic_name = magic_name.lstrip(self.ESC_MAGIC)
947
954
948 try:
955 try:
949 magic_args = args[1]
956 magic_args = args[1]
950 except IndexError:
957 except IndexError:
951 magic_args = ''
958 magic_args = ''
952 fn = getattr(self,'magic_'+magic_name,None)
959 fn = getattr(self,'magic_'+magic_name,None)
953 if fn is None:
960 if fn is None:
954 error("Magic function `%s` not found." % magic_name)
961 error("Magic function `%s` not found." % magic_name)
955 else:
962 else:
956 magic_args = self.var_expand(magic_args,1)
963 magic_args = self.var_expand(magic_args,1)
957 return fn(magic_args)
964 return fn(magic_args)
958
965
959 def ipalias(self,arg_s):
966 def ipalias(self,arg_s):
960 """Call an alias by name.
967 """Call an alias by name.
961
968
962 Input: a string containing the name of the alias to call and any
969 Input: a string containing the name of the alias to call and any
963 additional arguments to be passed to the magic.
970 additional arguments to be passed to the magic.
964
971
965 ipalias('name -opt foo bar') is equivalent to typing at the ipython
972 ipalias('name -opt foo bar') is equivalent to typing at the ipython
966 prompt:
973 prompt:
967
974
968 In[1]: name -opt foo bar
975 In[1]: name -opt foo bar
969
976
970 To call an alias without arguments, simply use ipalias('name').
977 To call an alias without arguments, simply use ipalias('name').
971
978
972 This provides a proper Python function to call IPython's aliases in any
979 This provides a proper Python function to call IPython's aliases in any
973 valid Python code you can type at the interpreter, including loops and
980 valid Python code you can type at the interpreter, including loops and
974 compound statements. It is added by IPython to the Python builtin
981 compound statements. It is added by IPython to the Python builtin
975 namespace upon initialization."""
982 namespace upon initialization."""
976
983
977 args = arg_s.split(' ',1)
984 args = arg_s.split(' ',1)
978 alias_name = args[0]
985 alias_name = args[0]
979 try:
986 try:
980 alias_args = args[1]
987 alias_args = args[1]
981 except IndexError:
988 except IndexError:
982 alias_args = ''
989 alias_args = ''
983 if alias_name in self.alias_table:
990 if alias_name in self.alias_table:
984 self.call_alias(alias_name,alias_args)
991 self.call_alias(alias_name,alias_args)
985 else:
992 else:
986 error("Alias `%s` not found." % alias_name)
993 error("Alias `%s` not found." % alias_name)
987
994
988 def ipsystem(self,arg_s):
995 def ipsystem(self,arg_s):
989 """Make a system call, using IPython."""
996 """Make a system call, using IPython."""
990
997
991 self.system(arg_s)
998 self.system(arg_s)
992
999
993 def complete(self,text):
1000 def complete(self,text):
994 """Return a sorted list of all possible completions on text.
1001 """Return a sorted list of all possible completions on text.
995
1002
996 Inputs:
1003 Inputs:
997
1004
998 - text: a string of text to be completed on.
1005 - text: a string of text to be completed on.
999
1006
1000 This is a wrapper around the completion mechanism, similar to what
1007 This is a wrapper around the completion mechanism, similar to what
1001 readline does at the command line when the TAB key is hit. By
1008 readline does at the command line when the TAB key is hit. By
1002 exposing it as a method, it can be used by other non-readline
1009 exposing it as a method, it can be used by other non-readline
1003 environments (such as GUIs) for text completion.
1010 environments (such as GUIs) for text completion.
1004
1011
1005 Simple usage example:
1012 Simple usage example:
1006
1013
1007 In [1]: x = 'hello'
1014 In [1]: x = 'hello'
1008
1015
1009 In [2]: __IP.complete('x.l')
1016 In [2]: __IP.complete('x.l')
1010 Out[2]: ['x.ljust', 'x.lower', 'x.lstrip']"""
1017 Out[2]: ['x.ljust', 'x.lower', 'x.lstrip']"""
1011
1018
1012 complete = self.Completer.complete
1019 complete = self.Completer.complete
1013 state = 0
1020 state = 0
1014 # use a dict so we get unique keys, since ipyhton's multiple
1021 # use a dict so we get unique keys, since ipyhton's multiple
1015 # completers can return duplicates. When we make 2.4 a requirement,
1022 # completers can return duplicates. When we make 2.4 a requirement,
1016 # start using sets instead, which are faster.
1023 # start using sets instead, which are faster.
1017 comps = {}
1024 comps = {}
1018 while True:
1025 while True:
1019 newcomp = complete(text,state,line_buffer=text)
1026 newcomp = complete(text,state,line_buffer=text)
1020 if newcomp is None:
1027 if newcomp is None:
1021 break
1028 break
1022 comps[newcomp] = 1
1029 comps[newcomp] = 1
1023 state += 1
1030 state += 1
1024 outcomps = comps.keys()
1031 outcomps = comps.keys()
1025 outcomps.sort()
1032 outcomps.sort()
1026 return outcomps
1033 return outcomps
1027
1034
1028 def set_completer_frame(self, frame=None):
1035 def set_completer_frame(self, frame=None):
1029 if frame:
1036 if frame:
1030 self.Completer.namespace = frame.f_locals
1037 self.Completer.namespace = frame.f_locals
1031 self.Completer.global_namespace = frame.f_globals
1038 self.Completer.global_namespace = frame.f_globals
1032 else:
1039 else:
1033 self.Completer.namespace = self.user_ns
1040 self.Completer.namespace = self.user_ns
1034 self.Completer.global_namespace = self.user_global_ns
1041 self.Completer.global_namespace = self.user_global_ns
1035
1042
1036 def init_auto_alias(self):
1043 def init_auto_alias(self):
1037 """Define some aliases automatically.
1044 """Define some aliases automatically.
1038
1045
1039 These are ALL parameter-less aliases"""
1046 These are ALL parameter-less aliases"""
1040
1047
1041 for alias,cmd in self.auto_alias:
1048 for alias,cmd in self.auto_alias:
1042 self.alias_table[alias] = (0,cmd)
1049 self.alias_table[alias] = (0,cmd)
1043
1050
1044 def alias_table_validate(self,verbose=0):
1051 def alias_table_validate(self,verbose=0):
1045 """Update information about the alias table.
1052 """Update information about the alias table.
1046
1053
1047 In particular, make sure no Python keywords/builtins are in it."""
1054 In particular, make sure no Python keywords/builtins are in it."""
1048
1055
1049 no_alias = self.no_alias
1056 no_alias = self.no_alias
1050 for k in self.alias_table.keys():
1057 for k in self.alias_table.keys():
1051 if k in no_alias:
1058 if k in no_alias:
1052 del self.alias_table[k]
1059 del self.alias_table[k]
1053 if verbose:
1060 if verbose:
1054 print ("Deleting alias <%s>, it's a Python "
1061 print ("Deleting alias <%s>, it's a Python "
1055 "keyword or builtin." % k)
1062 "keyword or builtin." % k)
1056
1063
1057 def set_autoindent(self,value=None):
1064 def set_autoindent(self,value=None):
1058 """Set the autoindent flag, checking for readline support.
1065 """Set the autoindent flag, checking for readline support.
1059
1066
1060 If called with no arguments, it acts as a toggle."""
1067 If called with no arguments, it acts as a toggle."""
1061
1068
1062 if not self.has_readline:
1069 if not self.has_readline:
1063 if os.name == 'posix':
1070 if os.name == 'posix':
1064 warn("The auto-indent feature requires the readline library")
1071 warn("The auto-indent feature requires the readline library")
1065 self.autoindent = 0
1072 self.autoindent = 0
1066 return
1073 return
1067 if value is None:
1074 if value is None:
1068 self.autoindent = not self.autoindent
1075 self.autoindent = not self.autoindent
1069 else:
1076 else:
1070 self.autoindent = value
1077 self.autoindent = value
1071
1078
1072 def rc_set_toggle(self,rc_field,value=None):
1079 def rc_set_toggle(self,rc_field,value=None):
1073 """Set or toggle a field in IPython's rc config. structure.
1080 """Set or toggle a field in IPython's rc config. structure.
1074
1081
1075 If called with no arguments, it acts as a toggle.
1082 If called with no arguments, it acts as a toggle.
1076
1083
1077 If called with a non-existent field, the resulting AttributeError
1084 If called with a non-existent field, the resulting AttributeError
1078 exception will propagate out."""
1085 exception will propagate out."""
1079
1086
1080 rc_val = getattr(self.rc,rc_field)
1087 rc_val = getattr(self.rc,rc_field)
1081 if value is None:
1088 if value is None:
1082 value = not rc_val
1089 value = not rc_val
1083 setattr(self.rc,rc_field,value)
1090 setattr(self.rc,rc_field,value)
1084
1091
1085 def user_setup(self,ipythondir,rc_suffix,mode='install'):
1092 def user_setup(self,ipythondir,rc_suffix,mode='install'):
1086 """Install the user configuration directory.
1093 """Install the user configuration directory.
1087
1094
1088 Can be called when running for the first time or to upgrade the user's
1095 Can be called when running for the first time or to upgrade the user's
1089 .ipython/ directory with the mode parameter. Valid modes are 'install'
1096 .ipython/ directory with the mode parameter. Valid modes are 'install'
1090 and 'upgrade'."""
1097 and 'upgrade'."""
1091
1098
1092 def wait():
1099 def wait():
1093 try:
1100 try:
1094 raw_input("Please press <RETURN> to start IPython.")
1101 raw_input("Please press <RETURN> to start IPython.")
1095 except EOFError:
1102 except EOFError:
1096 print >> Term.cout
1103 print >> Term.cout
1097 print '*'*70
1104 print '*'*70
1098
1105
1099 cwd = os.getcwd() # remember where we started
1106 cwd = os.getcwd() # remember where we started
1100 glb = glob.glob
1107 glb = glob.glob
1101 print '*'*70
1108 print '*'*70
1102 if mode == 'install':
1109 if mode == 'install':
1103 print \
1110 print \
1104 """Welcome to IPython. I will try to create a personal configuration directory
1111 """Welcome to IPython. I will try to create a personal configuration directory
1105 where you can customize many aspects of IPython's functionality in:\n"""
1112 where you can customize many aspects of IPython's functionality in:\n"""
1106 else:
1113 else:
1107 print 'I am going to upgrade your configuration in:'
1114 print 'I am going to upgrade your configuration in:'
1108
1115
1109 print ipythondir
1116 print ipythondir
1110
1117
1111 rcdirend = os.path.join('IPython','UserConfig')
1118 rcdirend = os.path.join('IPython','UserConfig')
1112 cfg = lambda d: os.path.join(d,rcdirend)
1119 cfg = lambda d: os.path.join(d,rcdirend)
1113 try:
1120 try:
1114 rcdir = filter(os.path.isdir,map(cfg,sys.path))[0]
1121 rcdir = filter(os.path.isdir,map(cfg,sys.path))[0]
1115 except IOError:
1122 except IOError:
1116 warning = """
1123 warning = """
1117 Installation error. IPython's directory was not found.
1124 Installation error. IPython's directory was not found.
1118
1125
1119 Check the following:
1126 Check the following:
1120
1127
1121 The ipython/IPython directory should be in a directory belonging to your
1128 The ipython/IPython directory should be in a directory belonging to your
1122 PYTHONPATH environment variable (that is, it should be in a directory
1129 PYTHONPATH environment variable (that is, it should be in a directory
1123 belonging to sys.path). You can copy it explicitly there or just link to it.
1130 belonging to sys.path). You can copy it explicitly there or just link to it.
1124
1131
1125 IPython will proceed with builtin defaults.
1132 IPython will proceed with builtin defaults.
1126 """
1133 """
1127 warn(warning)
1134 warn(warning)
1128 wait()
1135 wait()
1129 return
1136 return
1130
1137
1131 if mode == 'install':
1138 if mode == 'install':
1132 try:
1139 try:
1133 shutil.copytree(rcdir,ipythondir)
1140 shutil.copytree(rcdir,ipythondir)
1134 os.chdir(ipythondir)
1141 os.chdir(ipythondir)
1135 rc_files = glb("ipythonrc*")
1142 rc_files = glb("ipythonrc*")
1136 for rc_file in rc_files:
1143 for rc_file in rc_files:
1137 os.rename(rc_file,rc_file+rc_suffix)
1144 os.rename(rc_file,rc_file+rc_suffix)
1138 except:
1145 except:
1139 warning = """
1146 warning = """
1140
1147
1141 There was a problem with the installation:
1148 There was a problem with the installation:
1142 %s
1149 %s
1143 Try to correct it or contact the developers if you think it's a bug.
1150 Try to correct it or contact the developers if you think it's a bug.
1144 IPython will proceed with builtin defaults.""" % sys.exc_info()[1]
1151 IPython will proceed with builtin defaults.""" % sys.exc_info()[1]
1145 warn(warning)
1152 warn(warning)
1146 wait()
1153 wait()
1147 return
1154 return
1148
1155
1149 elif mode == 'upgrade':
1156 elif mode == 'upgrade':
1150 try:
1157 try:
1151 os.chdir(ipythondir)
1158 os.chdir(ipythondir)
1152 except:
1159 except:
1153 print """
1160 print """
1154 Can not upgrade: changing to directory %s failed. Details:
1161 Can not upgrade: changing to directory %s failed. Details:
1155 %s
1162 %s
1156 """ % (ipythondir,sys.exc_info()[1])
1163 """ % (ipythondir,sys.exc_info()[1])
1157 wait()
1164 wait()
1158 return
1165 return
1159 else:
1166 else:
1160 sources = glb(os.path.join(rcdir,'[A-Za-z]*'))
1167 sources = glb(os.path.join(rcdir,'[A-Za-z]*'))
1161 for new_full_path in sources:
1168 for new_full_path in sources:
1162 new_filename = os.path.basename(new_full_path)
1169 new_filename = os.path.basename(new_full_path)
1163 if new_filename.startswith('ipythonrc'):
1170 if new_filename.startswith('ipythonrc'):
1164 new_filename = new_filename + rc_suffix
1171 new_filename = new_filename + rc_suffix
1165 # The config directory should only contain files, skip any
1172 # The config directory should only contain files, skip any
1166 # directories which may be there (like CVS)
1173 # directories which may be there (like CVS)
1167 if os.path.isdir(new_full_path):
1174 if os.path.isdir(new_full_path):
1168 continue
1175 continue
1169 if os.path.exists(new_filename):
1176 if os.path.exists(new_filename):
1170 old_file = new_filename+'.old'
1177 old_file = new_filename+'.old'
1171 if os.path.exists(old_file):
1178 if os.path.exists(old_file):
1172 os.remove(old_file)
1179 os.remove(old_file)
1173 os.rename(new_filename,old_file)
1180 os.rename(new_filename,old_file)
1174 shutil.copy(new_full_path,new_filename)
1181 shutil.copy(new_full_path,new_filename)
1175 else:
1182 else:
1176 raise ValueError,'unrecognized mode for install:',`mode`
1183 raise ValueError,'unrecognized mode for install:',`mode`
1177
1184
1178 # Fix line-endings to those native to each platform in the config
1185 # Fix line-endings to those native to each platform in the config
1179 # directory.
1186 # directory.
1180 try:
1187 try:
1181 os.chdir(ipythondir)
1188 os.chdir(ipythondir)
1182 except:
1189 except:
1183 print """
1190 print """
1184 Problem: changing to directory %s failed.
1191 Problem: changing to directory %s failed.
1185 Details:
1192 Details:
1186 %s
1193 %s
1187
1194
1188 Some configuration files may have incorrect line endings. This should not
1195 Some configuration files may have incorrect line endings. This should not
1189 cause any problems during execution. """ % (ipythondir,sys.exc_info()[1])
1196 cause any problems during execution. """ % (ipythondir,sys.exc_info()[1])
1190 wait()
1197 wait()
1191 else:
1198 else:
1192 for fname in glb('ipythonrc*'):
1199 for fname in glb('ipythonrc*'):
1193 try:
1200 try:
1194 native_line_ends(fname,backup=0)
1201 native_line_ends(fname,backup=0)
1195 except IOError:
1202 except IOError:
1196 pass
1203 pass
1197
1204
1198 if mode == 'install':
1205 if mode == 'install':
1199 print """
1206 print """
1200 Successful installation!
1207 Successful installation!
1201
1208
1202 Please read the sections 'Initial Configuration' and 'Quick Tips' in the
1209 Please read the sections 'Initial Configuration' and 'Quick Tips' in the
1203 IPython manual (there are both HTML and PDF versions supplied with the
1210 IPython manual (there are both HTML and PDF versions supplied with the
1204 distribution) to make sure that your system environment is properly configured
1211 distribution) to make sure that your system environment is properly configured
1205 to take advantage of IPython's features.
1212 to take advantage of IPython's features.
1206
1213
1207 Important note: the configuration system has changed! The old system is
1214 Important note: the configuration system has changed! The old system is
1208 still in place, but its setting may be partly overridden by the settings in
1215 still in place, but its setting may be partly overridden by the settings in
1209 "~/.ipython/ipy_user_conf.py" config file. Please take a look at the file
1216 "~/.ipython/ipy_user_conf.py" config file. Please take a look at the file
1210 if some of the new settings bother you.
1217 if some of the new settings bother you.
1211
1218
1212 """
1219 """
1213 else:
1220 else:
1214 print """
1221 print """
1215 Successful upgrade!
1222 Successful upgrade!
1216
1223
1217 All files in your directory:
1224 All files in your directory:
1218 %(ipythondir)s
1225 %(ipythondir)s
1219 which would have been overwritten by the upgrade were backed up with a .old
1226 which would have been overwritten by the upgrade were backed up with a .old
1220 extension. If you had made particular customizations in those files you may
1227 extension. If you had made particular customizations in those files you may
1221 want to merge them back into the new files.""" % locals()
1228 want to merge them back into the new files.""" % locals()
1222 wait()
1229 wait()
1223 os.chdir(cwd)
1230 os.chdir(cwd)
1224 # end user_setup()
1231 # end user_setup()
1225
1232
1226 def atexit_operations(self):
1233 def atexit_operations(self):
1227 """This will be executed at the time of exit.
1234 """This will be executed at the time of exit.
1228
1235
1229 Saving of persistent data should be performed here. """
1236 Saving of persistent data should be performed here. """
1230
1237
1231 #print '*** IPython exit cleanup ***' # dbg
1238 #print '*** IPython exit cleanup ***' # dbg
1232 # input history
1239 # input history
1233 self.savehist()
1240 self.savehist()
1234
1241
1235 # Cleanup all tempfiles left around
1242 # Cleanup all tempfiles left around
1236 for tfile in self.tempfiles:
1243 for tfile in self.tempfiles:
1237 try:
1244 try:
1238 os.unlink(tfile)
1245 os.unlink(tfile)
1239 except OSError:
1246 except OSError:
1240 pass
1247 pass
1241
1248
1242 # save the "persistent data" catch-all dictionary
1249 # save the "persistent data" catch-all dictionary
1243 self.hooks.shutdown_hook()
1250 self.hooks.shutdown_hook()
1244
1251
1245 def savehist(self):
1252 def savehist(self):
1246 """Save input history to a file (via readline library)."""
1253 """Save input history to a file (via readline library)."""
1247 try:
1254 try:
1248 self.readline.write_history_file(self.histfile)
1255 self.readline.write_history_file(self.histfile)
1249 except:
1256 except:
1250 print 'Unable to save IPython command history to file: ' + \
1257 print 'Unable to save IPython command history to file: ' + \
1251 `self.histfile`
1258 `self.histfile`
1252
1259
1253 def reloadhist(self):
1260 def reloadhist(self):
1254 """Reload the input history from disk file."""
1261 """Reload the input history from disk file."""
1255
1262
1256 if self.has_readline:
1263 if self.has_readline:
1257 self.readline.clear_history()
1264 self.readline.clear_history()
1258 self.readline.read_history_file(self.shell.histfile)
1265 self.readline.read_history_file(self.shell.histfile)
1259
1266
1260 def history_saving_wrapper(self, func):
1267 def history_saving_wrapper(self, func):
1261 """ Wrap func for readline history saving
1268 """ Wrap func for readline history saving
1262
1269
1263 Convert func into callable that saves & restores
1270 Convert func into callable that saves & restores
1264 history around the call """
1271 history around the call """
1265
1272
1266 if not self.has_readline:
1273 if not self.has_readline:
1267 return func
1274 return func
1268
1275
1269 def wrapper():
1276 def wrapper():
1270 self.savehist()
1277 self.savehist()
1271 try:
1278 try:
1272 func()
1279 func()
1273 finally:
1280 finally:
1274 readline.read_history_file(self.histfile)
1281 readline.read_history_file(self.histfile)
1275 return wrapper
1282 return wrapper
1276
1283
1277
1284
1278 def pre_readline(self):
1285 def pre_readline(self):
1279 """readline hook to be used at the start of each line.
1286 """readline hook to be used at the start of each line.
1280
1287
1281 Currently it handles auto-indent only."""
1288 Currently it handles auto-indent only."""
1282
1289
1283 #debugx('self.indent_current_nsp','pre_readline:')
1290 #debugx('self.indent_current_nsp','pre_readline:')
1284 self.readline.insert_text(self.indent_current_str())
1291 self.readline.insert_text(self.indent_current_str())
1285
1292
1286 def init_readline(self):
1293 def init_readline(self):
1287 """Command history completion/saving/reloading."""
1294 """Command history completion/saving/reloading."""
1288
1295
1289 import IPython.rlineimpl as readline
1296 import IPython.rlineimpl as readline
1290 if not readline.have_readline:
1297 if not readline.have_readline:
1291 self.has_readline = 0
1298 self.has_readline = 0
1292 self.readline = None
1299 self.readline = None
1293 # no point in bugging windows users with this every time:
1300 # no point in bugging windows users with this every time:
1294 warn('Readline services not available on this platform.')
1301 warn('Readline services not available on this platform.')
1295 else:
1302 else:
1296 sys.modules['readline'] = readline
1303 sys.modules['readline'] = readline
1297 import atexit
1304 import atexit
1298 from IPython.completer import IPCompleter
1305 from IPython.completer import IPCompleter
1299 self.Completer = IPCompleter(self,
1306 self.Completer = IPCompleter(self,
1300 self.user_ns,
1307 self.user_ns,
1301 self.user_global_ns,
1308 self.user_global_ns,
1302 self.rc.readline_omit__names,
1309 self.rc.readline_omit__names,
1303 self.alias_table)
1310 self.alias_table)
1304 sdisp = self.strdispatchers.get('complete_command', StrDispatch())
1311 sdisp = self.strdispatchers.get('complete_command', StrDispatch())
1305 self.strdispatchers['complete_command'] = sdisp
1312 self.strdispatchers['complete_command'] = sdisp
1306 self.Completer.custom_completers = sdisp
1313 self.Completer.custom_completers = sdisp
1307 # Platform-specific configuration
1314 # Platform-specific configuration
1308 if os.name == 'nt':
1315 if os.name == 'nt':
1309 self.readline_startup_hook = readline.set_pre_input_hook
1316 self.readline_startup_hook = readline.set_pre_input_hook
1310 else:
1317 else:
1311 self.readline_startup_hook = readline.set_startup_hook
1318 self.readline_startup_hook = readline.set_startup_hook
1312
1319
1313 # Load user's initrc file (readline config)
1320 # Load user's initrc file (readline config)
1314 inputrc_name = os.environ.get('INPUTRC')
1321 inputrc_name = os.environ.get('INPUTRC')
1315 if inputrc_name is None:
1322 if inputrc_name is None:
1316 home_dir = get_home_dir()
1323 home_dir = get_home_dir()
1317 if home_dir is not None:
1324 if home_dir is not None:
1318 inputrc_name = os.path.join(home_dir,'.inputrc')
1325 inputrc_name = os.path.join(home_dir,'.inputrc')
1319 if os.path.isfile(inputrc_name):
1326 if os.path.isfile(inputrc_name):
1320 try:
1327 try:
1321 readline.read_init_file(inputrc_name)
1328 readline.read_init_file(inputrc_name)
1322 except:
1329 except:
1323 warn('Problems reading readline initialization file <%s>'
1330 warn('Problems reading readline initialization file <%s>'
1324 % inputrc_name)
1331 % inputrc_name)
1325
1332
1326 self.has_readline = 1
1333 self.has_readline = 1
1327 self.readline = readline
1334 self.readline = readline
1328 # save this in sys so embedded copies can restore it properly
1335 # save this in sys so embedded copies can restore it properly
1329 sys.ipcompleter = self.Completer.complete
1336 sys.ipcompleter = self.Completer.complete
1330 self.set_completer()
1337 self.set_completer()
1331
1338
1332 # Configure readline according to user's prefs
1339 # Configure readline according to user's prefs
1333 for rlcommand in self.rc.readline_parse_and_bind:
1340 for rlcommand in self.rc.readline_parse_and_bind:
1334 readline.parse_and_bind(rlcommand)
1341 readline.parse_and_bind(rlcommand)
1335
1342
1336 # remove some chars from the delimiters list
1343 # remove some chars from the delimiters list
1337 delims = readline.get_completer_delims()
1344 delims = readline.get_completer_delims()
1338 delims = delims.translate(string._idmap,
1345 delims = delims.translate(string._idmap,
1339 self.rc.readline_remove_delims)
1346 self.rc.readline_remove_delims)
1340 readline.set_completer_delims(delims)
1347 readline.set_completer_delims(delims)
1341 # otherwise we end up with a monster history after a while:
1348 # otherwise we end up with a monster history after a while:
1342 readline.set_history_length(1000)
1349 readline.set_history_length(1000)
1343 try:
1350 try:
1344 #print '*** Reading readline history' # dbg
1351 #print '*** Reading readline history' # dbg
1345 readline.read_history_file(self.histfile)
1352 readline.read_history_file(self.histfile)
1346 except IOError:
1353 except IOError:
1347 pass # It doesn't exist yet.
1354 pass # It doesn't exist yet.
1348
1355
1349 atexit.register(self.atexit_operations)
1356 atexit.register(self.atexit_operations)
1350 del atexit
1357 del atexit
1351
1358
1352 # Configure auto-indent for all platforms
1359 # Configure auto-indent for all platforms
1353 self.set_autoindent(self.rc.autoindent)
1360 self.set_autoindent(self.rc.autoindent)
1354
1361
1355 def ask_yes_no(self,prompt,default=True):
1362 def ask_yes_no(self,prompt,default=True):
1356 if self.rc.quiet:
1363 if self.rc.quiet:
1357 return True
1364 return True
1358 return ask_yes_no(prompt,default)
1365 return ask_yes_no(prompt,default)
1359
1366
1360 def _should_recompile(self,e):
1367 def _should_recompile(self,e):
1361 """Utility routine for edit_syntax_error"""
1368 """Utility routine for edit_syntax_error"""
1362
1369
1363 if e.filename in ('<ipython console>','<input>','<string>',
1370 if e.filename in ('<ipython console>','<input>','<string>',
1364 '<console>','<BackgroundJob compilation>',
1371 '<console>','<BackgroundJob compilation>',
1365 None):
1372 None):
1366
1373
1367 return False
1374 return False
1368 try:
1375 try:
1369 if (self.rc.autoedit_syntax and
1376 if (self.rc.autoedit_syntax and
1370 not self.ask_yes_no('Return to editor to correct syntax error? '
1377 not self.ask_yes_no('Return to editor to correct syntax error? '
1371 '[Y/n] ','y')):
1378 '[Y/n] ','y')):
1372 return False
1379 return False
1373 except EOFError:
1380 except EOFError:
1374 return False
1381 return False
1375
1382
1376 def int0(x):
1383 def int0(x):
1377 try:
1384 try:
1378 return int(x)
1385 return int(x)
1379 except TypeError:
1386 except TypeError:
1380 return 0
1387 return 0
1381 # always pass integer line and offset values to editor hook
1388 # always pass integer line and offset values to editor hook
1382 self.hooks.fix_error_editor(e.filename,
1389 self.hooks.fix_error_editor(e.filename,
1383 int0(e.lineno),int0(e.offset),e.msg)
1390 int0(e.lineno),int0(e.offset),e.msg)
1384 return True
1391 return True
1385
1392
1386 def edit_syntax_error(self):
1393 def edit_syntax_error(self):
1387 """The bottom half of the syntax error handler called in the main loop.
1394 """The bottom half of the syntax error handler called in the main loop.
1388
1395
1389 Loop until syntax error is fixed or user cancels.
1396 Loop until syntax error is fixed or user cancels.
1390 """
1397 """
1391
1398
1392 while self.SyntaxTB.last_syntax_error:
1399 while self.SyntaxTB.last_syntax_error:
1393 # copy and clear last_syntax_error
1400 # copy and clear last_syntax_error
1394 err = self.SyntaxTB.clear_err_state()
1401 err = self.SyntaxTB.clear_err_state()
1395 if not self._should_recompile(err):
1402 if not self._should_recompile(err):
1396 return
1403 return
1397 try:
1404 try:
1398 # may set last_syntax_error again if a SyntaxError is raised
1405 # may set last_syntax_error again if a SyntaxError is raised
1399 self.safe_execfile(err.filename,self.user_ns)
1406 self.safe_execfile(err.filename,self.user_ns)
1400 except:
1407 except:
1401 self.showtraceback()
1408 self.showtraceback()
1402 else:
1409 else:
1403 try:
1410 try:
1404 f = file(err.filename)
1411 f = file(err.filename)
1405 try:
1412 try:
1406 sys.displayhook(f.read())
1413 sys.displayhook(f.read())
1407 finally:
1414 finally:
1408 f.close()
1415 f.close()
1409 except:
1416 except:
1410 self.showtraceback()
1417 self.showtraceback()
1411
1418
1412 def showsyntaxerror(self, filename=None):
1419 def showsyntaxerror(self, filename=None):
1413 """Display the syntax error that just occurred.
1420 """Display the syntax error that just occurred.
1414
1421
1415 This doesn't display a stack trace because there isn't one.
1422 This doesn't display a stack trace because there isn't one.
1416
1423
1417 If a filename is given, it is stuffed in the exception instead
1424 If a filename is given, it is stuffed in the exception instead
1418 of what was there before (because Python's parser always uses
1425 of what was there before (because Python's parser always uses
1419 "<string>" when reading from a string).
1426 "<string>" when reading from a string).
1420 """
1427 """
1421 etype, value, last_traceback = sys.exc_info()
1428 etype, value, last_traceback = sys.exc_info()
1422
1429
1423 # See note about these variables in showtraceback() below
1430 # See note about these variables in showtraceback() below
1424 sys.last_type = etype
1431 sys.last_type = etype
1425 sys.last_value = value
1432 sys.last_value = value
1426 sys.last_traceback = last_traceback
1433 sys.last_traceback = last_traceback
1427
1434
1428 if filename and etype is SyntaxError:
1435 if filename and etype is SyntaxError:
1429 # Work hard to stuff the correct filename in the exception
1436 # Work hard to stuff the correct filename in the exception
1430 try:
1437 try:
1431 msg, (dummy_filename, lineno, offset, line) = value
1438 msg, (dummy_filename, lineno, offset, line) = value
1432 except:
1439 except:
1433 # Not the format we expect; leave it alone
1440 # Not the format we expect; leave it alone
1434 pass
1441 pass
1435 else:
1442 else:
1436 # Stuff in the right filename
1443 # Stuff in the right filename
1437 try:
1444 try:
1438 # Assume SyntaxError is a class exception
1445 # Assume SyntaxError is a class exception
1439 value = SyntaxError(msg, (filename, lineno, offset, line))
1446 value = SyntaxError(msg, (filename, lineno, offset, line))
1440 except:
1447 except:
1441 # If that failed, assume SyntaxError is a string
1448 # If that failed, assume SyntaxError is a string
1442 value = msg, (filename, lineno, offset, line)
1449 value = msg, (filename, lineno, offset, line)
1443 self.SyntaxTB(etype,value,[])
1450 self.SyntaxTB(etype,value,[])
1444
1451
1445 def debugger(self,force=False):
1452 def debugger(self,force=False):
1446 """Call the pydb/pdb debugger.
1453 """Call the pydb/pdb debugger.
1447
1454
1448 Keywords:
1455 Keywords:
1449
1456
1450 - force(False): by default, this routine checks the instance call_pdb
1457 - force(False): by default, this routine checks the instance call_pdb
1451 flag and does not actually invoke the debugger if the flag is false.
1458 flag and does not actually invoke the debugger if the flag is false.
1452 The 'force' option forces the debugger to activate even if the flag
1459 The 'force' option forces the debugger to activate even if the flag
1453 is false.
1460 is false.
1454 """
1461 """
1455
1462
1456 if not (force or self.call_pdb):
1463 if not (force or self.call_pdb):
1457 return
1464 return
1458
1465
1459 if not hasattr(sys,'last_traceback'):
1466 if not hasattr(sys,'last_traceback'):
1460 error('No traceback has been produced, nothing to debug.')
1467 error('No traceback has been produced, nothing to debug.')
1461 return
1468 return
1462
1469
1463 # use pydb if available
1470 # use pydb if available
1464 if Debugger.has_pydb:
1471 if Debugger.has_pydb:
1465 from pydb import pm
1472 from pydb import pm
1466 else:
1473 else:
1467 # fallback to our internal debugger
1474 # fallback to our internal debugger
1468 pm = lambda : self.InteractiveTB.debugger(force=True)
1475 pm = lambda : self.InteractiveTB.debugger(force=True)
1469 self.history_saving_wrapper(pm)()
1476 self.history_saving_wrapper(pm)()
1470
1477
1471 def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None):
1478 def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None):
1472 """Display the exception that just occurred.
1479 """Display the exception that just occurred.
1473
1480
1474 If nothing is known about the exception, this is the method which
1481 If nothing is known about the exception, this is the method which
1475 should be used throughout the code for presenting user tracebacks,
1482 should be used throughout the code for presenting user tracebacks,
1476 rather than directly invoking the InteractiveTB object.
1483 rather than directly invoking the InteractiveTB object.
1477
1484
1478 A specific showsyntaxerror() also exists, but this method can take
1485 A specific showsyntaxerror() also exists, but this method can take
1479 care of calling it if needed, so unless you are explicitly catching a
1486 care of calling it if needed, so unless you are explicitly catching a
1480 SyntaxError exception, don't try to analyze the stack manually and
1487 SyntaxError exception, don't try to analyze the stack manually and
1481 simply call this method."""
1488 simply call this method."""
1482
1489
1483
1490
1484 # Though this won't be called by syntax errors in the input line,
1491 # Though this won't be called by syntax errors in the input line,
1485 # there may be SyntaxError cases whith imported code.
1492 # there may be SyntaxError cases whith imported code.
1486
1493
1487
1494
1488 if exc_tuple is None:
1495 if exc_tuple is None:
1489 etype, value, tb = sys.exc_info()
1496 etype, value, tb = sys.exc_info()
1490 else:
1497 else:
1491 etype, value, tb = exc_tuple
1498 etype, value, tb = exc_tuple
1492
1499
1493 if etype is SyntaxError:
1500 if etype is SyntaxError:
1494 self.showsyntaxerror(filename)
1501 self.showsyntaxerror(filename)
1495 else:
1502 else:
1496 # WARNING: these variables are somewhat deprecated and not
1503 # WARNING: these variables are somewhat deprecated and not
1497 # necessarily safe to use in a threaded environment, but tools
1504 # necessarily safe to use in a threaded environment, but tools
1498 # like pdb depend on their existence, so let's set them. If we
1505 # like pdb depend on their existence, so let's set them. If we
1499 # find problems in the field, we'll need to revisit their use.
1506 # find problems in the field, we'll need to revisit their use.
1500 sys.last_type = etype
1507 sys.last_type = etype
1501 sys.last_value = value
1508 sys.last_value = value
1502 sys.last_traceback = tb
1509 sys.last_traceback = tb
1503
1510
1504 if etype in self.custom_exceptions:
1511 if etype in self.custom_exceptions:
1505 self.CustomTB(etype,value,tb)
1512 self.CustomTB(etype,value,tb)
1506 else:
1513 else:
1507 self.InteractiveTB(etype,value,tb,tb_offset=tb_offset)
1514 self.InteractiveTB(etype,value,tb,tb_offset=tb_offset)
1508 if self.InteractiveTB.call_pdb and self.has_readline:
1515 if self.InteractiveTB.call_pdb and self.has_readline:
1509 # pdb mucks up readline, fix it back
1516 # pdb mucks up readline, fix it back
1510 self.set_completer()
1517 self.set_completer()
1511
1518
1512
1519
1513 def mainloop(self,banner=None):
1520 def mainloop(self,banner=None):
1514 """Creates the local namespace and starts the mainloop.
1521 """Creates the local namespace and starts the mainloop.
1515
1522
1516 If an optional banner argument is given, it will override the
1523 If an optional banner argument is given, it will override the
1517 internally created default banner."""
1524 internally created default banner."""
1518
1525
1519 if self.rc.c: # Emulate Python's -c option
1526 if self.rc.c: # Emulate Python's -c option
1520 self.exec_init_cmd()
1527 self.exec_init_cmd()
1521 if banner is None:
1528 if banner is None:
1522 if not self.rc.banner:
1529 if not self.rc.banner:
1523 banner = ''
1530 banner = ''
1524 # banner is string? Use it directly!
1531 # banner is string? Use it directly!
1525 elif isinstance(self.rc.banner,basestring):
1532 elif isinstance(self.rc.banner,basestring):
1526 banner = self.rc.banner
1533 banner = self.rc.banner
1527 else:
1534 else:
1528 banner = self.BANNER+self.banner2
1535 banner = self.BANNER+self.banner2
1529
1536
1530 self.interact(banner)
1537 self.interact(banner)
1531
1538
1532 def exec_init_cmd(self):
1539 def exec_init_cmd(self):
1533 """Execute a command given at the command line.
1540 """Execute a command given at the command line.
1534
1541
1535 This emulates Python's -c option."""
1542 This emulates Python's -c option."""
1536
1543
1537 #sys.argv = ['-c']
1544 #sys.argv = ['-c']
1538 self.push(self.rc.c)
1545 self.push(self.rc.c)
1539
1546
1540 def embed_mainloop(self,header='',local_ns=None,global_ns=None,stack_depth=0):
1547 def embed_mainloop(self,header='',local_ns=None,global_ns=None,stack_depth=0):
1541 """Embeds IPython into a running python program.
1548 """Embeds IPython into a running python program.
1542
1549
1543 Input:
1550 Input:
1544
1551
1545 - header: An optional header message can be specified.
1552 - header: An optional header message can be specified.
1546
1553
1547 - local_ns, global_ns: working namespaces. If given as None, the
1554 - local_ns, global_ns: working namespaces. If given as None, the
1548 IPython-initialized one is updated with __main__.__dict__, so that
1555 IPython-initialized one is updated with __main__.__dict__, so that
1549 program variables become visible but user-specific configuration
1556 program variables become visible but user-specific configuration
1550 remains possible.
1557 remains possible.
1551
1558
1552 - stack_depth: specifies how many levels in the stack to go to
1559 - stack_depth: specifies how many levels in the stack to go to
1553 looking for namespaces (when local_ns and global_ns are None). This
1560 looking for namespaces (when local_ns and global_ns are None). This
1554 allows an intermediate caller to make sure that this function gets
1561 allows an intermediate caller to make sure that this function gets
1555 the namespace from the intended level in the stack. By default (0)
1562 the namespace from the intended level in the stack. By default (0)
1556 it will get its locals and globals from the immediate caller.
1563 it will get its locals and globals from the immediate caller.
1557
1564
1558 Warning: it's possible to use this in a program which is being run by
1565 Warning: it's possible to use this in a program which is being run by
1559 IPython itself (via %run), but some funny things will happen (a few
1566 IPython itself (via %run), but some funny things will happen (a few
1560 globals get overwritten). In the future this will be cleaned up, as
1567 globals get overwritten). In the future this will be cleaned up, as
1561 there is no fundamental reason why it can't work perfectly."""
1568 there is no fundamental reason why it can't work perfectly."""
1562
1569
1563 # Get locals and globals from caller
1570 # Get locals and globals from caller
1564 if local_ns is None or global_ns is None:
1571 if local_ns is None or global_ns is None:
1565 call_frame = sys._getframe(stack_depth).f_back
1572 call_frame = sys._getframe(stack_depth).f_back
1566
1573
1567 if local_ns is None:
1574 if local_ns is None:
1568 local_ns = call_frame.f_locals
1575 local_ns = call_frame.f_locals
1569 if global_ns is None:
1576 if global_ns is None:
1570 global_ns = call_frame.f_globals
1577 global_ns = call_frame.f_globals
1571
1578
1572 # Update namespaces and fire up interpreter
1579 # Update namespaces and fire up interpreter
1573
1580
1574 # The global one is easy, we can just throw it in
1581 # The global one is easy, we can just throw it in
1575 self.user_global_ns = global_ns
1582 self.user_global_ns = global_ns
1576
1583
1577 # but the user/local one is tricky: ipython needs it to store internal
1584 # but the user/local one is tricky: ipython needs it to store internal
1578 # data, but we also need the locals. We'll copy locals in the user
1585 # data, but we also need the locals. We'll copy locals in the user
1579 # one, but will track what got copied so we can delete them at exit.
1586 # one, but will track what got copied so we can delete them at exit.
1580 # This is so that a later embedded call doesn't see locals from a
1587 # This is so that a later embedded call doesn't see locals from a
1581 # previous call (which most likely existed in a separate scope).
1588 # previous call (which most likely existed in a separate scope).
1582 local_varnames = local_ns.keys()
1589 local_varnames = local_ns.keys()
1583 self.user_ns.update(local_ns)
1590 self.user_ns.update(local_ns)
1584
1591
1585 # Patch for global embedding to make sure that things don't overwrite
1592 # Patch for global embedding to make sure that things don't overwrite
1586 # user globals accidentally. Thanks to Richard <rxe@renre-europe.com>
1593 # user globals accidentally. Thanks to Richard <rxe@renre-europe.com>
1587 # FIXME. Test this a bit more carefully (the if.. is new)
1594 # FIXME. Test this a bit more carefully (the if.. is new)
1588 if local_ns is None and global_ns is None:
1595 if local_ns is None and global_ns is None:
1589 self.user_global_ns.update(__main__.__dict__)
1596 self.user_global_ns.update(__main__.__dict__)
1590
1597
1591 # make sure the tab-completer has the correct frame information, so it
1598 # make sure the tab-completer has the correct frame information, so it
1592 # actually completes using the frame's locals/globals
1599 # actually completes using the frame's locals/globals
1593 self.set_completer_frame()
1600 self.set_completer_frame()
1594
1601
1595 # before activating the interactive mode, we need to make sure that
1602 # before activating the interactive mode, we need to make sure that
1596 # all names in the builtin namespace needed by ipython point to
1603 # all names in the builtin namespace needed by ipython point to
1597 # ourselves, and not to other instances.
1604 # ourselves, and not to other instances.
1598 self.add_builtins()
1605 self.add_builtins()
1599
1606
1600 self.interact(header)
1607 self.interact(header)
1601
1608
1602 # now, purge out the user namespace from anything we might have added
1609 # now, purge out the user namespace from anything we might have added
1603 # from the caller's local namespace
1610 # from the caller's local namespace
1604 delvar = self.user_ns.pop
1611 delvar = self.user_ns.pop
1605 for var in local_varnames:
1612 for var in local_varnames:
1606 delvar(var,None)
1613 delvar(var,None)
1607 # and clean builtins we may have overridden
1614 # and clean builtins we may have overridden
1608 self.clean_builtins()
1615 self.clean_builtins()
1609
1616
1610 def interact(self, banner=None):
1617 def interact(self, banner=None):
1611 """Closely emulate the interactive Python console.
1618 """Closely emulate the interactive Python console.
1612
1619
1613 The optional banner argument specify the banner to print
1620 The optional banner argument specify the banner to print
1614 before the first interaction; by default it prints a banner
1621 before the first interaction; by default it prints a banner
1615 similar to the one printed by the real Python interpreter,
1622 similar to the one printed by the real Python interpreter,
1616 followed by the current class name in parentheses (so as not
1623 followed by the current class name in parentheses (so as not
1617 to confuse this with the real interpreter -- since it's so
1624 to confuse this with the real interpreter -- since it's so
1618 close!).
1625 close!).
1619
1626
1620 """
1627 """
1621
1628
1622 if self.exit_now:
1629 if self.exit_now:
1623 # batch run -> do not interact
1630 # batch run -> do not interact
1624 return
1631 return
1625 cprt = 'Type "copyright", "credits" or "license" for more information.'
1632 cprt = 'Type "copyright", "credits" or "license" for more information.'
1626 if banner is None:
1633 if banner is None:
1627 self.write("Python %s on %s\n%s\n(%s)\n" %
1634 self.write("Python %s on %s\n%s\n(%s)\n" %
1628 (sys.version, sys.platform, cprt,
1635 (sys.version, sys.platform, cprt,
1629 self.__class__.__name__))
1636 self.__class__.__name__))
1630 else:
1637 else:
1631 self.write(banner)
1638 self.write(banner)
1632
1639
1633 more = 0
1640 more = 0
1634
1641
1635 # Mark activity in the builtins
1642 # Mark activity in the builtins
1636 __builtin__.__dict__['__IPYTHON__active'] += 1
1643 __builtin__.__dict__['__IPYTHON__active'] += 1
1637
1644
1638 # exit_now is set by a call to %Exit or %Quit
1645 # exit_now is set by a call to %Exit or %Quit
1639 while not self.exit_now:
1646 while not self.exit_now:
1640 if more:
1647 if more:
1641 prompt = self.hooks.generate_prompt(True)
1648 prompt = self.hooks.generate_prompt(True)
1642 if self.autoindent:
1649 if self.autoindent:
1643 self.readline_startup_hook(self.pre_readline)
1650 self.readline_startup_hook(self.pre_readline)
1644 else:
1651 else:
1645 prompt = self.hooks.generate_prompt(False)
1652 prompt = self.hooks.generate_prompt(False)
1646 try:
1653 try:
1647 line = self.raw_input(prompt,more)
1654 line = self.raw_input(prompt,more)
1648 if self.exit_now:
1655 if self.exit_now:
1649 # quick exit on sys.std[in|out] close
1656 # quick exit on sys.std[in|out] close
1650 break
1657 break
1651 if self.autoindent:
1658 if self.autoindent:
1652 self.readline_startup_hook(None)
1659 self.readline_startup_hook(None)
1653 except KeyboardInterrupt:
1660 except KeyboardInterrupt:
1654 self.write('\nKeyboardInterrupt\n')
1661 self.write('\nKeyboardInterrupt\n')
1655 self.resetbuffer()
1662 self.resetbuffer()
1656 # keep cache in sync with the prompt counter:
1663 # keep cache in sync with the prompt counter:
1657 self.outputcache.prompt_count -= 1
1664 self.outputcache.prompt_count -= 1
1658
1665
1659 if self.autoindent:
1666 if self.autoindent:
1660 self.indent_current_nsp = 0
1667 self.indent_current_nsp = 0
1661 more = 0
1668 more = 0
1662 except EOFError:
1669 except EOFError:
1663 if self.autoindent:
1670 if self.autoindent:
1664 self.readline_startup_hook(None)
1671 self.readline_startup_hook(None)
1665 self.write('\n')
1672 self.write('\n')
1666 self.exit()
1673 self.exit()
1667 except bdb.BdbQuit:
1674 except bdb.BdbQuit:
1668 warn('The Python debugger has exited with a BdbQuit exception.\n'
1675 warn('The Python debugger has exited with a BdbQuit exception.\n'
1669 'Because of how pdb handles the stack, it is impossible\n'
1676 'Because of how pdb handles the stack, it is impossible\n'
1670 'for IPython to properly format this particular exception.\n'
1677 'for IPython to properly format this particular exception.\n'
1671 'IPython will resume normal operation.')
1678 'IPython will resume normal operation.')
1672 except:
1679 except:
1673 # exceptions here are VERY RARE, but they can be triggered
1680 # exceptions here are VERY RARE, but they can be triggered
1674 # asynchronously by signal handlers, for example.
1681 # asynchronously by signal handlers, for example.
1675 self.showtraceback()
1682 self.showtraceback()
1676 else:
1683 else:
1677 more = self.push(line)
1684 more = self.push(line)
1678 if (self.SyntaxTB.last_syntax_error and
1685 if (self.SyntaxTB.last_syntax_error and
1679 self.rc.autoedit_syntax):
1686 self.rc.autoedit_syntax):
1680 self.edit_syntax_error()
1687 self.edit_syntax_error()
1681
1688
1682 # We are off again...
1689 # We are off again...
1683 __builtin__.__dict__['__IPYTHON__active'] -= 1
1690 __builtin__.__dict__['__IPYTHON__active'] -= 1
1684
1691
1685 def excepthook(self, etype, value, tb):
1692 def excepthook(self, etype, value, tb):
1686 """One more defense for GUI apps that call sys.excepthook.
1693 """One more defense for GUI apps that call sys.excepthook.
1687
1694
1688 GUI frameworks like wxPython trap exceptions and call
1695 GUI frameworks like wxPython trap exceptions and call
1689 sys.excepthook themselves. I guess this is a feature that
1696 sys.excepthook themselves. I guess this is a feature that
1690 enables them to keep running after exceptions that would
1697 enables them to keep running after exceptions that would
1691 otherwise kill their mainloop. This is a bother for IPython
1698 otherwise kill their mainloop. This is a bother for IPython
1692 which excepts to catch all of the program exceptions with a try:
1699 which excepts to catch all of the program exceptions with a try:
1693 except: statement.
1700 except: statement.
1694
1701
1695 Normally, IPython sets sys.excepthook to a CrashHandler instance, so if
1702 Normally, IPython sets sys.excepthook to a CrashHandler instance, so if
1696 any app directly invokes sys.excepthook, it will look to the user like
1703 any app directly invokes sys.excepthook, it will look to the user like
1697 IPython crashed. In order to work around this, we can disable the
1704 IPython crashed. In order to work around this, we can disable the
1698 CrashHandler and replace it with this excepthook instead, which prints a
1705 CrashHandler and replace it with this excepthook instead, which prints a
1699 regular traceback using our InteractiveTB. In this fashion, apps which
1706 regular traceback using our InteractiveTB. In this fashion, apps which
1700 call sys.excepthook will generate a regular-looking exception from
1707 call sys.excepthook will generate a regular-looking exception from
1701 IPython, and the CrashHandler will only be triggered by real IPython
1708 IPython, and the CrashHandler will only be triggered by real IPython
1702 crashes.
1709 crashes.
1703
1710
1704 This hook should be used sparingly, only in places which are not likely
1711 This hook should be used sparingly, only in places which are not likely
1705 to be true IPython errors.
1712 to be true IPython errors.
1706 """
1713 """
1707 self.showtraceback((etype,value,tb),tb_offset=0)
1714 self.showtraceback((etype,value,tb),tb_offset=0)
1708
1715
1709 def expand_aliases(self,fn,rest):
1716 def expand_aliases(self,fn,rest):
1710 """ Expand multiple levels of aliases:
1717 """ Expand multiple levels of aliases:
1711
1718
1712 if:
1719 if:
1713
1720
1714 alias foo bar /tmp
1721 alias foo bar /tmp
1715 alias baz foo
1722 alias baz foo
1716
1723
1717 then:
1724 then:
1718
1725
1719 baz huhhahhei -> bar /tmp huhhahhei
1726 baz huhhahhei -> bar /tmp huhhahhei
1720
1727
1721 """
1728 """
1722 line = fn + " " + rest
1729 line = fn + " " + rest
1723
1730
1724 done = Set()
1731 done = Set()
1725 while 1:
1732 while 1:
1726 pre,fn,rest = self.split_user_input(line, pattern = self.shell_line_split)
1733 pre,fn,rest = self.split_user_input(line, pattern = self.shell_line_split)
1727 # print "!",fn,"!",rest # dbg
1734 # print "!",fn,"!",rest # dbg
1728 if fn in self.alias_table:
1735 if fn in self.alias_table:
1729 if fn in done:
1736 if fn in done:
1730 warn("Cyclic alias definition, repeated '%s'" % fn)
1737 warn("Cyclic alias definition, repeated '%s'" % fn)
1731 return ""
1738 return ""
1732 done.add(fn)
1739 done.add(fn)
1733
1740
1734 l2 = self.transform_alias(fn,rest)
1741 l2 = self.transform_alias(fn,rest)
1735 # dir -> dir
1742 # dir -> dir
1736 # print "alias",line, "->",l2 #dbg
1743 # print "alias",line, "->",l2 #dbg
1737 if l2 == line:
1744 if l2 == line:
1738 break
1745 break
1739 # ls -> ls -F should not recurse forever
1746 # ls -> ls -F should not recurse forever
1740 if l2.split(None,1)[0] == line.split(None,1)[0]:
1747 if l2.split(None,1)[0] == line.split(None,1)[0]:
1741 line = l2
1748 line = l2
1742 break
1749 break
1743
1750
1744 line=l2
1751 line=l2
1745
1752
1746
1753
1747 # print "al expand to",line #dbg
1754 # print "al expand to",line #dbg
1748 else:
1755 else:
1749 break
1756 break
1750
1757
1751 return line
1758 return line
1752
1759
1753 def transform_alias(self, alias,rest=''):
1760 def transform_alias(self, alias,rest=''):
1754 """ Transform alias to system command string.
1761 """ Transform alias to system command string.
1755 """
1762 """
1756 nargs,cmd = self.alias_table[alias]
1763 nargs,cmd = self.alias_table[alias]
1757 if ' ' in cmd and os.path.isfile(cmd):
1764 if ' ' in cmd and os.path.isfile(cmd):
1758 cmd = '"%s"' % cmd
1765 cmd = '"%s"' % cmd
1759
1766
1760 # Expand the %l special to be the user's input line
1767 # Expand the %l special to be the user's input line
1761 if cmd.find('%l') >= 0:
1768 if cmd.find('%l') >= 0:
1762 cmd = cmd.replace('%l',rest)
1769 cmd = cmd.replace('%l',rest)
1763 rest = ''
1770 rest = ''
1764 if nargs==0:
1771 if nargs==0:
1765 # Simple, argument-less aliases
1772 # Simple, argument-less aliases
1766 cmd = '%s %s' % (cmd,rest)
1773 cmd = '%s %s' % (cmd,rest)
1767 else:
1774 else:
1768 # Handle aliases with positional arguments
1775 # Handle aliases with positional arguments
1769 args = rest.split(None,nargs)
1776 args = rest.split(None,nargs)
1770 if len(args)< nargs:
1777 if len(args)< nargs:
1771 error('Alias <%s> requires %s arguments, %s given.' %
1778 error('Alias <%s> requires %s arguments, %s given.' %
1772 (alias,nargs,len(args)))
1779 (alias,nargs,len(args)))
1773 return None
1780 return None
1774 cmd = '%s %s' % (cmd % tuple(args[:nargs]),' '.join(args[nargs:]))
1781 cmd = '%s %s' % (cmd % tuple(args[:nargs]),' '.join(args[nargs:]))
1775 # Now call the macro, evaluating in the user's namespace
1782 # Now call the macro, evaluating in the user's namespace
1776 #print 'new command: <%r>' % cmd # dbg
1783 #print 'new command: <%r>' % cmd # dbg
1777 return cmd
1784 return cmd
1778
1785
1779 def call_alias(self,alias,rest=''):
1786 def call_alias(self,alias,rest=''):
1780 """Call an alias given its name and the rest of the line.
1787 """Call an alias given its name and the rest of the line.
1781
1788
1782 This is only used to provide backwards compatibility for users of
1789 This is only used to provide backwards compatibility for users of
1783 ipalias(), use of which is not recommended for anymore."""
1790 ipalias(), use of which is not recommended for anymore."""
1784
1791
1785 # Now call the macro, evaluating in the user's namespace
1792 # Now call the macro, evaluating in the user's namespace
1786 cmd = self.transform_alias(alias, rest)
1793 cmd = self.transform_alias(alias, rest)
1787 try:
1794 try:
1788 self.system(cmd)
1795 self.system(cmd)
1789 except:
1796 except:
1790 self.showtraceback()
1797 self.showtraceback()
1791
1798
1792 def indent_current_str(self):
1799 def indent_current_str(self):
1793 """return the current level of indentation as a string"""
1800 """return the current level of indentation as a string"""
1794 return self.indent_current_nsp * ' '
1801 return self.indent_current_nsp * ' '
1795
1802
1796 def autoindent_update(self,line):
1803 def autoindent_update(self,line):
1797 """Keep track of the indent level."""
1804 """Keep track of the indent level."""
1798
1805
1799 #debugx('line')
1806 #debugx('line')
1800 #debugx('self.indent_current_nsp')
1807 #debugx('self.indent_current_nsp')
1801 if self.autoindent:
1808 if self.autoindent:
1802 if line:
1809 if line:
1803 inisp = num_ini_spaces(line)
1810 inisp = num_ini_spaces(line)
1804 if inisp < self.indent_current_nsp:
1811 if inisp < self.indent_current_nsp:
1805 self.indent_current_nsp = inisp
1812 self.indent_current_nsp = inisp
1806
1813
1807 if line[-1] == ':':
1814 if line[-1] == ':':
1808 self.indent_current_nsp += 4
1815 self.indent_current_nsp += 4
1809 elif dedent_re.match(line):
1816 elif dedent_re.match(line):
1810 self.indent_current_nsp -= 4
1817 self.indent_current_nsp -= 4
1811 else:
1818 else:
1812 self.indent_current_nsp = 0
1819 self.indent_current_nsp = 0
1813
1820
1814 def runlines(self,lines):
1821 def runlines(self,lines):
1815 """Run a string of one or more lines of source.
1822 """Run a string of one or more lines of source.
1816
1823
1817 This method is capable of running a string containing multiple source
1824 This method is capable of running a string containing multiple source
1818 lines, as if they had been entered at the IPython prompt. Since it
1825 lines, as if they had been entered at the IPython prompt. Since it
1819 exposes IPython's processing machinery, the given strings can contain
1826 exposes IPython's processing machinery, the given strings can contain
1820 magic calls (%magic), special shell access (!cmd), etc."""
1827 magic calls (%magic), special shell access (!cmd), etc."""
1821
1828
1822 # We must start with a clean buffer, in case this is run from an
1829 # We must start with a clean buffer, in case this is run from an
1823 # interactive IPython session (via a magic, for example).
1830 # interactive IPython session (via a magic, for example).
1824 self.resetbuffer()
1831 self.resetbuffer()
1825 lines = lines.split('\n')
1832 lines = lines.split('\n')
1826 more = 0
1833 more = 0
1827 for line in lines:
1834 for line in lines:
1828 # skip blank lines so we don't mess up the prompt counter, but do
1835 # skip blank lines so we don't mess up the prompt counter, but do
1829 # NOT skip even a blank line if we are in a code block (more is
1836 # NOT skip even a blank line if we are in a code block (more is
1830 # true)
1837 # true)
1831 if line or more:
1838 if line or more:
1832 more = self.push(self.prefilter(line,more))
1839 more = self.push(self.prefilter(line,more))
1833 # IPython's runsource returns None if there was an error
1840 # IPython's runsource returns None if there was an error
1834 # compiling the code. This allows us to stop processing right
1841 # compiling the code. This allows us to stop processing right
1835 # away, so the user gets the error message at the right place.
1842 # away, so the user gets the error message at the right place.
1836 if more is None:
1843 if more is None:
1837 break
1844 break
1838 # final newline in case the input didn't have it, so that the code
1845 # final newline in case the input didn't have it, so that the code
1839 # actually does get executed
1846 # actually does get executed
1840 if more:
1847 if more:
1841 self.push('\n')
1848 self.push('\n')
1842
1849
1843 def runsource(self, source, filename='<input>', symbol='single'):
1850 def runsource(self, source, filename='<input>', symbol='single'):
1844 """Compile and run some source in the interpreter.
1851 """Compile and run some source in the interpreter.
1845
1852
1846 Arguments are as for compile_command().
1853 Arguments are as for compile_command().
1847
1854
1848 One several things can happen:
1855 One several things can happen:
1849
1856
1850 1) The input is incorrect; compile_command() raised an
1857 1) The input is incorrect; compile_command() raised an
1851 exception (SyntaxError or OverflowError). A syntax traceback
1858 exception (SyntaxError or OverflowError). A syntax traceback
1852 will be printed by calling the showsyntaxerror() method.
1859 will be printed by calling the showsyntaxerror() method.
1853
1860
1854 2) The input is incomplete, and more input is required;
1861 2) The input is incomplete, and more input is required;
1855 compile_command() returned None. Nothing happens.
1862 compile_command() returned None. Nothing happens.
1856
1863
1857 3) The input is complete; compile_command() returned a code
1864 3) The input is complete; compile_command() returned a code
1858 object. The code is executed by calling self.runcode() (which
1865 object. The code is executed by calling self.runcode() (which
1859 also handles run-time exceptions, except for SystemExit).
1866 also handles run-time exceptions, except for SystemExit).
1860
1867
1861 The return value is:
1868 The return value is:
1862
1869
1863 - True in case 2
1870 - True in case 2
1864
1871
1865 - False in the other cases, unless an exception is raised, where
1872 - False in the other cases, unless an exception is raised, where
1866 None is returned instead. This can be used by external callers to
1873 None is returned instead. This can be used by external callers to
1867 know whether to continue feeding input or not.
1874 know whether to continue feeding input or not.
1868
1875
1869 The return value can be used to decide whether to use sys.ps1 or
1876 The return value can be used to decide whether to use sys.ps1 or
1870 sys.ps2 to prompt the next line."""
1877 sys.ps2 to prompt the next line."""
1871
1878
1872 # if the source code has leading blanks, add 'if 1:\n' to it
1879 # if the source code has leading blanks, add 'if 1:\n' to it
1873 # this allows execution of indented pasted code. It is tempting
1880 # this allows execution of indented pasted code. It is tempting
1874 # to add '\n' at the end of source to run commands like ' a=1'
1881 # to add '\n' at the end of source to run commands like ' a=1'
1875 # directly, but this fails for more complicated scenarios
1882 # directly, but this fails for more complicated scenarios
1876 if source[:1] in [' ', '\t']:
1883 if source[:1] in [' ', '\t']:
1877 source = 'if 1:\n%s' % source
1884 source = 'if 1:\n%s' % source
1878
1885
1879 try:
1886 try:
1880 code = self.compile(source,filename,symbol)
1887 code = self.compile(source,filename,symbol)
1881 except (OverflowError, SyntaxError, ValueError):
1888 except (OverflowError, SyntaxError, ValueError):
1882 # Case 1
1889 # Case 1
1883 self.showsyntaxerror(filename)
1890 self.showsyntaxerror(filename)
1884 return None
1891 return None
1885
1892
1886 if code is None:
1893 if code is None:
1887 # Case 2
1894 # Case 2
1888 return True
1895 return True
1889
1896
1890 # Case 3
1897 # Case 3
1891 # We store the code object so that threaded shells and
1898 # We store the code object so that threaded shells and
1892 # custom exception handlers can access all this info if needed.
1899 # custom exception handlers can access all this info if needed.
1893 # The source corresponding to this can be obtained from the
1900 # The source corresponding to this can be obtained from the
1894 # buffer attribute as '\n'.join(self.buffer).
1901 # buffer attribute as '\n'.join(self.buffer).
1895 self.code_to_run = code
1902 self.code_to_run = code
1896 # now actually execute the code object
1903 # now actually execute the code object
1897 if self.runcode(code) == 0:
1904 if self.runcode(code) == 0:
1898 return False
1905 return False
1899 else:
1906 else:
1900 return None
1907 return None
1901
1908
1902 def runcode(self,code_obj):
1909 def runcode(self,code_obj):
1903 """Execute a code object.
1910 """Execute a code object.
1904
1911
1905 When an exception occurs, self.showtraceback() is called to display a
1912 When an exception occurs, self.showtraceback() is called to display a
1906 traceback.
1913 traceback.
1907
1914
1908 Return value: a flag indicating whether the code to be run completed
1915 Return value: a flag indicating whether the code to be run completed
1909 successfully:
1916 successfully:
1910
1917
1911 - 0: successful execution.
1918 - 0: successful execution.
1912 - 1: an error occurred.
1919 - 1: an error occurred.
1913 """
1920 """
1914
1921
1915 # Set our own excepthook in case the user code tries to call it
1922 # Set our own excepthook in case the user code tries to call it
1916 # directly, so that the IPython crash handler doesn't get triggered
1923 # directly, so that the IPython crash handler doesn't get triggered
1917 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
1924 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
1918
1925
1919 # we save the original sys.excepthook in the instance, in case config
1926 # we save the original sys.excepthook in the instance, in case config
1920 # code (such as magics) needs access to it.
1927 # code (such as magics) needs access to it.
1921 self.sys_excepthook = old_excepthook
1928 self.sys_excepthook = old_excepthook
1922 outflag = 1 # happens in more places, so it's easier as default
1929 outflag = 1 # happens in more places, so it's easier as default
1923 try:
1930 try:
1924 try:
1931 try:
1925 # Embedded instances require separate global/local namespaces
1932 # Embedded instances require separate global/local namespaces
1926 # so they can see both the surrounding (local) namespace and
1933 # so they can see both the surrounding (local) namespace and
1927 # the module-level globals when called inside another function.
1934 # the module-level globals when called inside another function.
1928 if self.embedded:
1935 if self.embedded:
1929 exec code_obj in self.user_global_ns, self.user_ns
1936 exec code_obj in self.user_global_ns, self.user_ns
1930 # Normal (non-embedded) instances should only have a single
1937 # Normal (non-embedded) instances should only have a single
1931 # namespace for user code execution, otherwise functions won't
1938 # namespace for user code execution, otherwise functions won't
1932 # see interactive top-level globals.
1939 # see interactive top-level globals.
1933 else:
1940 else:
1934 exec code_obj in self.user_ns
1941 exec code_obj in self.user_ns
1935 finally:
1942 finally:
1936 # Reset our crash handler in place
1943 # Reset our crash handler in place
1937 sys.excepthook = old_excepthook
1944 sys.excepthook = old_excepthook
1938 except SystemExit:
1945 except SystemExit:
1939 self.resetbuffer()
1946 self.resetbuffer()
1940 self.showtraceback()
1947 self.showtraceback()
1941 warn("Type %exit or %quit to exit IPython "
1948 warn("Type %exit or %quit to exit IPython "
1942 "(%Exit or %Quit do so unconditionally).",level=1)
1949 "(%Exit or %Quit do so unconditionally).",level=1)
1943 except self.custom_exceptions:
1950 except self.custom_exceptions:
1944 etype,value,tb = sys.exc_info()
1951 etype,value,tb = sys.exc_info()
1945 self.CustomTB(etype,value,tb)
1952 self.CustomTB(etype,value,tb)
1946 except:
1953 except:
1947 self.showtraceback()
1954 self.showtraceback()
1948 else:
1955 else:
1949 outflag = 0
1956 outflag = 0
1950 if softspace(sys.stdout, 0):
1957 if softspace(sys.stdout, 0):
1951 print
1958 print
1952 # Flush out code object which has been run (and source)
1959 # Flush out code object which has been run (and source)
1953 self.code_to_run = None
1960 self.code_to_run = None
1954 return outflag
1961 return outflag
1955
1962
1956 def push(self, line):
1963 def push(self, line):
1957 """Push a line to the interpreter.
1964 """Push a line to the interpreter.
1958
1965
1959 The line should not have a trailing newline; it may have
1966 The line should not have a trailing newline; it may have
1960 internal newlines. The line is appended to a buffer and the
1967 internal newlines. The line is appended to a buffer and the
1961 interpreter's runsource() method is called with the
1968 interpreter's runsource() method is called with the
1962 concatenated contents of the buffer as source. If this
1969 concatenated contents of the buffer as source. If this
1963 indicates that the command was executed or invalid, the buffer
1970 indicates that the command was executed or invalid, the buffer
1964 is reset; otherwise, the command is incomplete, and the buffer
1971 is reset; otherwise, the command is incomplete, and the buffer
1965 is left as it was after the line was appended. The return
1972 is left as it was after the line was appended. The return
1966 value is 1 if more input is required, 0 if the line was dealt
1973 value is 1 if more input is required, 0 if the line was dealt
1967 with in some way (this is the same as runsource()).
1974 with in some way (this is the same as runsource()).
1968 """
1975 """
1969
1976
1970 # autoindent management should be done here, and not in the
1977 # autoindent management should be done here, and not in the
1971 # interactive loop, since that one is only seen by keyboard input. We
1978 # interactive loop, since that one is only seen by keyboard input. We
1972 # need this done correctly even for code run via runlines (which uses
1979 # need this done correctly even for code run via runlines (which uses
1973 # push).
1980 # push).
1974
1981
1975 #print 'push line: <%s>' % line # dbg
1982 #print 'push line: <%s>' % line # dbg
1976 for subline in line.splitlines():
1983 for subline in line.splitlines():
1977 self.autoindent_update(subline)
1984 self.autoindent_update(subline)
1978 self.buffer.append(line)
1985 self.buffer.append(line)
1979 more = self.runsource('\n'.join(self.buffer), self.filename)
1986 more = self.runsource('\n'.join(self.buffer), self.filename)
1980 if not more:
1987 if not more:
1981 self.resetbuffer()
1988 self.resetbuffer()
1982 return more
1989 return more
1983
1990
1984 def resetbuffer(self):
1991 def resetbuffer(self):
1985 """Reset the input buffer."""
1992 """Reset the input buffer."""
1986 self.buffer[:] = []
1993 self.buffer[:] = []
1987
1994
1988 def raw_input(self,prompt='',continue_prompt=False):
1995 def raw_input(self,prompt='',continue_prompt=False):
1989 """Write a prompt and read a line.
1996 """Write a prompt and read a line.
1990
1997
1991 The returned line does not include the trailing newline.
1998 The returned line does not include the trailing newline.
1992 When the user enters the EOF key sequence, EOFError is raised.
1999 When the user enters the EOF key sequence, EOFError is raised.
1993
2000
1994 Optional inputs:
2001 Optional inputs:
1995
2002
1996 - prompt(''): a string to be printed to prompt the user.
2003 - prompt(''): a string to be printed to prompt the user.
1997
2004
1998 - continue_prompt(False): whether this line is the first one or a
2005 - continue_prompt(False): whether this line is the first one or a
1999 continuation in a sequence of inputs.
2006 continuation in a sequence of inputs.
2000 """
2007 """
2001
2008
2002 # Code run by the user may have modified the readline completer state.
2009 # Code run by the user may have modified the readline completer state.
2003 # We must ensure that our completer is back in place.
2010 # We must ensure that our completer is back in place.
2004 if self.has_readline:
2011 if self.has_readline:
2005 self.set_completer()
2012 self.set_completer()
2006
2013
2007 try:
2014 try:
2008 line = raw_input_original(prompt).decode(self.stdin_encoding)
2015 line = raw_input_original(prompt).decode(self.stdin_encoding)
2009 except ValueError:
2016 except ValueError:
2010 warn("\n********\nYou or a %run:ed script called sys.stdin.close()"
2017 warn("\n********\nYou or a %run:ed script called sys.stdin.close()"
2011 " or sys.stdout.close()!\nExiting IPython!")
2018 " or sys.stdout.close()!\nExiting IPython!")
2012 self.exit_now = True
2019 self.exit_now = True
2013 return ""
2020 return ""
2014
2021
2015 # Try to be reasonably smart about not re-indenting pasted input more
2022 # Try to be reasonably smart about not re-indenting pasted input more
2016 # than necessary. We do this by trimming out the auto-indent initial
2023 # than necessary. We do this by trimming out the auto-indent initial
2017 # spaces, if the user's actual input started itself with whitespace.
2024 # spaces, if the user's actual input started itself with whitespace.
2018 #debugx('self.buffer[-1]')
2025 #debugx('self.buffer[-1]')
2019
2026
2020 if self.autoindent:
2027 if self.autoindent:
2021 if num_ini_spaces(line) > self.indent_current_nsp:
2028 if num_ini_spaces(line) > self.indent_current_nsp:
2022 line = line[self.indent_current_nsp:]
2029 line = line[self.indent_current_nsp:]
2023 self.indent_current_nsp = 0
2030 self.indent_current_nsp = 0
2024
2031
2025 # store the unfiltered input before the user has any chance to modify
2032 # store the unfiltered input before the user has any chance to modify
2026 # it.
2033 # it.
2027 if line.strip():
2034 if line.strip():
2028 if continue_prompt:
2035 if continue_prompt:
2029 self.input_hist_raw[-1] += '%s\n' % line
2036 self.input_hist_raw[-1] += '%s\n' % line
2030 if self.has_readline: # and some config option is set?
2037 if self.has_readline: # and some config option is set?
2031 try:
2038 try:
2032 histlen = self.readline.get_current_history_length()
2039 histlen = self.readline.get_current_history_length()
2033 newhist = self.input_hist_raw[-1].rstrip()
2040 newhist = self.input_hist_raw[-1].rstrip()
2034 self.readline.remove_history_item(histlen-1)
2041 self.readline.remove_history_item(histlen-1)
2035 self.readline.replace_history_item(histlen-2,newhist)
2042 self.readline.replace_history_item(histlen-2,newhist)
2036 except AttributeError:
2043 except AttributeError:
2037 pass # re{move,place}_history_item are new in 2.4.
2044 pass # re{move,place}_history_item are new in 2.4.
2038 else:
2045 else:
2039 self.input_hist_raw.append('%s\n' % line)
2046 self.input_hist_raw.append('%s\n' % line)
2040
2047
2041 try:
2048 try:
2042 lineout = self.prefilter(line,continue_prompt)
2049 lineout = self.prefilter(line,continue_prompt)
2043 except:
2050 except:
2044 # blanket except, in case a user-defined prefilter crashes, so it
2051 # blanket except, in case a user-defined prefilter crashes, so it
2045 # can't take all of ipython with it.
2052 # can't take all of ipython with it.
2046 self.showtraceback()
2053 self.showtraceback()
2047 return ''
2054 return ''
2048 else:
2055 else:
2049 return lineout
2056 return lineout
2050
2057
2051 def split_user_input(self,line, pattern = None):
2058 def split_user_input(self,line, pattern = None):
2052 """Split user input into pre-char, function part and rest."""
2059 """Split user input into pre-char, function part and rest."""
2053
2060
2054 if pattern is None:
2061 if pattern is None:
2055 pattern = self.line_split
2062 pattern = self.line_split
2056
2063
2057 lsplit = pattern.match(line)
2064 lsplit = pattern.match(line)
2058 if lsplit is None: # no regexp match returns None
2065 if lsplit is None: # no regexp match returns None
2059 #print "match failed for line '%s'" % line # dbg
2066 #print "match failed for line '%s'" % line # dbg
2060 try:
2067 try:
2061 iFun,theRest = line.split(None,1)
2068 iFun,theRest = line.split(None,1)
2062 except ValueError:
2069 except ValueError:
2063 #print "split failed for line '%s'" % line # dbg
2070 #print "split failed for line '%s'" % line # dbg
2064 iFun,theRest = line,''
2071 iFun,theRest = line,''
2065 pre = re.match('^(\s*)(.*)',line).groups()[0]
2072 pre = re.match('^(\s*)(.*)',line).groups()[0]
2066 else:
2073 else:
2067 pre,iFun,theRest = lsplit.groups()
2074 pre,iFun,theRest = lsplit.groups()
2068
2075
2069 # iFun has to be a valid python identifier, so it better be only pure
2076 # iFun has to be a valid python identifier, so it better be only pure
2070 #ascii, no unicode:
2077 #ascii, no unicode:
2071 try:
2078 try:
2072 iFun = iFun.encode('ascii')
2079 iFun = iFun.encode('ascii')
2073 except UnicodeEncodeError:
2080 except UnicodeEncodeError:
2074 theRest = iFun+u' '+theRest
2081 theRest = iFun+u' '+theRest
2075 iFun = u''
2082 iFun = u''
2076
2083
2077 #print 'line:<%s>' % line # dbg
2084 #print 'line:<%s>' % line # dbg
2078 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
2085 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
2079 return pre,iFun.strip(),theRest
2086 return pre,iFun.strip(),theRest
2080
2087
2081 # THIS VERSION IS BROKEN!!! It was intended to prevent spurious attribute
2088 # THIS VERSION IS BROKEN!!! It was intended to prevent spurious attribute
2082 # accesses with a more stringent check of inputs, but it introduced other
2089 # accesses with a more stringent check of inputs, but it introduced other
2083 # bugs. Disable it for now until I can properly fix it.
2090 # bugs. Disable it for now until I can properly fix it.
2084 def split_user_inputBROKEN(self,line):
2091 def split_user_inputBROKEN(self,line):
2085 """Split user input into pre-char, function part and rest."""
2092 """Split user input into pre-char, function part and rest."""
2086
2093
2087 lsplit = self.line_split.match(line)
2094 lsplit = self.line_split.match(line)
2088 if lsplit is None: # no regexp match returns None
2095 if lsplit is None: # no regexp match returns None
2089 lsplit = self.line_split_fallback.match(line)
2096 lsplit = self.line_split_fallback.match(line)
2090
2097
2091 #pre,iFun,theRest = lsplit.groups() # dbg
2098 #pre,iFun,theRest = lsplit.groups() # dbg
2092 #print 'line:<%s>' % line # dbg
2099 #print 'line:<%s>' % line # dbg
2093 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
2100 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
2094 #return pre,iFun.strip(),theRest # dbg
2101 #return pre,iFun.strip(),theRest # dbg
2095
2102
2096 return lsplit.groups()
2103 return lsplit.groups()
2097
2104
2098 def _prefilter(self, line, continue_prompt):
2105 def _prefilter(self, line, continue_prompt):
2099 """Calls different preprocessors, depending on the form of line."""
2106 """Calls different preprocessors, depending on the form of line."""
2100
2107
2101 # All handlers *must* return a value, even if it's blank ('').
2108 # All handlers *must* return a value, even if it's blank ('').
2102
2109
2103 # Lines are NOT logged here. Handlers should process the line as
2110 # Lines are NOT logged here. Handlers should process the line as
2104 # needed, update the cache AND log it (so that the input cache array
2111 # needed, update the cache AND log it (so that the input cache array
2105 # stays synced).
2112 # stays synced).
2106
2113
2107 # This function is _very_ delicate, and since it's also the one which
2114 # This function is _very_ delicate, and since it's also the one which
2108 # determines IPython's response to user input, it must be as efficient
2115 # determines IPython's response to user input, it must be as efficient
2109 # as possible. For this reason it has _many_ returns in it, trying
2116 # as possible. For this reason it has _many_ returns in it, trying
2110 # always to exit as quickly as it can figure out what it needs to do.
2117 # always to exit as quickly as it can figure out what it needs to do.
2111
2118
2112 # This function is the main responsible for maintaining IPython's
2119 # This function is the main responsible for maintaining IPython's
2113 # behavior respectful of Python's semantics. So be _very_ careful if
2120 # behavior respectful of Python's semantics. So be _very_ careful if
2114 # making changes to anything here.
2121 # making changes to anything here.
2115
2122
2116 #.....................................................................
2123 #.....................................................................
2117 # Code begins
2124 # Code begins
2118
2125
2119 #if line.startswith('%crash'): raise RuntimeError,'Crash now!' # dbg
2126 #if line.startswith('%crash'): raise RuntimeError,'Crash now!' # dbg
2120
2127
2121 # save the line away in case we crash, so the post-mortem handler can
2128 # save the line away in case we crash, so the post-mortem handler can
2122 # record it
2129 # record it
2123 self._last_input_line = line
2130 self._last_input_line = line
2124
2131
2125 #print '***line: <%s>' % line # dbg
2132 #print '***line: <%s>' % line # dbg
2126
2133
2127 # the input history needs to track even empty lines
2134 # the input history needs to track even empty lines
2128 stripped = line.strip()
2135 stripped = line.strip()
2129
2136
2130 if not stripped:
2137 if not stripped:
2131 if not continue_prompt:
2138 if not continue_prompt:
2132 self.outputcache.prompt_count -= 1
2139 self.outputcache.prompt_count -= 1
2133 return self.handle_normal(line,continue_prompt)
2140 return self.handle_normal(line,continue_prompt)
2134 #return self.handle_normal('',continue_prompt)
2141 #return self.handle_normal('',continue_prompt)
2135
2142
2136 # print '***cont',continue_prompt # dbg
2143 # print '***cont',continue_prompt # dbg
2137 # special handlers are only allowed for single line statements
2144 # special handlers are only allowed for single line statements
2138 if continue_prompt and not self.rc.multi_line_specials:
2145 if continue_prompt and not self.rc.multi_line_specials:
2139 return self.handle_normal(line,continue_prompt)
2146 return self.handle_normal(line,continue_prompt)
2140
2147
2141
2148
2142 # For the rest, we need the structure of the input
2149 # For the rest, we need the structure of the input
2143 pre,iFun,theRest = self.split_user_input(line)
2150 pre,iFun,theRest = self.split_user_input(line)
2144
2151
2145 # See whether any pre-existing handler can take care of it
2152 # See whether any pre-existing handler can take care of it
2146
2153
2147 rewritten = self.hooks.input_prefilter(stripped)
2154 rewritten = self.hooks.input_prefilter(stripped)
2148 if rewritten != stripped: # ok, some prefilter did something
2155 if rewritten != stripped: # ok, some prefilter did something
2149 rewritten = pre + rewritten # add indentation
2156 rewritten = pre + rewritten # add indentation
2150 return self.handle_normal(rewritten)
2157 return self.handle_normal(rewritten)
2151
2158
2152 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2159 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2153
2160
2154 # Next, check if we can automatically execute this thing
2161 # Next, check if we can automatically execute this thing
2155
2162
2156 # Allow ! in multi-line statements if multi_line_specials is on:
2163 # Allow ! in multi-line statements if multi_line_specials is on:
2157 if continue_prompt and self.rc.multi_line_specials and \
2164 if continue_prompt and self.rc.multi_line_specials and \
2158 iFun.startswith(self.ESC_SHELL):
2165 iFun.startswith(self.ESC_SHELL):
2159 return self.handle_shell_escape(line,continue_prompt,
2166 return self.handle_shell_escape(line,continue_prompt,
2160 pre=pre,iFun=iFun,
2167 pre=pre,iFun=iFun,
2161 theRest=theRest)
2168 theRest=theRest)
2162
2169
2163 # First check for explicit escapes in the last/first character
2170 # First check for explicit escapes in the last/first character
2164 handler = None
2171 handler = None
2165 if line[-1] == self.ESC_HELP and line[0] != self.ESC_SHELL:
2172 if line[-1] == self.ESC_HELP and line[0] != self.ESC_SHELL:
2166 handler = self.esc_handlers.get(line[-1]) # the ? can be at the end
2173 handler = self.esc_handlers.get(line[-1]) # the ? can be at the end
2167 if handler is None:
2174 if handler is None:
2168 # look at the first character of iFun, NOT of line, so we skip
2175 # look at the first character of iFun, NOT of line, so we skip
2169 # leading whitespace in multiline input
2176 # leading whitespace in multiline input
2170 handler = self.esc_handlers.get(iFun[0:1])
2177 handler = self.esc_handlers.get(iFun[0:1])
2171 if handler is not None:
2178 if handler is not None:
2172 return handler(line,continue_prompt,pre,iFun,theRest)
2179 return handler(line,continue_prompt,pre,iFun,theRest)
2173 # Emacs ipython-mode tags certain input lines
2180 # Emacs ipython-mode tags certain input lines
2174 if line.endswith('# PYTHON-MODE'):
2181 if line.endswith('# PYTHON-MODE'):
2175 return self.handle_emacs(line,continue_prompt)
2182 return self.handle_emacs(line,continue_prompt)
2176
2183
2177 # Let's try to find if the input line is a magic fn
2184 # Let's try to find if the input line is a magic fn
2178 oinfo = None
2185 oinfo = None
2179 if hasattr(self,'magic_'+iFun):
2186 if hasattr(self,'magic_'+iFun):
2180 # WARNING: _ofind uses getattr(), so it can consume generators and
2187 # WARNING: _ofind uses getattr(), so it can consume generators and
2181 # cause other side effects.
2188 # cause other side effects.
2182 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2189 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2183 if oinfo['ismagic']:
2190 if oinfo['ismagic']:
2184 # Be careful not to call magics when a variable assignment is
2191 # Be careful not to call magics when a variable assignment is
2185 # being made (ls='hi', for example)
2192 # being made (ls='hi', for example)
2186 if self.rc.automagic and \
2193 if self.rc.automagic and \
2187 (len(theRest)==0 or theRest[0] not in '!=()<>,') and \
2194 (len(theRest)==0 or theRest[0] not in '!=()<>,') and \
2188 (self.rc.multi_line_specials or not continue_prompt):
2195 (self.rc.multi_line_specials or not continue_prompt):
2189 return self.handle_magic(line,continue_prompt,
2196 return self.handle_magic(line,continue_prompt,
2190 pre,iFun,theRest)
2197 pre,iFun,theRest)
2191 else:
2198 else:
2192 return self.handle_normal(line,continue_prompt)
2199 return self.handle_normal(line,continue_prompt)
2193
2200
2194 # If the rest of the line begins with an (in)equality, assginment or
2201 # If the rest of the line begins with an (in)equality, assginment or
2195 # function call, we should not call _ofind but simply execute it.
2202 # function call, we should not call _ofind but simply execute it.
2196 # This avoids spurious geattr() accesses on objects upon assignment.
2203 # This avoids spurious geattr() accesses on objects upon assignment.
2197 #
2204 #
2198 # It also allows users to assign to either alias or magic names true
2205 # It also allows users to assign to either alias or magic names true
2199 # python variables (the magic/alias systems always take second seat to
2206 # python variables (the magic/alias systems always take second seat to
2200 # true python code).
2207 # true python code).
2201 if theRest and theRest[0] in '!=()':
2208 if theRest and theRest[0] in '!=()':
2202 return self.handle_normal(line,continue_prompt)
2209 return self.handle_normal(line,continue_prompt)
2203
2210
2204 if oinfo is None:
2211 if oinfo is None:
2205 # let's try to ensure that _oinfo is ONLY called when autocall is
2212 # let's try to ensure that _oinfo is ONLY called when autocall is
2206 # on. Since it has inevitable potential side effects, at least
2213 # on. Since it has inevitable potential side effects, at least
2207 # having autocall off should be a guarantee to the user that no
2214 # having autocall off should be a guarantee to the user that no
2208 # weird things will happen.
2215 # weird things will happen.
2209
2216
2210 if self.rc.autocall:
2217 if self.rc.autocall:
2211 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2218 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2212 else:
2219 else:
2213 # in this case, all that's left is either an alias or
2220 # in this case, all that's left is either an alias or
2214 # processing the line normally.
2221 # processing the line normally.
2215 if iFun in self.alias_table:
2222 if iFun in self.alias_table:
2216 # if autocall is off, by not running _ofind we won't know
2223 # if autocall is off, by not running _ofind we won't know
2217 # whether the given name may also exist in one of the
2224 # whether the given name may also exist in one of the
2218 # user's namespace. At this point, it's best to do a
2225 # user's namespace. At this point, it's best to do a
2219 # quick check just to be sure that we don't let aliases
2226 # quick check just to be sure that we don't let aliases
2220 # shadow variables.
2227 # shadow variables.
2221 head = iFun.split('.',1)[0]
2228 head = iFun.split('.',1)[0]
2222 if head in self.user_ns or head in self.internal_ns \
2229 if head in self.user_ns or head in self.internal_ns \
2223 or head in __builtin__.__dict__:
2230 or head in __builtin__.__dict__:
2224 return self.handle_normal(line,continue_prompt)
2231 return self.handle_normal(line,continue_prompt)
2225 else:
2232 else:
2226 return self.handle_alias(line,continue_prompt,
2233 return self.handle_alias(line,continue_prompt,
2227 pre,iFun,theRest)
2234 pre,iFun,theRest)
2228
2235
2229 else:
2236 else:
2230 return self.handle_normal(line,continue_prompt)
2237 return self.handle_normal(line,continue_prompt)
2231
2238
2232 if not oinfo['found']:
2239 if not oinfo['found']:
2233 return self.handle_normal(line,continue_prompt)
2240 return self.handle_normal(line,continue_prompt)
2234 else:
2241 else:
2235 #print 'pre<%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2242 #print 'pre<%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2236 if oinfo['isalias']:
2243 if oinfo['isalias']:
2237 return self.handle_alias(line,continue_prompt,
2244 return self.handle_alias(line,continue_prompt,
2238 pre,iFun,theRest)
2245 pre,iFun,theRest)
2239
2246
2240 if (self.rc.autocall
2247 if (self.rc.autocall
2241 and
2248 and
2242 (
2249 (
2243 #only consider exclusion re if not "," or ";" autoquoting
2250 #only consider exclusion re if not "," or ";" autoquoting
2244 (pre == self.ESC_QUOTE or pre == self.ESC_QUOTE2
2251 (pre == self.ESC_QUOTE or pre == self.ESC_QUOTE2
2245 or pre == self.ESC_PAREN) or
2252 or pre == self.ESC_PAREN) or
2246 (not self.re_exclude_auto.match(theRest)))
2253 (not self.re_exclude_auto.match(theRest)))
2247 and
2254 and
2248 self.re_fun_name.match(iFun) and
2255 self.re_fun_name.match(iFun) and
2249 callable(oinfo['obj'])) :
2256 callable(oinfo['obj'])) :
2250 #print 'going auto' # dbg
2257 #print 'going auto' # dbg
2251 return self.handle_auto(line,continue_prompt,
2258 return self.handle_auto(line,continue_prompt,
2252 pre,iFun,theRest,oinfo['obj'])
2259 pre,iFun,theRest,oinfo['obj'])
2253 else:
2260 else:
2254 #print 'was callable?', callable(oinfo['obj']) # dbg
2261 #print 'was callable?', callable(oinfo['obj']) # dbg
2255 return self.handle_normal(line,continue_prompt)
2262 return self.handle_normal(line,continue_prompt)
2256
2263
2257 # If we get here, we have a normal Python line. Log and return.
2264 # If we get here, we have a normal Python line. Log and return.
2258 return self.handle_normal(line,continue_prompt)
2265 return self.handle_normal(line,continue_prompt)
2259
2266
2260 def _prefilter_dumb(self, line, continue_prompt):
2267 def _prefilter_dumb(self, line, continue_prompt):
2261 """simple prefilter function, for debugging"""
2268 """simple prefilter function, for debugging"""
2262 return self.handle_normal(line,continue_prompt)
2269 return self.handle_normal(line,continue_prompt)
2263
2270
2264
2271
2265 def multiline_prefilter(self, line, continue_prompt):
2272 def multiline_prefilter(self, line, continue_prompt):
2266 """ Run _prefilter for each line of input
2273 """ Run _prefilter for each line of input
2267
2274
2268 Covers cases where there are multiple lines in the user entry,
2275 Covers cases where there are multiple lines in the user entry,
2269 which is the case when the user goes back to a multiline history
2276 which is the case when the user goes back to a multiline history
2270 entry and presses enter.
2277 entry and presses enter.
2271
2278
2272 """
2279 """
2273 out = []
2280 out = []
2274 for l in line.rstrip('\n').split('\n'):
2281 for l in line.rstrip('\n').split('\n'):
2275 out.append(self._prefilter(l, continue_prompt))
2282 out.append(self._prefilter(l, continue_prompt))
2276 return '\n'.join(out)
2283 return '\n'.join(out)
2277
2284
2278 # Set the default prefilter() function (this can be user-overridden)
2285 # Set the default prefilter() function (this can be user-overridden)
2279 prefilter = multiline_prefilter
2286 prefilter = multiline_prefilter
2280
2287
2281 def handle_normal(self,line,continue_prompt=None,
2288 def handle_normal(self,line,continue_prompt=None,
2282 pre=None,iFun=None,theRest=None):
2289 pre=None,iFun=None,theRest=None):
2283 """Handle normal input lines. Use as a template for handlers."""
2290 """Handle normal input lines. Use as a template for handlers."""
2284
2291
2285 # With autoindent on, we need some way to exit the input loop, and I
2292 # With autoindent on, we need some way to exit the input loop, and I
2286 # don't want to force the user to have to backspace all the way to
2293 # don't want to force the user to have to backspace all the way to
2287 # clear the line. The rule will be in this case, that either two
2294 # clear the line. The rule will be in this case, that either two
2288 # lines of pure whitespace in a row, or a line of pure whitespace but
2295 # lines of pure whitespace in a row, or a line of pure whitespace but
2289 # of a size different to the indent level, will exit the input loop.
2296 # of a size different to the indent level, will exit the input loop.
2290
2297
2291 if (continue_prompt and self.autoindent and line.isspace() and
2298 if (continue_prompt and self.autoindent and line.isspace() and
2292 (0 < abs(len(line) - self.indent_current_nsp) <= 2 or
2299 (0 < abs(len(line) - self.indent_current_nsp) <= 2 or
2293 (self.buffer[-1]).isspace() )):
2300 (self.buffer[-1]).isspace() )):
2294 line = ''
2301 line = ''
2295
2302
2296 self.log(line,line,continue_prompt)
2303 self.log(line,line,continue_prompt)
2297 return line
2304 return line
2298
2305
2299 def handle_alias(self,line,continue_prompt=None,
2306 def handle_alias(self,line,continue_prompt=None,
2300 pre=None,iFun=None,theRest=None):
2307 pre=None,iFun=None,theRest=None):
2301 """Handle alias input lines. """
2308 """Handle alias input lines. """
2302
2309
2303 # pre is needed, because it carries the leading whitespace. Otherwise
2310 # pre is needed, because it carries the leading whitespace. Otherwise
2304 # aliases won't work in indented sections.
2311 # aliases won't work in indented sections.
2305 transformed = self.expand_aliases(iFun, theRest)
2312 transformed = self.expand_aliases(iFun, theRest)
2306 line_out = '%s_ip.system(%s)' % (pre, make_quoted_expr( transformed ))
2313 line_out = '%s_ip.system(%s)' % (pre, make_quoted_expr( transformed ))
2307 self.log(line,line_out,continue_prompt)
2314 self.log(line,line_out,continue_prompt)
2308 #print 'line out:',line_out # dbg
2315 #print 'line out:',line_out # dbg
2309 return line_out
2316 return line_out
2310
2317
2311 def handle_shell_escape(self, line, continue_prompt=None,
2318 def handle_shell_escape(self, line, continue_prompt=None,
2312 pre=None,iFun=None,theRest=None):
2319 pre=None,iFun=None,theRest=None):
2313 """Execute the line in a shell, empty return value"""
2320 """Execute the line in a shell, empty return value"""
2314
2321
2315 #print 'line in :', `line` # dbg
2322 #print 'line in :', `line` # dbg
2316 # Example of a special handler. Others follow a similar pattern.
2323 # Example of a special handler. Others follow a similar pattern.
2317 if line.lstrip().startswith('!!'):
2324 if line.lstrip().startswith('!!'):
2318 # rewrite iFun/theRest to properly hold the call to %sx and
2325 # rewrite iFun/theRest to properly hold the call to %sx and
2319 # the actual command to be executed, so handle_magic can work
2326 # the actual command to be executed, so handle_magic can work
2320 # correctly
2327 # correctly
2321 theRest = '%s %s' % (iFun[2:],theRest)
2328 theRest = '%s %s' % (iFun[2:],theRest)
2322 iFun = 'sx'
2329 iFun = 'sx'
2323 return self.handle_magic('%ssx %s' % (self.ESC_MAGIC,
2330 return self.handle_magic('%ssx %s' % (self.ESC_MAGIC,
2324 line.lstrip()[2:]),
2331 line.lstrip()[2:]),
2325 continue_prompt,pre,iFun,theRest)
2332 continue_prompt,pre,iFun,theRest)
2326 else:
2333 else:
2327 cmd=line.lstrip().lstrip('!')
2334 cmd=line.lstrip().lstrip('!')
2328 line_out = '%s_ip.system(%s)' % (pre,make_quoted_expr(cmd))
2335 line_out = '%s_ip.system(%s)' % (pre,make_quoted_expr(cmd))
2329 # update cache/log and return
2336 # update cache/log and return
2330 self.log(line,line_out,continue_prompt)
2337 self.log(line,line_out,continue_prompt)
2331 return line_out
2338 return line_out
2332
2339
2333 def handle_magic(self, line, continue_prompt=None,
2340 def handle_magic(self, line, continue_prompt=None,
2334 pre=None,iFun=None,theRest=None):
2341 pre=None,iFun=None,theRest=None):
2335 """Execute magic functions."""
2342 """Execute magic functions."""
2336
2343
2337
2344
2338 cmd = '%s_ip.magic(%s)' % (pre,make_quoted_expr(iFun + " " + theRest))
2345 cmd = '%s_ip.magic(%s)' % (pre,make_quoted_expr(iFun + " " + theRest))
2339 self.log(line,cmd,continue_prompt)
2346 self.log(line,cmd,continue_prompt)
2340 #print 'in handle_magic, cmd=<%s>' % cmd # dbg
2347 #print 'in handle_magic, cmd=<%s>' % cmd # dbg
2341 return cmd
2348 return cmd
2342
2349
2343 def handle_auto(self, line, continue_prompt=None,
2350 def handle_auto(self, line, continue_prompt=None,
2344 pre=None,iFun=None,theRest=None,obj=None):
2351 pre=None,iFun=None,theRest=None,obj=None):
2345 """Hande lines which can be auto-executed, quoting if requested."""
2352 """Hande lines which can be auto-executed, quoting if requested."""
2346
2353
2347 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2354 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2348
2355
2349 # This should only be active for single-line input!
2356 # This should only be active for single-line input!
2350 if continue_prompt:
2357 if continue_prompt:
2351 self.log(line,line,continue_prompt)
2358 self.log(line,line,continue_prompt)
2352 return line
2359 return line
2353
2360
2354 auto_rewrite = True
2361 auto_rewrite = True
2355
2362
2356 if pre == self.ESC_QUOTE:
2363 if pre == self.ESC_QUOTE:
2357 # Auto-quote splitting on whitespace
2364 # Auto-quote splitting on whitespace
2358 newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) )
2365 newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) )
2359 elif pre == self.ESC_QUOTE2:
2366 elif pre == self.ESC_QUOTE2:
2360 # Auto-quote whole string
2367 # Auto-quote whole string
2361 newcmd = '%s("%s")' % (iFun,theRest)
2368 newcmd = '%s("%s")' % (iFun,theRest)
2362 elif pre == self.ESC_PAREN:
2369 elif pre == self.ESC_PAREN:
2363 newcmd = '%s(%s)' % (iFun,",".join(theRest.split()))
2370 newcmd = '%s(%s)' % (iFun,",".join(theRest.split()))
2364 else:
2371 else:
2365 # Auto-paren.
2372 # Auto-paren.
2366 # We only apply it to argument-less calls if the autocall
2373 # We only apply it to argument-less calls if the autocall
2367 # parameter is set to 2. We only need to check that autocall is <
2374 # parameter is set to 2. We only need to check that autocall is <
2368 # 2, since this function isn't called unless it's at least 1.
2375 # 2, since this function isn't called unless it's at least 1.
2369 if not theRest and (self.rc.autocall < 2):
2376 if not theRest and (self.rc.autocall < 2):
2370 newcmd = '%s %s' % (iFun,theRest)
2377 newcmd = '%s %s' % (iFun,theRest)
2371 auto_rewrite = False
2378 auto_rewrite = False
2372 else:
2379 else:
2373 if theRest.startswith('['):
2380 if theRest.startswith('['):
2374 if hasattr(obj,'__getitem__'):
2381 if hasattr(obj,'__getitem__'):
2375 # Don't autocall in this case: item access for an object
2382 # Don't autocall in this case: item access for an object
2376 # which is BOTH callable and implements __getitem__.
2383 # which is BOTH callable and implements __getitem__.
2377 newcmd = '%s %s' % (iFun,theRest)
2384 newcmd = '%s %s' % (iFun,theRest)
2378 auto_rewrite = False
2385 auto_rewrite = False
2379 else:
2386 else:
2380 # if the object doesn't support [] access, go ahead and
2387 # if the object doesn't support [] access, go ahead and
2381 # autocall
2388 # autocall
2382 newcmd = '%s(%s)' % (iFun.rstrip(),theRest)
2389 newcmd = '%s(%s)' % (iFun.rstrip(),theRest)
2383 elif theRest.endswith(';'):
2390 elif theRest.endswith(';'):
2384 newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1])
2391 newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1])
2385 else:
2392 else:
2386 newcmd = '%s(%s)' % (iFun.rstrip(), theRest)
2393 newcmd = '%s(%s)' % (iFun.rstrip(), theRest)
2387
2394
2388 if auto_rewrite:
2395 if auto_rewrite:
2389 print >>Term.cout, self.outputcache.prompt1.auto_rewrite() + newcmd
2396 print >>Term.cout, self.outputcache.prompt1.auto_rewrite() + newcmd
2390 # log what is now valid Python, not the actual user input (without the
2397 # log what is now valid Python, not the actual user input (without the
2391 # final newline)
2398 # final newline)
2392 self.log(line,newcmd,continue_prompt)
2399 self.log(line,newcmd,continue_prompt)
2393 return newcmd
2400 return newcmd
2394
2401
2395 def handle_help(self, line, continue_prompt=None,
2402 def handle_help(self, line, continue_prompt=None,
2396 pre=None,iFun=None,theRest=None):
2403 pre=None,iFun=None,theRest=None):
2397 """Try to get some help for the object.
2404 """Try to get some help for the object.
2398
2405
2399 obj? or ?obj -> basic information.
2406 obj? or ?obj -> basic information.
2400 obj?? or ??obj -> more details.
2407 obj?? or ??obj -> more details.
2401 """
2408 """
2402
2409
2403 # We need to make sure that we don't process lines which would be
2410 # We need to make sure that we don't process lines which would be
2404 # otherwise valid python, such as "x=1 # what?"
2411 # otherwise valid python, such as "x=1 # what?"
2405 try:
2412 try:
2406 codeop.compile_command(line)
2413 codeop.compile_command(line)
2407 except SyntaxError:
2414 except SyntaxError:
2408 # We should only handle as help stuff which is NOT valid syntax
2415 # We should only handle as help stuff which is NOT valid syntax
2409 if line[0]==self.ESC_HELP:
2416 if line[0]==self.ESC_HELP:
2410 line = line[1:]
2417 line = line[1:]
2411 elif line[-1]==self.ESC_HELP:
2418 elif line[-1]==self.ESC_HELP:
2412 line = line[:-1]
2419 line = line[:-1]
2413 self.log(line,'#?'+line,continue_prompt)
2420 self.log(line,'#?'+line,continue_prompt)
2414 if line:
2421 if line:
2415 #print 'line:<%r>' % line # dbg
2422 #print 'line:<%r>' % line # dbg
2416 self.magic_pinfo(line)
2423 self.magic_pinfo(line)
2417 else:
2424 else:
2418 page(self.usage,screen_lines=self.rc.screen_length)
2425 page(self.usage,screen_lines=self.rc.screen_length)
2419 return '' # Empty string is needed here!
2426 return '' # Empty string is needed here!
2420 except:
2427 except:
2421 # Pass any other exceptions through to the normal handler
2428 # Pass any other exceptions through to the normal handler
2422 return self.handle_normal(line,continue_prompt)
2429 return self.handle_normal(line,continue_prompt)
2423 else:
2430 else:
2424 # If the code compiles ok, we should handle it normally
2431 # If the code compiles ok, we should handle it normally
2425 return self.handle_normal(line,continue_prompt)
2432 return self.handle_normal(line,continue_prompt)
2426
2433
2427 def getapi(self):
2434 def getapi(self):
2428 """ Get an IPApi object for this shell instance
2435 """ Get an IPApi object for this shell instance
2429
2436
2430 Getting an IPApi object is always preferable to accessing the shell
2437 Getting an IPApi object is always preferable to accessing the shell
2431 directly, but this holds true especially for extensions.
2438 directly, but this holds true especially for extensions.
2432
2439
2433 It should always be possible to implement an extension with IPApi
2440 It should always be possible to implement an extension with IPApi
2434 alone. If not, contact maintainer to request an addition.
2441 alone. If not, contact maintainer to request an addition.
2435
2442
2436 """
2443 """
2437 return self.api
2444 return self.api
2438
2445
2439 def handle_emacs(self,line,continue_prompt=None,
2446 def handle_emacs(self,line,continue_prompt=None,
2440 pre=None,iFun=None,theRest=None):
2447 pre=None,iFun=None,theRest=None):
2441 """Handle input lines marked by python-mode."""
2448 """Handle input lines marked by python-mode."""
2442
2449
2443 # Currently, nothing is done. Later more functionality can be added
2450 # Currently, nothing is done. Later more functionality can be added
2444 # here if needed.
2451 # here if needed.
2445
2452
2446 # The input cache shouldn't be updated
2453 # The input cache shouldn't be updated
2447
2454
2448 return line
2455 return line
2449
2456
2450 def mktempfile(self,data=None):
2457 def mktempfile(self,data=None):
2451 """Make a new tempfile and return its filename.
2458 """Make a new tempfile and return its filename.
2452
2459
2453 This makes a call to tempfile.mktemp, but it registers the created
2460 This makes a call to tempfile.mktemp, but it registers the created
2454 filename internally so ipython cleans it up at exit time.
2461 filename internally so ipython cleans it up at exit time.
2455
2462
2456 Optional inputs:
2463 Optional inputs:
2457
2464
2458 - data(None): if data is given, it gets written out to the temp file
2465 - data(None): if data is given, it gets written out to the temp file
2459 immediately, and the file is closed again."""
2466 immediately, and the file is closed again."""
2460
2467
2461 filename = tempfile.mktemp('.py','ipython_edit_')
2468 filename = tempfile.mktemp('.py','ipython_edit_')
2462 self.tempfiles.append(filename)
2469 self.tempfiles.append(filename)
2463
2470
2464 if data:
2471 if data:
2465 tmp_file = open(filename,'w')
2472 tmp_file = open(filename,'w')
2466 tmp_file.write(data)
2473 tmp_file.write(data)
2467 tmp_file.close()
2474 tmp_file.close()
2468 return filename
2475 return filename
2469
2476
2470 def write(self,data):
2477 def write(self,data):
2471 """Write a string to the default output"""
2478 """Write a string to the default output"""
2472 Term.cout.write(data)
2479 Term.cout.write(data)
2473
2480
2474 def write_err(self,data):
2481 def write_err(self,data):
2475 """Write a string to the default error output"""
2482 """Write a string to the default error output"""
2476 Term.cerr.write(data)
2483 Term.cerr.write(data)
2477
2484
2478 def exit(self):
2485 def exit(self):
2479 """Handle interactive exit.
2486 """Handle interactive exit.
2480
2487
2481 This method sets the exit_now attribute."""
2488 This method sets the exit_now attribute."""
2482
2489
2483 if self.rc.confirm_exit:
2490 if self.rc.confirm_exit:
2484 if self.ask_yes_no('Do you really want to exit ([y]/n)?','y'):
2491 if self.ask_yes_no('Do you really want to exit ([y]/n)?','y'):
2485 self.exit_now = True
2492 self.exit_now = True
2486 else:
2493 else:
2487 self.exit_now = True
2494 self.exit_now = True
2488
2495
2489 def safe_execfile(self,fname,*where,**kw):
2496 def safe_execfile(self,fname,*where,**kw):
2490 """A safe version of the builtin execfile().
2497 """A safe version of the builtin execfile().
2491
2498
2492 This version will never throw an exception, and knows how to handle
2499 This version will never throw an exception, and knows how to handle
2493 ipython logs as well."""
2500 ipython logs as well."""
2494
2501
2495 def syspath_cleanup():
2502 def syspath_cleanup():
2496 """Internal cleanup routine for sys.path."""
2503 """Internal cleanup routine for sys.path."""
2497 if add_dname:
2504 if add_dname:
2498 try:
2505 try:
2499 sys.path.remove(dname)
2506 sys.path.remove(dname)
2500 except ValueError:
2507 except ValueError:
2501 # For some reason the user has already removed it, ignore.
2508 # For some reason the user has already removed it, ignore.
2502 pass
2509 pass
2503
2510
2504 fname = os.path.expanduser(fname)
2511 fname = os.path.expanduser(fname)
2505
2512
2506 # Find things also in current directory. This is needed to mimic the
2513 # Find things also in current directory. This is needed to mimic the
2507 # behavior of running a script from the system command line, where
2514 # behavior of running a script from the system command line, where
2508 # Python inserts the script's directory into sys.path
2515 # Python inserts the script's directory into sys.path
2509 dname = os.path.dirname(os.path.abspath(fname))
2516 dname = os.path.dirname(os.path.abspath(fname))
2510 add_dname = False
2517 add_dname = False
2511 if dname not in sys.path:
2518 if dname not in sys.path:
2512 sys.path.insert(0,dname)
2519 sys.path.insert(0,dname)
2513 add_dname = True
2520 add_dname = True
2514
2521
2515 try:
2522 try:
2516 xfile = open(fname)
2523 xfile = open(fname)
2517 except:
2524 except:
2518 print >> Term.cerr, \
2525 print >> Term.cerr, \
2519 'Could not open file <%s> for safe execution.' % fname
2526 'Could not open file <%s> for safe execution.' % fname
2520 syspath_cleanup()
2527 syspath_cleanup()
2521 return None
2528 return None
2522
2529
2523 kw.setdefault('islog',0)
2530 kw.setdefault('islog',0)
2524 kw.setdefault('quiet',1)
2531 kw.setdefault('quiet',1)
2525 kw.setdefault('exit_ignore',0)
2532 kw.setdefault('exit_ignore',0)
2526 first = xfile.readline()
2533 first = xfile.readline()
2527 loghead = str(self.loghead_tpl).split('\n',1)[0].strip()
2534 loghead = str(self.loghead_tpl).split('\n',1)[0].strip()
2528 xfile.close()
2535 xfile.close()
2529 # line by line execution
2536 # line by line execution
2530 if first.startswith(loghead) or kw['islog']:
2537 if first.startswith(loghead) or kw['islog']:
2531 print 'Loading log file <%s> one line at a time...' % fname
2538 print 'Loading log file <%s> one line at a time...' % fname
2532 if kw['quiet']:
2539 if kw['quiet']:
2533 stdout_save = sys.stdout
2540 stdout_save = sys.stdout
2534 sys.stdout = StringIO.StringIO()
2541 sys.stdout = StringIO.StringIO()
2535 try:
2542 try:
2536 globs,locs = where[0:2]
2543 globs,locs = where[0:2]
2537 except:
2544 except:
2538 try:
2545 try:
2539 globs = locs = where[0]
2546 globs = locs = where[0]
2540 except:
2547 except:
2541 globs = locs = globals()
2548 globs = locs = globals()
2542 badblocks = []
2549 badblocks = []
2543
2550
2544 # we also need to identify indented blocks of code when replaying
2551 # we also need to identify indented blocks of code when replaying
2545 # logs and put them together before passing them to an exec
2552 # logs and put them together before passing them to an exec
2546 # statement. This takes a bit of regexp and look-ahead work in the
2553 # statement. This takes a bit of regexp and look-ahead work in the
2547 # file. It's easiest if we swallow the whole thing in memory
2554 # file. It's easiest if we swallow the whole thing in memory
2548 # first, and manually walk through the lines list moving the
2555 # first, and manually walk through the lines list moving the
2549 # counter ourselves.
2556 # counter ourselves.
2550 indent_re = re.compile('\s+\S')
2557 indent_re = re.compile('\s+\S')
2551 xfile = open(fname)
2558 xfile = open(fname)
2552 filelines = xfile.readlines()
2559 filelines = xfile.readlines()
2553 xfile.close()
2560 xfile.close()
2554 nlines = len(filelines)
2561 nlines = len(filelines)
2555 lnum = 0
2562 lnum = 0
2556 while lnum < nlines:
2563 while lnum < nlines:
2557 line = filelines[lnum]
2564 line = filelines[lnum]
2558 lnum += 1
2565 lnum += 1
2559 # don't re-insert logger status info into cache
2566 # don't re-insert logger status info into cache
2560 if line.startswith('#log#'):
2567 if line.startswith('#log#'):
2561 continue
2568 continue
2562 else:
2569 else:
2563 # build a block of code (maybe a single line) for execution
2570 # build a block of code (maybe a single line) for execution
2564 block = line
2571 block = line
2565 try:
2572 try:
2566 next = filelines[lnum] # lnum has already incremented
2573 next = filelines[lnum] # lnum has already incremented
2567 except:
2574 except:
2568 next = None
2575 next = None
2569 while next and indent_re.match(next):
2576 while next and indent_re.match(next):
2570 block += next
2577 block += next
2571 lnum += 1
2578 lnum += 1
2572 try:
2579 try:
2573 next = filelines[lnum]
2580 next = filelines[lnum]
2574 except:
2581 except:
2575 next = None
2582 next = None
2576 # now execute the block of one or more lines
2583 # now execute the block of one or more lines
2577 try:
2584 try:
2578 exec block in globs,locs
2585 exec block in globs,locs
2579 except SystemExit:
2586 except SystemExit:
2580 pass
2587 pass
2581 except:
2588 except:
2582 badblocks.append(block.rstrip())
2589 badblocks.append(block.rstrip())
2583 if kw['quiet']: # restore stdout
2590 if kw['quiet']: # restore stdout
2584 sys.stdout.close()
2591 sys.stdout.close()
2585 sys.stdout = stdout_save
2592 sys.stdout = stdout_save
2586 print 'Finished replaying log file <%s>' % fname
2593 print 'Finished replaying log file <%s>' % fname
2587 if badblocks:
2594 if badblocks:
2588 print >> sys.stderr, ('\nThe following lines/blocks in file '
2595 print >> sys.stderr, ('\nThe following lines/blocks in file '
2589 '<%s> reported errors:' % fname)
2596 '<%s> reported errors:' % fname)
2590
2597
2591 for badline in badblocks:
2598 for badline in badblocks:
2592 print >> sys.stderr, badline
2599 print >> sys.stderr, badline
2593 else: # regular file execution
2600 else: # regular file execution
2594 try:
2601 try:
2595 if sys.platform == 'win32' and sys.version_info < (2,5,1):
2602 if sys.platform == 'win32' and sys.version_info < (2,5,1):
2596 # Work around a bug in Python for Windows. The bug was
2603 # Work around a bug in Python for Windows. The bug was
2597 # fixed in in Python 2.5 r54159 and 54158, but that's still
2604 # fixed in in Python 2.5 r54159 and 54158, but that's still
2598 # SVN Python as of March/07. For details, see:
2605 # SVN Python as of March/07. For details, see:
2599 # http://projects.scipy.org/ipython/ipython/ticket/123
2606 # http://projects.scipy.org/ipython/ipython/ticket/123
2600 try:
2607 try:
2601 globs,locs = where[0:2]
2608 globs,locs = where[0:2]
2602 except:
2609 except:
2603 try:
2610 try:
2604 globs = locs = where[0]
2611 globs = locs = where[0]
2605 except:
2612 except:
2606 globs = locs = globals()
2613 globs = locs = globals()
2607 exec file(fname) in globs,locs
2614 exec file(fname) in globs,locs
2608 else:
2615 else:
2609 execfile(fname,*where)
2616 execfile(fname,*where)
2610 except SyntaxError:
2617 except SyntaxError:
2611 self.showsyntaxerror()
2618 self.showsyntaxerror()
2612 warn('Failure executing file: <%s>' % fname)
2619 warn('Failure executing file: <%s>' % fname)
2613 except SystemExit,status:
2620 except SystemExit,status:
2614 if not kw['exit_ignore']:
2621 if not kw['exit_ignore']:
2615 self.showtraceback()
2622 self.showtraceback()
2616 warn('Failure executing file: <%s>' % fname)
2623 warn('Failure executing file: <%s>' % fname)
2617 except:
2624 except:
2618 self.showtraceback()
2625 self.showtraceback()
2619 warn('Failure executing file: <%s>' % fname)
2626 warn('Failure executing file: <%s>' % fname)
2620
2627
2621 syspath_cleanup()
2628 syspath_cleanup()
2622
2629
2623 #************************* end of file <iplib.py> *****************************
2630 #************************* end of file <iplib.py> *****************************
@@ -1,6627 +1,6631 b''
1 2007-04-30 Ville Vainio <vivainio@gmail.com>
2
3 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
4 user has illegal (non-ascii) home directory name
5
1 2007-04-27 Ville Vainio <vivainio@gmail.com>
6 2007-04-27 Ville Vainio <vivainio@gmail.com>
2
7
3 * platutils_win32.py: implement set_term_title for windows
8 * platutils_win32.py: implement set_term_title for windows
4
9
5 * Update version number
10 * Update version number
6
11
7 * ipy_profile_sh.py: more informative prompt (2 dir levels)
12 * ipy_profile_sh.py: more informative prompt (2 dir levels)
8
9
13
10 2007-04-26 Walter Doerwald <walter@livinglogic.de>
14 2007-04-26 Walter Doerwald <walter@livinglogic.de>
11
15
12 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
16 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
13 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
17 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
14 bug discovered by Ville).
18 bug discovered by Ville).
15
19
16 2007-04-26 Ville Vainio <vivainio@gmail.com>
20 2007-04-26 Ville Vainio <vivainio@gmail.com>
17
21
18 * Extensions/ipy_completers.py: Olivier's module completer now
22 * Extensions/ipy_completers.py: Olivier's module completer now
19 saves the list of root modules if it takes > 4 secs on the first run.
23 saves the list of root modules if it takes > 4 secs on the first run.
20
24
21 * Magic.py (%rehashx): %rehashx now clears the completer cache
25 * Magic.py (%rehashx): %rehashx now clears the completer cache
22
26
23
27
24 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
28 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
25
29
26 * ipython.el: fix incorrect color scheme, reported by Stefan.
30 * ipython.el: fix incorrect color scheme, reported by Stefan.
27 Closes #149.
31 Closes #149.
28
32
29 * IPython/PyColorize.py (Parser.format2): fix state-handling
33 * IPython/PyColorize.py (Parser.format2): fix state-handling
30 logic. I still don't like how that code handles state, but at
34 logic. I still don't like how that code handles state, but at
31 least now it should be correct, if inelegant. Closes #146.
35 least now it should be correct, if inelegant. Closes #146.
32
36
33 2007-04-25 Ville Vainio <vivainio@gmail.com>
37 2007-04-25 Ville Vainio <vivainio@gmail.com>
34
38
35 * Extensions/ipy_which.py: added extension for %which magic, works
39 * Extensions/ipy_which.py: added extension for %which magic, works
36 a lot like unix 'which' but also finds and expands aliases, and
40 a lot like unix 'which' but also finds and expands aliases, and
37 allows wildcards.
41 allows wildcards.
38
42
39 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
43 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
40 as opposed to returning nothing.
44 as opposed to returning nothing.
41
45
42 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
46 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
43 ipy_stock_completers on default profile, do import on sh profile.
47 ipy_stock_completers on default profile, do import on sh profile.
44
48
45 2007-04-22 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
49 2007-04-22 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
46
50
47 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
51 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
48 like ipython.py foo.py which raised a IndexError.
52 like ipython.py foo.py which raised a IndexError.
49
53
50 2007-04-21 Ville Vainio <vivainio@gmail.com>
54 2007-04-21 Ville Vainio <vivainio@gmail.com>
51
55
52 * Extensions/ipy_extutil.py: added extension to manage other ipython
56 * Extensions/ipy_extutil.py: added extension to manage other ipython
53 extensions. Now only supports 'ls' == list extensions.
57 extensions. Now only supports 'ls' == list extensions.
54
58
55 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
59 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
56
60
57 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
61 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
58 would prevent use of the exception system outside of a running
62 would prevent use of the exception system outside of a running
59 IPython instance.
63 IPython instance.
60
64
61 2007-04-20 Ville Vainio <vivainio@gmail.com>
65 2007-04-20 Ville Vainio <vivainio@gmail.com>
62
66
63 * Extensions/ipy_render.py: added extension for easy
67 * Extensions/ipy_render.py: added extension for easy
64 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
68 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
65 'Iptl' template notation,
69 'Iptl' template notation,
66
70
67 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
71 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
68 safer & faster 'import' completer.
72 safer & faster 'import' completer.
69
73
70 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
74 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
71 and _ip.defalias(name, command).
75 and _ip.defalias(name, command).
72
76
73 * Extensions/ipy_exportdb.py: New extension for exporting all the
77 * Extensions/ipy_exportdb.py: New extension for exporting all the
74 %store'd data in a portable format (normal ipapi calls like
78 %store'd data in a portable format (normal ipapi calls like
75 defmacro() etc.)
79 defmacro() etc.)
76
80
77 2007-04-19 Ville Vainio <vivainio@gmail.com>
81 2007-04-19 Ville Vainio <vivainio@gmail.com>
78
82
79 * upgrade_dir.py: skip junk files like *.pyc
83 * upgrade_dir.py: skip junk files like *.pyc
80
84
81 * Release.py: version number to 0.8.1
85 * Release.py: version number to 0.8.1
82
86
83 2007-04-18 Ville Vainio <vivainio@gmail.com>
87 2007-04-18 Ville Vainio <vivainio@gmail.com>
84
88
85 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
89 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
86 and later on win32.
90 and later on win32.
87
91
88 2007-04-16 Ville Vainio <vivainio@gmail.com>
92 2007-04-16 Ville Vainio <vivainio@gmail.com>
89
93
90 * iplib.py (showtraceback): Do not crash when running w/o readline.
94 * iplib.py (showtraceback): Do not crash when running w/o readline.
91
95
92 2007-04-12 Walter Doerwald <walter@livinglogic.de>
96 2007-04-12 Walter Doerwald <walter@livinglogic.de>
93
97
94 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
98 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
95 sorted (case sensitive with files and dirs mixed).
99 sorted (case sensitive with files and dirs mixed).
96
100
97 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
101 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
98
102
99 * IPython/Release.py (version): Open trunk for 0.8.1 development.
103 * IPython/Release.py (version): Open trunk for 0.8.1 development.
100
104
101 2007-04-10 *** Released version 0.8.0
105 2007-04-10 *** Released version 0.8.0
102
106
103 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
107 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
104
108
105 * Tag 0.8.0 for release.
109 * Tag 0.8.0 for release.
106
110
107 * IPython/iplib.py (reloadhist): add API function to cleanly
111 * IPython/iplib.py (reloadhist): add API function to cleanly
108 reload the readline history, which was growing inappropriately on
112 reload the readline history, which was growing inappropriately on
109 every %run call.
113 every %run call.
110
114
111 * win32_manual_post_install.py (run): apply last part of Nicolas
115 * win32_manual_post_install.py (run): apply last part of Nicolas
112 Pernetty's patch (I'd accidentally applied it in a different
116 Pernetty's patch (I'd accidentally applied it in a different
113 directory and this particular file didn't get patched).
117 directory and this particular file didn't get patched).
114
118
115 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
119 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
116
120
117 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
121 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
118 find the main thread id and use the proper API call. Thanks to
122 find the main thread id and use the proper API call. Thanks to
119 Stefan for the fix.
123 Stefan for the fix.
120
124
121 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
125 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
122 unit tests to reflect fixed ticket #52, and add more tests sent by
126 unit tests to reflect fixed ticket #52, and add more tests sent by
123 him.
127 him.
124
128
125 * IPython/iplib.py (raw_input): restore the readline completer
129 * IPython/iplib.py (raw_input): restore the readline completer
126 state on every input, in case third-party code messed it up.
130 state on every input, in case third-party code messed it up.
127 (_prefilter): revert recent addition of early-escape checks which
131 (_prefilter): revert recent addition of early-escape checks which
128 prevent many valid alias calls from working.
132 prevent many valid alias calls from working.
129
133
130 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
134 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
131 flag for sigint handler so we don't run a full signal() call on
135 flag for sigint handler so we don't run a full signal() call on
132 each runcode access.
136 each runcode access.
133
137
134 * IPython/Magic.py (magic_whos): small improvement to diagnostic
138 * IPython/Magic.py (magic_whos): small improvement to diagnostic
135 message.
139 message.
136
140
137 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
141 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
138
142
139 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
143 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
140 asynchronous exceptions working, i.e., Ctrl-C can actually
144 asynchronous exceptions working, i.e., Ctrl-C can actually
141 interrupt long-running code in the multithreaded shells.
145 interrupt long-running code in the multithreaded shells.
142
146
143 This is using Tomer Filiba's great ctypes-based trick:
147 This is using Tomer Filiba's great ctypes-based trick:
144 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
148 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
145 this in the past, but hadn't been able to make it work before. So
149 this in the past, but hadn't been able to make it work before. So
146 far it looks like it's actually running, but this needs more
150 far it looks like it's actually running, but this needs more
147 testing. If it really works, I'll be *very* happy, and we'll owe
151 testing. If it really works, I'll be *very* happy, and we'll owe
148 a huge thank you to Tomer. My current implementation is ugly,
152 a huge thank you to Tomer. My current implementation is ugly,
149 hackish and uses nasty globals, but I don't want to try and clean
153 hackish and uses nasty globals, but I don't want to try and clean
150 anything up until we know if it actually works.
154 anything up until we know if it actually works.
151
155
152 NOTE: this feature needs ctypes to work. ctypes is included in
156 NOTE: this feature needs ctypes to work. ctypes is included in
153 Python2.5, but 2.4 users will need to manually install it. This
157 Python2.5, but 2.4 users will need to manually install it. This
154 feature makes multi-threaded shells so much more usable that it's
158 feature makes multi-threaded shells so much more usable that it's
155 a minor price to pay (ctypes is very easy to install, already a
159 a minor price to pay (ctypes is very easy to install, already a
156 requirement for win32 and available in major linux distros).
160 requirement for win32 and available in major linux distros).
157
161
158 2007-04-04 Ville Vainio <vivainio@gmail.com>
162 2007-04-04 Ville Vainio <vivainio@gmail.com>
159
163
160 * Extensions/ipy_completers.py, ipy_stock_completers.py:
164 * Extensions/ipy_completers.py, ipy_stock_completers.py:
161 Moved implementations of 'bundled' completers to ipy_completers.py,
165 Moved implementations of 'bundled' completers to ipy_completers.py,
162 they are only enabled in ipy_stock_completers.py.
166 they are only enabled in ipy_stock_completers.py.
163
167
164 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
168 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
165
169
166 * IPython/PyColorize.py (Parser.format2): Fix identation of
170 * IPython/PyColorize.py (Parser.format2): Fix identation of
167 colorzied output and return early if color scheme is NoColor, to
171 colorzied output and return early if color scheme is NoColor, to
168 avoid unnecessary and expensive tokenization. Closes #131.
172 avoid unnecessary and expensive tokenization. Closes #131.
169
173
170 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
174 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
171
175
172 * IPython/Debugger.py: disable the use of pydb version 1.17. It
176 * IPython/Debugger.py: disable the use of pydb version 1.17. It
173 has a critical bug (a missing import that makes post-mortem not
177 has a critical bug (a missing import that makes post-mortem not
174 work at all). Unfortunately as of this time, this is the version
178 work at all). Unfortunately as of this time, this is the version
175 shipped with Ubuntu Edgy, so quite a few people have this one. I
179 shipped with Ubuntu Edgy, so quite a few people have this one. I
176 hope Edgy will update to a more recent package.
180 hope Edgy will update to a more recent package.
177
181
178 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
182 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
179
183
180 * IPython/iplib.py (_prefilter): close #52, second part of a patch
184 * IPython/iplib.py (_prefilter): close #52, second part of a patch
181 set by Stefan (only the first part had been applied before).
185 set by Stefan (only the first part had been applied before).
182
186
183 * IPython/Extensions/ipy_stock_completers.py (module_completer):
187 * IPython/Extensions/ipy_stock_completers.py (module_completer):
184 remove usage of the dangerous pkgutil.walk_packages(). See
188 remove usage of the dangerous pkgutil.walk_packages(). See
185 details in comments left in the code.
189 details in comments left in the code.
186
190
187 * IPython/Magic.py (magic_whos): add support for numpy arrays
191 * IPython/Magic.py (magic_whos): add support for numpy arrays
188 similar to what we had for Numeric.
192 similar to what we had for Numeric.
189
193
190 * IPython/completer.py (IPCompleter.complete): extend the
194 * IPython/completer.py (IPCompleter.complete): extend the
191 complete() call API to support completions by other mechanisms
195 complete() call API to support completions by other mechanisms
192 than readline. Closes #109.
196 than readline. Closes #109.
193
197
194 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
198 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
195 protect against a bug in Python's execfile(). Closes #123.
199 protect against a bug in Python's execfile(). Closes #123.
196
200
197 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
201 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
198
202
199 * IPython/iplib.py (split_user_input): ensure that when splitting
203 * IPython/iplib.py (split_user_input): ensure that when splitting
200 user input, the part that can be treated as a python name is pure
204 user input, the part that can be treated as a python name is pure
201 ascii (Python identifiers MUST be pure ascii). Part of the
205 ascii (Python identifiers MUST be pure ascii). Part of the
202 ongoing Unicode support work.
206 ongoing Unicode support work.
203
207
204 * IPython/Prompts.py (prompt_specials_color): Add \N for the
208 * IPython/Prompts.py (prompt_specials_color): Add \N for the
205 actual prompt number, without any coloring. This allows users to
209 actual prompt number, without any coloring. This allows users to
206 produce numbered prompts with their own colors. Added after a
210 produce numbered prompts with their own colors. Added after a
207 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
211 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
208
212
209 2007-03-31 Walter Doerwald <walter@livinglogic.de>
213 2007-03-31 Walter Doerwald <walter@livinglogic.de>
210
214
211 * IPython/Extensions/igrid.py: Map the return key
215 * IPython/Extensions/igrid.py: Map the return key
212 to enter() and shift-return to enterattr().
216 to enter() and shift-return to enterattr().
213
217
214 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
218 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
215
219
216 * IPython/Magic.py (magic_psearch): add unicode support by
220 * IPython/Magic.py (magic_psearch): add unicode support by
217 encoding to ascii the input, since this routine also only deals
221 encoding to ascii the input, since this routine also only deals
218 with valid Python names. Fixes a bug reported by Stefan.
222 with valid Python names. Fixes a bug reported by Stefan.
219
223
220 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
224 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
221
225
222 * IPython/Magic.py (_inspect): convert unicode input into ascii
226 * IPython/Magic.py (_inspect): convert unicode input into ascii
223 before trying to evaluate it as a Python identifier. This fixes a
227 before trying to evaluate it as a Python identifier. This fixes a
224 problem that the new unicode support had introduced when analyzing
228 problem that the new unicode support had introduced when analyzing
225 long definition lines for functions.
229 long definition lines for functions.
226
230
227 2007-03-24 Walter Doerwald <walter@livinglogic.de>
231 2007-03-24 Walter Doerwald <walter@livinglogic.de>
228
232
229 * IPython/Extensions/igrid.py: Fix picking. Using
233 * IPython/Extensions/igrid.py: Fix picking. Using
230 igrid with wxPython 2.6 and -wthread should work now.
234 igrid with wxPython 2.6 and -wthread should work now.
231 igrid.display() simply tries to create a frame without
235 igrid.display() simply tries to create a frame without
232 an application. Only if this fails an application is created.
236 an application. Only if this fails an application is created.
233
237
234 2007-03-23 Walter Doerwald <walter@livinglogic.de>
238 2007-03-23 Walter Doerwald <walter@livinglogic.de>
235
239
236 * IPython/Extensions/path.py: Updated to version 2.2.
240 * IPython/Extensions/path.py: Updated to version 2.2.
237
241
238 2007-03-23 Ville Vainio <vivainio@gmail.com>
242 2007-03-23 Ville Vainio <vivainio@gmail.com>
239
243
240 * iplib.py: recursive alias expansion now works better, so that
244 * iplib.py: recursive alias expansion now works better, so that
241 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
245 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
242 doesn't trip up the process, if 'd' has been aliased to 'ls'.
246 doesn't trip up the process, if 'd' has been aliased to 'ls'.
243
247
244 * Extensions/ipy_gnuglobal.py added, provides %global magic
248 * Extensions/ipy_gnuglobal.py added, provides %global magic
245 for users of http://www.gnu.org/software/global
249 for users of http://www.gnu.org/software/global
246
250
247 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
251 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
248 Closes #52. Patch by Stefan van der Walt.
252 Closes #52. Patch by Stefan van der Walt.
249
253
250 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
254 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
251
255
252 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
256 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
253 respect the __file__ attribute when using %run. Thanks to a bug
257 respect the __file__ attribute when using %run. Thanks to a bug
254 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
258 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
255
259
256 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
260 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
257
261
258 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
262 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
259 input. Patch sent by Stefan.
263 input. Patch sent by Stefan.
260
264
261 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
265 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
262 * IPython/Extensions/ipy_stock_completer.py
266 * IPython/Extensions/ipy_stock_completer.py
263 shlex_split, fix bug in shlex_split. len function
267 shlex_split, fix bug in shlex_split. len function
264 call was missing an if statement. Caused shlex_split to
268 call was missing an if statement. Caused shlex_split to
265 sometimes return "" as last element.
269 sometimes return "" as last element.
266
270
267 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
271 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
268
272
269 * IPython/completer.py
273 * IPython/completer.py
270 (IPCompleter.file_matches.single_dir_expand): fix a problem
274 (IPCompleter.file_matches.single_dir_expand): fix a problem
271 reported by Stefan, where directories containign a single subdir
275 reported by Stefan, where directories containign a single subdir
272 would be completed too early.
276 would be completed too early.
273
277
274 * IPython/Shell.py (_load_pylab): Make the execution of 'from
278 * IPython/Shell.py (_load_pylab): Make the execution of 'from
275 pylab import *' when -pylab is given be optional. A new flag,
279 pylab import *' when -pylab is given be optional. A new flag,
276 pylab_import_all controls this behavior, the default is True for
280 pylab_import_all controls this behavior, the default is True for
277 backwards compatibility.
281 backwards compatibility.
278
282
279 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
283 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
280 modified) R. Bernstein's patch for fully syntax highlighted
284 modified) R. Bernstein's patch for fully syntax highlighted
281 tracebacks. The functionality is also available under ultraTB for
285 tracebacks. The functionality is also available under ultraTB for
282 non-ipython users (someone using ultraTB but outside an ipython
286 non-ipython users (someone using ultraTB but outside an ipython
283 session). They can select the color scheme by setting the
287 session). They can select the color scheme by setting the
284 module-level global DEFAULT_SCHEME. The highlight functionality
288 module-level global DEFAULT_SCHEME. The highlight functionality
285 also works when debugging.
289 also works when debugging.
286
290
287 * IPython/genutils.py (IOStream.close): small patch by
291 * IPython/genutils.py (IOStream.close): small patch by
288 R. Bernstein for improved pydb support.
292 R. Bernstein for improved pydb support.
289
293
290 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
294 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
291 DaveS <davls@telus.net> to improve support of debugging under
295 DaveS <davls@telus.net> to improve support of debugging under
292 NTEmacs, including improved pydb behavior.
296 NTEmacs, including improved pydb behavior.
293
297
294 * IPython/Magic.py (magic_prun): Fix saving of profile info for
298 * IPython/Magic.py (magic_prun): Fix saving of profile info for
295 Python 2.5, where the stats object API changed a little. Thanks
299 Python 2.5, where the stats object API changed a little. Thanks
296 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
300 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
297
301
298 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
302 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
299 Pernetty's patch to improve support for (X)Emacs under Win32.
303 Pernetty's patch to improve support for (X)Emacs under Win32.
300
304
301 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
305 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
302
306
303 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
307 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
304 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
308 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
305 a report by Nik Tautenhahn.
309 a report by Nik Tautenhahn.
306
310
307 2007-03-16 Walter Doerwald <walter@livinglogic.de>
311 2007-03-16 Walter Doerwald <walter@livinglogic.de>
308
312
309 * setup.py: Add the igrid help files to the list of data files
313 * setup.py: Add the igrid help files to the list of data files
310 to be installed alongside igrid.
314 to be installed alongside igrid.
311 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
315 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
312 Show the input object of the igrid browser as the window tile.
316 Show the input object of the igrid browser as the window tile.
313 Show the object the cursor is on in the statusbar.
317 Show the object the cursor is on in the statusbar.
314
318
315 2007-03-15 Ville Vainio <vivainio@gmail.com>
319 2007-03-15 Ville Vainio <vivainio@gmail.com>
316
320
317 * Extensions/ipy_stock_completers.py: Fixed exception
321 * Extensions/ipy_stock_completers.py: Fixed exception
318 on mismatching quotes in %run completer. Patch by
322 on mismatching quotes in %run completer. Patch by
319 JοΏ½rgen Stenarson. Closes #127.
323 JοΏ½rgen Stenarson. Closes #127.
320
324
321 2007-03-14 Ville Vainio <vivainio@gmail.com>
325 2007-03-14 Ville Vainio <vivainio@gmail.com>
322
326
323 * Extensions/ext_rehashdir.py: Do not do auto_alias
327 * Extensions/ext_rehashdir.py: Do not do auto_alias
324 in %rehashdir, it clobbers %store'd aliases.
328 in %rehashdir, it clobbers %store'd aliases.
325
329
326 * UserConfig/ipy_profile_sh.py: envpersist.py extension
330 * UserConfig/ipy_profile_sh.py: envpersist.py extension
327 (beefed up %env) imported for sh profile.
331 (beefed up %env) imported for sh profile.
328
332
329 2007-03-10 Walter Doerwald <walter@livinglogic.de>
333 2007-03-10 Walter Doerwald <walter@livinglogic.de>
330
334
331 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
335 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
332 as the default browser.
336 as the default browser.
333 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
337 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
334 As igrid displays all attributes it ever encounters, fetch() (which has
338 As igrid displays all attributes it ever encounters, fetch() (which has
335 been renamed to _fetch()) doesn't have to recalculate the display attributes
339 been renamed to _fetch()) doesn't have to recalculate the display attributes
336 every time a new item is fetched. This should speed up scrolling.
340 every time a new item is fetched. This should speed up scrolling.
337
341
338 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
342 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
339
343
340 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
344 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
341 Schmolck's recently reported tab-completion bug (my previous one
345 Schmolck's recently reported tab-completion bug (my previous one
342 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
346 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
343
347
344 2007-03-09 Walter Doerwald <walter@livinglogic.de>
348 2007-03-09 Walter Doerwald <walter@livinglogic.de>
345
349
346 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
350 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
347 Close help window if exiting igrid.
351 Close help window if exiting igrid.
348
352
349 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
353 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
350
354
351 * IPython/Extensions/ipy_defaults.py: Check if readline is available
355 * IPython/Extensions/ipy_defaults.py: Check if readline is available
352 before calling functions from readline.
356 before calling functions from readline.
353
357
354 2007-03-02 Walter Doerwald <walter@livinglogic.de>
358 2007-03-02 Walter Doerwald <walter@livinglogic.de>
355
359
356 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
360 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
357 igrid is a wxPython-based display object for ipipe. If your system has
361 igrid is a wxPython-based display object for ipipe. If your system has
358 wx installed igrid will be the default display. Without wx ipipe falls
362 wx installed igrid will be the default display. Without wx ipipe falls
359 back to ibrowse (which needs curses). If no curses is installed ipipe
363 back to ibrowse (which needs curses). If no curses is installed ipipe
360 falls back to idump.
364 falls back to idump.
361
365
362 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
366 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
363
367
364 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
368 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
365 my changes from yesterday, they introduced bugs. Will reactivate
369 my changes from yesterday, they introduced bugs. Will reactivate
366 once I get a correct solution, which will be much easier thanks to
370 once I get a correct solution, which will be much easier thanks to
367 Dan Milstein's new prefilter test suite.
371 Dan Milstein's new prefilter test suite.
368
372
369 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
373 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
370
374
371 * IPython/iplib.py (split_user_input): fix input splitting so we
375 * IPython/iplib.py (split_user_input): fix input splitting so we
372 don't attempt attribute accesses on things that can't possibly be
376 don't attempt attribute accesses on things that can't possibly be
373 valid Python attributes. After a bug report by Alex Schmolck.
377 valid Python attributes. After a bug report by Alex Schmolck.
374 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
378 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
375 %magic with explicit % prefix.
379 %magic with explicit % prefix.
376
380
377 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
381 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
378
382
379 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
383 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
380 avoid a DeprecationWarning from GTK.
384 avoid a DeprecationWarning from GTK.
381
385
382 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
386 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
383
387
384 * IPython/genutils.py (clock): I modified clock() to return total
388 * IPython/genutils.py (clock): I modified clock() to return total
385 time, user+system. This is a more commonly needed metric. I also
389 time, user+system. This is a more commonly needed metric. I also
386 introduced the new clocku/clocks to get only user/system time if
390 introduced the new clocku/clocks to get only user/system time if
387 one wants those instead.
391 one wants those instead.
388
392
389 ***WARNING: API CHANGE*** clock() used to return only user time,
393 ***WARNING: API CHANGE*** clock() used to return only user time,
390 so if you want exactly the same results as before, use clocku
394 so if you want exactly the same results as before, use clocku
391 instead.
395 instead.
392
396
393 2007-02-22 Ville Vainio <vivainio@gmail.com>
397 2007-02-22 Ville Vainio <vivainio@gmail.com>
394
398
395 * IPython/Extensions/ipy_p4.py: Extension for improved
399 * IPython/Extensions/ipy_p4.py: Extension for improved
396 p4 (perforce version control system) experience.
400 p4 (perforce version control system) experience.
397 Adds %p4 magic with p4 command completion and
401 Adds %p4 magic with p4 command completion and
398 automatic -G argument (marshall output as python dict)
402 automatic -G argument (marshall output as python dict)
399
403
400 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
404 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
401
405
402 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
406 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
403 stop marks.
407 stop marks.
404 (ClearingMixin): a simple mixin to easily make a Demo class clear
408 (ClearingMixin): a simple mixin to easily make a Demo class clear
405 the screen in between blocks and have empty marquees. The
409 the screen in between blocks and have empty marquees. The
406 ClearDemo and ClearIPDemo classes that use it are included.
410 ClearDemo and ClearIPDemo classes that use it are included.
407
411
408 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
412 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
409
413
410 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
414 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
411 protect against exceptions at Python shutdown time. Patch
415 protect against exceptions at Python shutdown time. Patch
412 sumbmitted to upstream.
416 sumbmitted to upstream.
413
417
414 2007-02-14 Walter Doerwald <walter@livinglogic.de>
418 2007-02-14 Walter Doerwald <walter@livinglogic.de>
415
419
416 * IPython/Extensions/ibrowse.py: If entering the first object level
420 * IPython/Extensions/ibrowse.py: If entering the first object level
417 (i.e. the object for which the browser has been started) fails,
421 (i.e. the object for which the browser has been started) fails,
418 now the error is raised directly (aborting the browser) instead of
422 now the error is raised directly (aborting the browser) instead of
419 running into an empty levels list later.
423 running into an empty levels list later.
420
424
421 2007-02-03 Walter Doerwald <walter@livinglogic.de>
425 2007-02-03 Walter Doerwald <walter@livinglogic.de>
422
426
423 * IPython/Extensions/ipipe.py: Add an xrepr implementation
427 * IPython/Extensions/ipipe.py: Add an xrepr implementation
424 for the noitem object.
428 for the noitem object.
425
429
426 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
430 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
427
431
428 * IPython/completer.py (Completer.attr_matches): Fix small
432 * IPython/completer.py (Completer.attr_matches): Fix small
429 tab-completion bug with Enthought Traits objects with units.
433 tab-completion bug with Enthought Traits objects with units.
430 Thanks to a bug report by Tom Denniston
434 Thanks to a bug report by Tom Denniston
431 <tom.denniston-AT-alum.dartmouth.org>.
435 <tom.denniston-AT-alum.dartmouth.org>.
432
436
433 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
437 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
434
438
435 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
439 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
436 bug where only .ipy or .py would be completed. Once the first
440 bug where only .ipy or .py would be completed. Once the first
437 argument to %run has been given, all completions are valid because
441 argument to %run has been given, all completions are valid because
438 they are the arguments to the script, which may well be non-python
442 they are the arguments to the script, which may well be non-python
439 filenames.
443 filenames.
440
444
441 * IPython/irunner.py (InteractiveRunner.run_source): major updates
445 * IPython/irunner.py (InteractiveRunner.run_source): major updates
442 to irunner to allow it to correctly support real doctesting of
446 to irunner to allow it to correctly support real doctesting of
443 out-of-process ipython code.
447 out-of-process ipython code.
444
448
445 * IPython/Magic.py (magic_cd): Make the setting of the terminal
449 * IPython/Magic.py (magic_cd): Make the setting of the terminal
446 title an option (-noterm_title) because it completely breaks
450 title an option (-noterm_title) because it completely breaks
447 doctesting.
451 doctesting.
448
452
449 * IPython/demo.py: fix IPythonDemo class that was not actually working.
453 * IPython/demo.py: fix IPythonDemo class that was not actually working.
450
454
451 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
455 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
452
456
453 * IPython/irunner.py (main): fix small bug where extensions were
457 * IPython/irunner.py (main): fix small bug where extensions were
454 not being correctly recognized.
458 not being correctly recognized.
455
459
456 2007-01-23 Walter Doerwald <walter@livinglogic.de>
460 2007-01-23 Walter Doerwald <walter@livinglogic.de>
457
461
458 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
462 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
459 a string containing a single line yields the string itself as the
463 a string containing a single line yields the string itself as the
460 only item.
464 only item.
461
465
462 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
466 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
463 object if it's the same as the one on the last level (This avoids
467 object if it's the same as the one on the last level (This avoids
464 infinite recursion for one line strings).
468 infinite recursion for one line strings).
465
469
466 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
470 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
467
471
468 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
472 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
469 all output streams before printing tracebacks. This ensures that
473 all output streams before printing tracebacks. This ensures that
470 user output doesn't end up interleaved with traceback output.
474 user output doesn't end up interleaved with traceback output.
471
475
472 2007-01-10 Ville Vainio <vivainio@gmail.com>
476 2007-01-10 Ville Vainio <vivainio@gmail.com>
473
477
474 * Extensions/envpersist.py: Turbocharged %env that remembers
478 * Extensions/envpersist.py: Turbocharged %env that remembers
475 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
479 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
476 "%env VISUAL=jed".
480 "%env VISUAL=jed".
477
481
478 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
482 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
479
483
480 * IPython/iplib.py (showtraceback): ensure that we correctly call
484 * IPython/iplib.py (showtraceback): ensure that we correctly call
481 custom handlers in all cases (some with pdb were slipping through,
485 custom handlers in all cases (some with pdb were slipping through,
482 but I'm not exactly sure why).
486 but I'm not exactly sure why).
483
487
484 * IPython/Debugger.py (Tracer.__init__): added new class to
488 * IPython/Debugger.py (Tracer.__init__): added new class to
485 support set_trace-like usage of IPython's enhanced debugger.
489 support set_trace-like usage of IPython's enhanced debugger.
486
490
487 2006-12-24 Ville Vainio <vivainio@gmail.com>
491 2006-12-24 Ville Vainio <vivainio@gmail.com>
488
492
489 * ipmaker.py: more informative message when ipy_user_conf
493 * ipmaker.py: more informative message when ipy_user_conf
490 import fails (suggest running %upgrade).
494 import fails (suggest running %upgrade).
491
495
492 * tools/run_ipy_in_profiler.py: Utility to see where
496 * tools/run_ipy_in_profiler.py: Utility to see where
493 the time during IPython startup is spent.
497 the time during IPython startup is spent.
494
498
495 2006-12-20 Ville Vainio <vivainio@gmail.com>
499 2006-12-20 Ville Vainio <vivainio@gmail.com>
496
500
497 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
501 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
498
502
499 * ipapi.py: Add new ipapi method, expand_alias.
503 * ipapi.py: Add new ipapi method, expand_alias.
500
504
501 * Release.py: Bump up version to 0.7.4.svn
505 * Release.py: Bump up version to 0.7.4.svn
502
506
503 2006-12-17 Ville Vainio <vivainio@gmail.com>
507 2006-12-17 Ville Vainio <vivainio@gmail.com>
504
508
505 * Extensions/jobctrl.py: Fixed &cmd arg arg...
509 * Extensions/jobctrl.py: Fixed &cmd arg arg...
506 to work properly on posix too
510 to work properly on posix too
507
511
508 * Release.py: Update revnum (version is still just 0.7.3).
512 * Release.py: Update revnum (version is still just 0.7.3).
509
513
510 2006-12-15 Ville Vainio <vivainio@gmail.com>
514 2006-12-15 Ville Vainio <vivainio@gmail.com>
511
515
512 * scripts/ipython_win_post_install: create ipython.py in
516 * scripts/ipython_win_post_install: create ipython.py in
513 prefix + "/scripts".
517 prefix + "/scripts".
514
518
515 * Release.py: Update version to 0.7.3.
519 * Release.py: Update version to 0.7.3.
516
520
517 2006-12-14 Ville Vainio <vivainio@gmail.com>
521 2006-12-14 Ville Vainio <vivainio@gmail.com>
518
522
519 * scripts/ipython_win_post_install: Overwrite old shortcuts
523 * scripts/ipython_win_post_install: Overwrite old shortcuts
520 if they already exist
524 if they already exist
521
525
522 * Release.py: release 0.7.3rc2
526 * Release.py: release 0.7.3rc2
523
527
524 2006-12-13 Ville Vainio <vivainio@gmail.com>
528 2006-12-13 Ville Vainio <vivainio@gmail.com>
525
529
526 * Branch and update Release.py for 0.7.3rc1
530 * Branch and update Release.py for 0.7.3rc1
527
531
528 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
532 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
529
533
530 * IPython/Shell.py (IPShellWX): update for current WX naming
534 * IPython/Shell.py (IPShellWX): update for current WX naming
531 conventions, to avoid a deprecation warning with current WX
535 conventions, to avoid a deprecation warning with current WX
532 versions. Thanks to a report by Danny Shevitz.
536 versions. Thanks to a report by Danny Shevitz.
533
537
534 2006-12-12 Ville Vainio <vivainio@gmail.com>
538 2006-12-12 Ville Vainio <vivainio@gmail.com>
535
539
536 * ipmaker.py: apply david cournapeau's patch to make
540 * ipmaker.py: apply david cournapeau's patch to make
537 import_some work properly even when ipythonrc does
541 import_some work properly even when ipythonrc does
538 import_some on empty list (it was an old bug!).
542 import_some on empty list (it was an old bug!).
539
543
540 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
544 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
541 Add deprecation note to ipythonrc and a url to wiki
545 Add deprecation note to ipythonrc and a url to wiki
542 in ipy_user_conf.py
546 in ipy_user_conf.py
543
547
544
548
545 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
549 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
546 as if it was typed on IPython command prompt, i.e.
550 as if it was typed on IPython command prompt, i.e.
547 as IPython script.
551 as IPython script.
548
552
549 * example-magic.py, magic_grepl.py: remove outdated examples
553 * example-magic.py, magic_grepl.py: remove outdated examples
550
554
551 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
555 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
552
556
553 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
557 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
554 is called before any exception has occurred.
558 is called before any exception has occurred.
555
559
556 2006-12-08 Ville Vainio <vivainio@gmail.com>
560 2006-12-08 Ville Vainio <vivainio@gmail.com>
557
561
558 * Extensions/ipy_stock_completers.py: fix cd completer
562 * Extensions/ipy_stock_completers.py: fix cd completer
559 to translate /'s to \'s again.
563 to translate /'s to \'s again.
560
564
561 * completer.py: prevent traceback on file completions w/
565 * completer.py: prevent traceback on file completions w/
562 backslash.
566 backslash.
563
567
564 * Release.py: Update release number to 0.7.3b3 for release
568 * Release.py: Update release number to 0.7.3b3 for release
565
569
566 2006-12-07 Ville Vainio <vivainio@gmail.com>
570 2006-12-07 Ville Vainio <vivainio@gmail.com>
567
571
568 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
572 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
569 while executing external code. Provides more shell-like behaviour
573 while executing external code. Provides more shell-like behaviour
570 and overall better response to ctrl + C / ctrl + break.
574 and overall better response to ctrl + C / ctrl + break.
571
575
572 * tools/make_tarball.py: new script to create tarball straight from svn
576 * tools/make_tarball.py: new script to create tarball straight from svn
573 (setup.py sdist doesn't work on win32).
577 (setup.py sdist doesn't work on win32).
574
578
575 * Extensions/ipy_stock_completers.py: fix cd completer to give up
579 * Extensions/ipy_stock_completers.py: fix cd completer to give up
576 on dirnames with spaces and use the default completer instead.
580 on dirnames with spaces and use the default completer instead.
577
581
578 * Revision.py: Change version to 0.7.3b2 for release.
582 * Revision.py: Change version to 0.7.3b2 for release.
579
583
580 2006-12-05 Ville Vainio <vivainio@gmail.com>
584 2006-12-05 Ville Vainio <vivainio@gmail.com>
581
585
582 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
586 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
583 pydb patch 4 (rm debug printing, py 2.5 checking)
587 pydb patch 4 (rm debug printing, py 2.5 checking)
584
588
585 2006-11-30 Walter Doerwald <walter@livinglogic.de>
589 2006-11-30 Walter Doerwald <walter@livinglogic.de>
586 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
590 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
587 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
591 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
588 "refreshfind" (mapped to "R") does the same but tries to go back to the same
592 "refreshfind" (mapped to "R") does the same but tries to go back to the same
589 object the cursor was on before the refresh. The command "markrange" is
593 object the cursor was on before the refresh. The command "markrange" is
590 mapped to "%" now.
594 mapped to "%" now.
591 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
595 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
592
596
593 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
597 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
594
598
595 * IPython/Magic.py (magic_debug): new %debug magic to activate the
599 * IPython/Magic.py (magic_debug): new %debug magic to activate the
596 interactive debugger on the last traceback, without having to call
600 interactive debugger on the last traceback, without having to call
597 %pdb and rerun your code. Made minor changes in various modules,
601 %pdb and rerun your code. Made minor changes in various modules,
598 should automatically recognize pydb if available.
602 should automatically recognize pydb if available.
599
603
600 2006-11-28 Ville Vainio <vivainio@gmail.com>
604 2006-11-28 Ville Vainio <vivainio@gmail.com>
601
605
602 * completer.py: If the text start with !, show file completions
606 * completer.py: If the text start with !, show file completions
603 properly. This helps when trying to complete command name
607 properly. This helps when trying to complete command name
604 for shell escapes.
608 for shell escapes.
605
609
606 2006-11-27 Ville Vainio <vivainio@gmail.com>
610 2006-11-27 Ville Vainio <vivainio@gmail.com>
607
611
608 * ipy_stock_completers.py: bzr completer submitted by Stefan van
612 * ipy_stock_completers.py: bzr completer submitted by Stefan van
609 der Walt. Clean up svn and hg completers by using a common
613 der Walt. Clean up svn and hg completers by using a common
610 vcs_completer.
614 vcs_completer.
611
615
612 2006-11-26 Ville Vainio <vivainio@gmail.com>
616 2006-11-26 Ville Vainio <vivainio@gmail.com>
613
617
614 * Remove ipconfig and %config; you should use _ip.options structure
618 * Remove ipconfig and %config; you should use _ip.options structure
615 directly instead!
619 directly instead!
616
620
617 * genutils.py: add wrap_deprecated function for deprecating callables
621 * genutils.py: add wrap_deprecated function for deprecating callables
618
622
619 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
623 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
620 _ip.system instead. ipalias is redundant.
624 _ip.system instead. ipalias is redundant.
621
625
622 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
626 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
623 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
627 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
624 explicit.
628 explicit.
625
629
626 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
630 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
627 completer. Try it by entering 'hg ' and pressing tab.
631 completer. Try it by entering 'hg ' and pressing tab.
628
632
629 * macro.py: Give Macro a useful __repr__ method
633 * macro.py: Give Macro a useful __repr__ method
630
634
631 * Magic.py: %whos abbreviates the typename of Macro for brevity.
635 * Magic.py: %whos abbreviates the typename of Macro for brevity.
632
636
633 2006-11-24 Walter Doerwald <walter@livinglogic.de>
637 2006-11-24 Walter Doerwald <walter@livinglogic.de>
634 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
638 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
635 we don't get a duplicate ipipe module, where registration of the xrepr
639 we don't get a duplicate ipipe module, where registration of the xrepr
636 implementation for Text is useless.
640 implementation for Text is useless.
637
641
638 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
642 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
639
643
640 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
644 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
641
645
642 2006-11-24 Ville Vainio <vivainio@gmail.com>
646 2006-11-24 Ville Vainio <vivainio@gmail.com>
643
647
644 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
648 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
645 try to use "cProfile" instead of the slower pure python
649 try to use "cProfile" instead of the slower pure python
646 "profile"
650 "profile"
647
651
648 2006-11-23 Ville Vainio <vivainio@gmail.com>
652 2006-11-23 Ville Vainio <vivainio@gmail.com>
649
653
650 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
654 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
651 Qt+IPython+Designer link in documentation.
655 Qt+IPython+Designer link in documentation.
652
656
653 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
657 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
654 correct Pdb object to %pydb.
658 correct Pdb object to %pydb.
655
659
656
660
657 2006-11-22 Walter Doerwald <walter@livinglogic.de>
661 2006-11-22 Walter Doerwald <walter@livinglogic.de>
658 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
662 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
659 generic xrepr(), otherwise the list implementation would kick in.
663 generic xrepr(), otherwise the list implementation would kick in.
660
664
661 2006-11-21 Ville Vainio <vivainio@gmail.com>
665 2006-11-21 Ville Vainio <vivainio@gmail.com>
662
666
663 * upgrade_dir.py: Now actually overwrites a nonmodified user file
667 * upgrade_dir.py: Now actually overwrites a nonmodified user file
664 with one from UserConfig.
668 with one from UserConfig.
665
669
666 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
670 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
667 it was missing which broke the sh profile.
671 it was missing which broke the sh profile.
668
672
669 * completer.py: file completer now uses explicit '/' instead
673 * completer.py: file completer now uses explicit '/' instead
670 of os.path.join, expansion of 'foo' was broken on win32
674 of os.path.join, expansion of 'foo' was broken on win32
671 if there was one directory with name 'foobar'.
675 if there was one directory with name 'foobar'.
672
676
673 * A bunch of patches from Kirill Smelkov:
677 * A bunch of patches from Kirill Smelkov:
674
678
675 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
679 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
676
680
677 * [patch 7/9] Implement %page -r (page in raw mode) -
681 * [patch 7/9] Implement %page -r (page in raw mode) -
678
682
679 * [patch 5/9] ScientificPython webpage has moved
683 * [patch 5/9] ScientificPython webpage has moved
680
684
681 * [patch 4/9] The manual mentions %ds, should be %dhist
685 * [patch 4/9] The manual mentions %ds, should be %dhist
682
686
683 * [patch 3/9] Kill old bits from %prun doc.
687 * [patch 3/9] Kill old bits from %prun doc.
684
688
685 * [patch 1/9] Fix typos here and there.
689 * [patch 1/9] Fix typos here and there.
686
690
687 2006-11-08 Ville Vainio <vivainio@gmail.com>
691 2006-11-08 Ville Vainio <vivainio@gmail.com>
688
692
689 * completer.py (attr_matches): catch all exceptions raised
693 * completer.py (attr_matches): catch all exceptions raised
690 by eval of expr with dots.
694 by eval of expr with dots.
691
695
692 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
696 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
693
697
694 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
698 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
695 input if it starts with whitespace. This allows you to paste
699 input if it starts with whitespace. This allows you to paste
696 indented input from any editor without manually having to type in
700 indented input from any editor without manually having to type in
697 the 'if 1:', which is convenient when working interactively.
701 the 'if 1:', which is convenient when working interactively.
698 Slightly modifed version of a patch by Bo Peng
702 Slightly modifed version of a patch by Bo Peng
699 <bpeng-AT-rice.edu>.
703 <bpeng-AT-rice.edu>.
700
704
701 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
705 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
702
706
703 * IPython/irunner.py (main): modified irunner so it automatically
707 * IPython/irunner.py (main): modified irunner so it automatically
704 recognizes the right runner to use based on the extension (.py for
708 recognizes the right runner to use based on the extension (.py for
705 python, .ipy for ipython and .sage for sage).
709 python, .ipy for ipython and .sage for sage).
706
710
707 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
711 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
708 visible in ipapi as ip.config(), to programatically control the
712 visible in ipapi as ip.config(), to programatically control the
709 internal rc object. There's an accompanying %config magic for
713 internal rc object. There's an accompanying %config magic for
710 interactive use, which has been enhanced to match the
714 interactive use, which has been enhanced to match the
711 funtionality in ipconfig.
715 funtionality in ipconfig.
712
716
713 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
717 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
714 so it's not just a toggle, it now takes an argument. Add support
718 so it's not just a toggle, it now takes an argument. Add support
715 for a customizable header when making system calls, as the new
719 for a customizable header when making system calls, as the new
716 system_header variable in the ipythonrc file.
720 system_header variable in the ipythonrc file.
717
721
718 2006-11-03 Walter Doerwald <walter@livinglogic.de>
722 2006-11-03 Walter Doerwald <walter@livinglogic.de>
719
723
720 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
724 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
721 generic functions (using Philip J. Eby's simplegeneric package).
725 generic functions (using Philip J. Eby's simplegeneric package).
722 This makes it possible to customize the display of third-party classes
726 This makes it possible to customize the display of third-party classes
723 without having to monkeypatch them. xiter() no longer supports a mode
727 without having to monkeypatch them. xiter() no longer supports a mode
724 argument and the XMode class has been removed. The same functionality can
728 argument and the XMode class has been removed. The same functionality can
725 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
729 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
726 One consequence of the switch to generic functions is that xrepr() and
730 One consequence of the switch to generic functions is that xrepr() and
727 xattrs() implementation must define the default value for the mode
731 xattrs() implementation must define the default value for the mode
728 argument themselves and xattrs() implementations must return real
732 argument themselves and xattrs() implementations must return real
729 descriptors.
733 descriptors.
730
734
731 * IPython/external: This new subpackage will contain all third-party
735 * IPython/external: This new subpackage will contain all third-party
732 packages that are bundled with IPython. (The first one is simplegeneric).
736 packages that are bundled with IPython. (The first one is simplegeneric).
733
737
734 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
738 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
735 directory which as been dropped in r1703.
739 directory which as been dropped in r1703.
736
740
737 * IPython/Extensions/ipipe.py (iless): Fixed.
741 * IPython/Extensions/ipipe.py (iless): Fixed.
738
742
739 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
743 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
740
744
741 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
745 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
742
746
743 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
747 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
744 handling in variable expansion so that shells and magics recognize
748 handling in variable expansion so that shells and magics recognize
745 function local scopes correctly. Bug reported by Brian.
749 function local scopes correctly. Bug reported by Brian.
746
750
747 * scripts/ipython: remove the very first entry in sys.path which
751 * scripts/ipython: remove the very first entry in sys.path which
748 Python auto-inserts for scripts, so that sys.path under IPython is
752 Python auto-inserts for scripts, so that sys.path under IPython is
749 as similar as possible to that under plain Python.
753 as similar as possible to that under plain Python.
750
754
751 * IPython/completer.py (IPCompleter.file_matches): Fix
755 * IPython/completer.py (IPCompleter.file_matches): Fix
752 tab-completion so that quotes are not closed unless the completion
756 tab-completion so that quotes are not closed unless the completion
753 is unambiguous. After a request by Stefan. Minor cleanups in
757 is unambiguous. After a request by Stefan. Minor cleanups in
754 ipy_stock_completers.
758 ipy_stock_completers.
755
759
756 2006-11-02 Ville Vainio <vivainio@gmail.com>
760 2006-11-02 Ville Vainio <vivainio@gmail.com>
757
761
758 * ipy_stock_completers.py: Add %run and %cd completers.
762 * ipy_stock_completers.py: Add %run and %cd completers.
759
763
760 * completer.py: Try running custom completer for both
764 * completer.py: Try running custom completer for both
761 "foo" and "%foo" if the command is just "foo". Ignore case
765 "foo" and "%foo" if the command is just "foo". Ignore case
762 when filtering possible completions.
766 when filtering possible completions.
763
767
764 * UserConfig/ipy_user_conf.py: install stock completers as default
768 * UserConfig/ipy_user_conf.py: install stock completers as default
765
769
766 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
770 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
767 simplified readline history save / restore through a wrapper
771 simplified readline history save / restore through a wrapper
768 function
772 function
769
773
770
774
771 2006-10-31 Ville Vainio <vivainio@gmail.com>
775 2006-10-31 Ville Vainio <vivainio@gmail.com>
772
776
773 * strdispatch.py, completer.py, ipy_stock_completers.py:
777 * strdispatch.py, completer.py, ipy_stock_completers.py:
774 Allow str_key ("command") in completer hooks. Implement
778 Allow str_key ("command") in completer hooks. Implement
775 trivial completer for 'import' (stdlib modules only). Rename
779 trivial completer for 'import' (stdlib modules only). Rename
776 ipy_linux_package_managers.py to ipy_stock_completers.py.
780 ipy_linux_package_managers.py to ipy_stock_completers.py.
777 SVN completer.
781 SVN completer.
778
782
779 * Extensions/ledit.py: %magic line editor for easily and
783 * Extensions/ledit.py: %magic line editor for easily and
780 incrementally manipulating lists of strings. The magic command
784 incrementally manipulating lists of strings. The magic command
781 name is %led.
785 name is %led.
782
786
783 2006-10-30 Ville Vainio <vivainio@gmail.com>
787 2006-10-30 Ville Vainio <vivainio@gmail.com>
784
788
785 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
789 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
786 Bernsteins's patches for pydb integration.
790 Bernsteins's patches for pydb integration.
787 http://bashdb.sourceforge.net/pydb/
791 http://bashdb.sourceforge.net/pydb/
788
792
789 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
793 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
790 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
794 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
791 custom completer hook to allow the users to implement their own
795 custom completer hook to allow the users to implement their own
792 completers. See ipy_linux_package_managers.py for example. The
796 completers. See ipy_linux_package_managers.py for example. The
793 hook name is 'complete_command'.
797 hook name is 'complete_command'.
794
798
795 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
799 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
796
800
797 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
801 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
798 Numeric leftovers.
802 Numeric leftovers.
799
803
800 * ipython.el (py-execute-region): apply Stefan's patch to fix
804 * ipython.el (py-execute-region): apply Stefan's patch to fix
801 garbled results if the python shell hasn't been previously started.
805 garbled results if the python shell hasn't been previously started.
802
806
803 * IPython/genutils.py (arg_split): moved to genutils, since it's a
807 * IPython/genutils.py (arg_split): moved to genutils, since it's a
804 pretty generic function and useful for other things.
808 pretty generic function and useful for other things.
805
809
806 * IPython/OInspect.py (getsource): Add customizable source
810 * IPython/OInspect.py (getsource): Add customizable source
807 extractor. After a request/patch form W. Stein (SAGE).
811 extractor. After a request/patch form W. Stein (SAGE).
808
812
809 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
813 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
810 window size to a more reasonable value from what pexpect does,
814 window size to a more reasonable value from what pexpect does,
811 since their choice causes wrapping bugs with long input lines.
815 since their choice causes wrapping bugs with long input lines.
812
816
813 2006-10-28 Ville Vainio <vivainio@gmail.com>
817 2006-10-28 Ville Vainio <vivainio@gmail.com>
814
818
815 * Magic.py (%run): Save and restore the readline history from
819 * Magic.py (%run): Save and restore the readline history from
816 file around %run commands to prevent side effects from
820 file around %run commands to prevent side effects from
817 %runned programs that might use readline (e.g. pydb).
821 %runned programs that might use readline (e.g. pydb).
818
822
819 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
823 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
820 invoking the pydb enhanced debugger.
824 invoking the pydb enhanced debugger.
821
825
822 2006-10-23 Walter Doerwald <walter@livinglogic.de>
826 2006-10-23 Walter Doerwald <walter@livinglogic.de>
823
827
824 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
828 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
825 call the base class method and propagate the return value to
829 call the base class method and propagate the return value to
826 ifile. This is now done by path itself.
830 ifile. This is now done by path itself.
827
831
828 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
832 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
829
833
830 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
834 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
831 api: set_crash_handler(), to expose the ability to change the
835 api: set_crash_handler(), to expose the ability to change the
832 internal crash handler.
836 internal crash handler.
833
837
834 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
838 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
835 the various parameters of the crash handler so that apps using
839 the various parameters of the crash handler so that apps using
836 IPython as their engine can customize crash handling. Ipmlemented
840 IPython as their engine can customize crash handling. Ipmlemented
837 at the request of SAGE.
841 at the request of SAGE.
838
842
839 2006-10-14 Ville Vainio <vivainio@gmail.com>
843 2006-10-14 Ville Vainio <vivainio@gmail.com>
840
844
841 * Magic.py, ipython.el: applied first "safe" part of Rocky
845 * Magic.py, ipython.el: applied first "safe" part of Rocky
842 Bernstein's patch set for pydb integration.
846 Bernstein's patch set for pydb integration.
843
847
844 * Magic.py (%unalias, %alias): %store'd aliases can now be
848 * Magic.py (%unalias, %alias): %store'd aliases can now be
845 removed with '%unalias'. %alias w/o args now shows most
849 removed with '%unalias'. %alias w/o args now shows most
846 interesting (stored / manually defined) aliases last
850 interesting (stored / manually defined) aliases last
847 where they catch the eye w/o scrolling.
851 where they catch the eye w/o scrolling.
848
852
849 * Magic.py (%rehashx), ext_rehashdir.py: files with
853 * Magic.py (%rehashx), ext_rehashdir.py: files with
850 'py' extension are always considered executable, even
854 'py' extension are always considered executable, even
851 when not in PATHEXT environment variable.
855 when not in PATHEXT environment variable.
852
856
853 2006-10-12 Ville Vainio <vivainio@gmail.com>
857 2006-10-12 Ville Vainio <vivainio@gmail.com>
854
858
855 * jobctrl.py: Add new "jobctrl" extension for spawning background
859 * jobctrl.py: Add new "jobctrl" extension for spawning background
856 processes with "&find /". 'import jobctrl' to try it out. Requires
860 processes with "&find /". 'import jobctrl' to try it out. Requires
857 'subprocess' module, standard in python 2.4+.
861 'subprocess' module, standard in python 2.4+.
858
862
859 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
863 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
860 so if foo -> bar and bar -> baz, then foo -> baz.
864 so if foo -> bar and bar -> baz, then foo -> baz.
861
865
862 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
866 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
863
867
864 * IPython/Magic.py (Magic.parse_options): add a new posix option
868 * IPython/Magic.py (Magic.parse_options): add a new posix option
865 to allow parsing of input args in magics that doesn't strip quotes
869 to allow parsing of input args in magics that doesn't strip quotes
866 (if posix=False). This also closes %timeit bug reported by
870 (if posix=False). This also closes %timeit bug reported by
867 Stefan.
871 Stefan.
868
872
869 2006-10-03 Ville Vainio <vivainio@gmail.com>
873 2006-10-03 Ville Vainio <vivainio@gmail.com>
870
874
871 * iplib.py (raw_input, interact): Return ValueError catching for
875 * iplib.py (raw_input, interact): Return ValueError catching for
872 raw_input. Fixes infinite loop for sys.stdin.close() or
876 raw_input. Fixes infinite loop for sys.stdin.close() or
873 sys.stdout.close().
877 sys.stdout.close().
874
878
875 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
879 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
876
880
877 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
881 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
878 to help in handling doctests. irunner is now pretty useful for
882 to help in handling doctests. irunner is now pretty useful for
879 running standalone scripts and simulate a full interactive session
883 running standalone scripts and simulate a full interactive session
880 in a format that can be then pasted as a doctest.
884 in a format that can be then pasted as a doctest.
881
885
882 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
886 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
883 on top of the default (useless) ones. This also fixes the nasty
887 on top of the default (useless) ones. This also fixes the nasty
884 way in which 2.5's Quitter() exits (reverted [1785]).
888 way in which 2.5's Quitter() exits (reverted [1785]).
885
889
886 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
890 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
887 2.5.
891 2.5.
888
892
889 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
893 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
890 color scheme is updated as well when color scheme is changed
894 color scheme is updated as well when color scheme is changed
891 interactively.
895 interactively.
892
896
893 2006-09-27 Ville Vainio <vivainio@gmail.com>
897 2006-09-27 Ville Vainio <vivainio@gmail.com>
894
898
895 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
899 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
896 infinite loop and just exit. It's a hack, but will do for a while.
900 infinite loop and just exit. It's a hack, but will do for a while.
897
901
898 2006-08-25 Walter Doerwald <walter@livinglogic.de>
902 2006-08-25 Walter Doerwald <walter@livinglogic.de>
899
903
900 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
904 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
901 the constructor, this makes it possible to get a list of only directories
905 the constructor, this makes it possible to get a list of only directories
902 or only files.
906 or only files.
903
907
904 2006-08-12 Ville Vainio <vivainio@gmail.com>
908 2006-08-12 Ville Vainio <vivainio@gmail.com>
905
909
906 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
910 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
907 they broke unittest
911 they broke unittest
908
912
909 2006-08-11 Ville Vainio <vivainio@gmail.com>
913 2006-08-11 Ville Vainio <vivainio@gmail.com>
910
914
911 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
915 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
912 by resolving issue properly, i.e. by inheriting FakeModule
916 by resolving issue properly, i.e. by inheriting FakeModule
913 from types.ModuleType. Pickling ipython interactive data
917 from types.ModuleType. Pickling ipython interactive data
914 should still work as usual (testing appreciated).
918 should still work as usual (testing appreciated).
915
919
916 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
920 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
917
921
918 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
922 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
919 running under python 2.3 with code from 2.4 to fix a bug with
923 running under python 2.3 with code from 2.4 to fix a bug with
920 help(). Reported by the Debian maintainers, Norbert Tretkowski
924 help(). Reported by the Debian maintainers, Norbert Tretkowski
921 <norbert-AT-tretkowski.de> and Alexandre Fayolle
925 <norbert-AT-tretkowski.de> and Alexandre Fayolle
922 <afayolle-AT-debian.org>.
926 <afayolle-AT-debian.org>.
923
927
924 2006-08-04 Walter Doerwald <walter@livinglogic.de>
928 2006-08-04 Walter Doerwald <walter@livinglogic.de>
925
929
926 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
930 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
927 (which was displaying "quit" twice).
931 (which was displaying "quit" twice).
928
932
929 2006-07-28 Walter Doerwald <walter@livinglogic.de>
933 2006-07-28 Walter Doerwald <walter@livinglogic.de>
930
934
931 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
935 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
932 the mode argument).
936 the mode argument).
933
937
934 2006-07-27 Walter Doerwald <walter@livinglogic.de>
938 2006-07-27 Walter Doerwald <walter@livinglogic.de>
935
939
936 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
940 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
937 not running under IPython.
941 not running under IPython.
938
942
939 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
943 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
940 and make it iterable (iterating over the attribute itself). Add two new
944 and make it iterable (iterating over the attribute itself). Add two new
941 magic strings for __xattrs__(): If the string starts with "-", the attribute
945 magic strings for __xattrs__(): If the string starts with "-", the attribute
942 will not be displayed in ibrowse's detail view (but it can still be
946 will not be displayed in ibrowse's detail view (but it can still be
943 iterated over). This makes it possible to add attributes that are large
947 iterated over). This makes it possible to add attributes that are large
944 lists or generator methods to the detail view. Replace magic attribute names
948 lists or generator methods to the detail view. Replace magic attribute names
945 and _attrname() and _getattr() with "descriptors": For each type of magic
949 and _attrname() and _getattr() with "descriptors": For each type of magic
946 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
950 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
947 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
951 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
948 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
952 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
949 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
953 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
950 are still supported.
954 are still supported.
951
955
952 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
956 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
953 fails in ibrowse.fetch(), the exception object is added as the last item
957 fails in ibrowse.fetch(), the exception object is added as the last item
954 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
958 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
955 a generator throws an exception midway through execution.
959 a generator throws an exception midway through execution.
956
960
957 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
961 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
958 encoding into methods.
962 encoding into methods.
959
963
960 2006-07-26 Ville Vainio <vivainio@gmail.com>
964 2006-07-26 Ville Vainio <vivainio@gmail.com>
961
965
962 * iplib.py: history now stores multiline input as single
966 * iplib.py: history now stores multiline input as single
963 history entries. Patch by Jorgen Cederlof.
967 history entries. Patch by Jorgen Cederlof.
964
968
965 2006-07-18 Walter Doerwald <walter@livinglogic.de>
969 2006-07-18 Walter Doerwald <walter@livinglogic.de>
966
970
967 * IPython/Extensions/ibrowse.py: Make cursor visible over
971 * IPython/Extensions/ibrowse.py: Make cursor visible over
968 non existing attributes.
972 non existing attributes.
969
973
970 2006-07-14 Walter Doerwald <walter@livinglogic.de>
974 2006-07-14 Walter Doerwald <walter@livinglogic.de>
971
975
972 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
976 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
973 error output of the running command doesn't mess up the screen.
977 error output of the running command doesn't mess up the screen.
974
978
975 2006-07-13 Walter Doerwald <walter@livinglogic.de>
979 2006-07-13 Walter Doerwald <walter@livinglogic.de>
976
980
977 * IPython/Extensions/ipipe.py (isort): Make isort usable without
981 * IPython/Extensions/ipipe.py (isort): Make isort usable without
978 argument. This sorts the items themselves.
982 argument. This sorts the items themselves.
979
983
980 2006-07-12 Walter Doerwald <walter@livinglogic.de>
984 2006-07-12 Walter Doerwald <walter@livinglogic.de>
981
985
982 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
986 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
983 Compile expression strings into code objects. This should speed
987 Compile expression strings into code objects. This should speed
984 up ifilter and friends somewhat.
988 up ifilter and friends somewhat.
985
989
986 2006-07-08 Ville Vainio <vivainio@gmail.com>
990 2006-07-08 Ville Vainio <vivainio@gmail.com>
987
991
988 * Magic.py: %cpaste now strips > from the beginning of lines
992 * Magic.py: %cpaste now strips > from the beginning of lines
989 to ease pasting quoted code from emails. Contributed by
993 to ease pasting quoted code from emails. Contributed by
990 Stefan van der Walt.
994 Stefan van der Walt.
991
995
992 2006-06-29 Ville Vainio <vivainio@gmail.com>
996 2006-06-29 Ville Vainio <vivainio@gmail.com>
993
997
994 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
998 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
995 mode, patch contributed by Darren Dale. NEEDS TESTING!
999 mode, patch contributed by Darren Dale. NEEDS TESTING!
996
1000
997 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1001 2006-06-28 Walter Doerwald <walter@livinglogic.de>
998
1002
999 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1003 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1000 a blue background. Fix fetching new display rows when the browser
1004 a blue background. Fix fetching new display rows when the browser
1001 scrolls more than a screenful (e.g. by using the goto command).
1005 scrolls more than a screenful (e.g. by using the goto command).
1002
1006
1003 2006-06-27 Ville Vainio <vivainio@gmail.com>
1007 2006-06-27 Ville Vainio <vivainio@gmail.com>
1004
1008
1005 * Magic.py (_inspect, _ofind) Apply David Huard's
1009 * Magic.py (_inspect, _ofind) Apply David Huard's
1006 patch for displaying the correct docstring for 'property'
1010 patch for displaying the correct docstring for 'property'
1007 attributes.
1011 attributes.
1008
1012
1009 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1013 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1010
1014
1011 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1015 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1012 commands into the methods implementing them.
1016 commands into the methods implementing them.
1013
1017
1014 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1018 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1015
1019
1016 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1020 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1017 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1021 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1018 autoindent support was authored by Jin Liu.
1022 autoindent support was authored by Jin Liu.
1019
1023
1020 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1024 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1021
1025
1022 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1026 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1023 for keymaps with a custom class that simplifies handling.
1027 for keymaps with a custom class that simplifies handling.
1024
1028
1025 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1029 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1026
1030
1027 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1031 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1028 resizing. This requires Python 2.5 to work.
1032 resizing. This requires Python 2.5 to work.
1029
1033
1030 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1034 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1031
1035
1032 * IPython/Extensions/ibrowse.py: Add two new commands to
1036 * IPython/Extensions/ibrowse.py: Add two new commands to
1033 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1037 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1034 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1038 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1035 attributes again. Remapped the help command to "?". Display
1039 attributes again. Remapped the help command to "?". Display
1036 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1040 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1037 as keys for the "home" and "end" commands. Add three new commands
1041 as keys for the "home" and "end" commands. Add three new commands
1038 to the input mode for "find" and friends: "delend" (CTRL-K)
1042 to the input mode for "find" and friends: "delend" (CTRL-K)
1039 deletes to the end of line. "incsearchup" searches upwards in the
1043 deletes to the end of line. "incsearchup" searches upwards in the
1040 command history for an input that starts with the text before the cursor.
1044 command history for an input that starts with the text before the cursor.
1041 "incsearchdown" does the same downwards. Removed a bogus mapping of
1045 "incsearchdown" does the same downwards. Removed a bogus mapping of
1042 the x key to "delete".
1046 the x key to "delete".
1043
1047
1044 2006-06-15 Ville Vainio <vivainio@gmail.com>
1048 2006-06-15 Ville Vainio <vivainio@gmail.com>
1045
1049
1046 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1050 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1047 used to create prompts dynamically, instead of the "old" way of
1051 used to create prompts dynamically, instead of the "old" way of
1048 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1052 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1049 way still works (it's invoked by the default hook), of course.
1053 way still works (it's invoked by the default hook), of course.
1050
1054
1051 * Prompts.py: added generate_output_prompt hook for altering output
1055 * Prompts.py: added generate_output_prompt hook for altering output
1052 prompt
1056 prompt
1053
1057
1054 * Release.py: Changed version string to 0.7.3.svn.
1058 * Release.py: Changed version string to 0.7.3.svn.
1055
1059
1056 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1060 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1057
1061
1058 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1062 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1059 the call to fetch() always tries to fetch enough data for at least one
1063 the call to fetch() always tries to fetch enough data for at least one
1060 full screen. This makes it possible to simply call moveto(0,0,True) in
1064 full screen. This makes it possible to simply call moveto(0,0,True) in
1061 the constructor. Fix typos and removed the obsolete goto attribute.
1065 the constructor. Fix typos and removed the obsolete goto attribute.
1062
1066
1063 2006-06-12 Ville Vainio <vivainio@gmail.com>
1067 2006-06-12 Ville Vainio <vivainio@gmail.com>
1064
1068
1065 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1069 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1066 allowing $variable interpolation within multiline statements,
1070 allowing $variable interpolation within multiline statements,
1067 though so far only with "sh" profile for a testing period.
1071 though so far only with "sh" profile for a testing period.
1068 The patch also enables splitting long commands with \ but it
1072 The patch also enables splitting long commands with \ but it
1069 doesn't work properly yet.
1073 doesn't work properly yet.
1070
1074
1071 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1075 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1072
1076
1073 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1077 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1074 input history and the position of the cursor in the input history for
1078 input history and the position of the cursor in the input history for
1075 the find, findbackwards and goto command.
1079 the find, findbackwards and goto command.
1076
1080
1077 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1081 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1078
1082
1079 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1083 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1080 implements the basic functionality of browser commands that require
1084 implements the basic functionality of browser commands that require
1081 input. Reimplement the goto, find and findbackwards commands as
1085 input. Reimplement the goto, find and findbackwards commands as
1082 subclasses of _CommandInput. Add an input history and keymaps to those
1086 subclasses of _CommandInput. Add an input history and keymaps to those
1083 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1087 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1084 execute commands.
1088 execute commands.
1085
1089
1086 2006-06-07 Ville Vainio <vivainio@gmail.com>
1090 2006-06-07 Ville Vainio <vivainio@gmail.com>
1087
1091
1088 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1092 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1089 running the batch files instead of leaving the session open.
1093 running the batch files instead of leaving the session open.
1090
1094
1091 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1095 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1092
1096
1093 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1097 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1094 the original fix was incomplete. Patch submitted by W. Maier.
1098 the original fix was incomplete. Patch submitted by W. Maier.
1095
1099
1096 2006-06-07 Ville Vainio <vivainio@gmail.com>
1100 2006-06-07 Ville Vainio <vivainio@gmail.com>
1097
1101
1098 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1102 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1099 Confirmation prompts can be supressed by 'quiet' option.
1103 Confirmation prompts can be supressed by 'quiet' option.
1100 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1104 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1101
1105
1102 2006-06-06 *** Released version 0.7.2
1106 2006-06-06 *** Released version 0.7.2
1103
1107
1104 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1108 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1105
1109
1106 * IPython/Release.py (version): Made 0.7.2 final for release.
1110 * IPython/Release.py (version): Made 0.7.2 final for release.
1107 Repo tagged and release cut.
1111 Repo tagged and release cut.
1108
1112
1109 2006-06-05 Ville Vainio <vivainio@gmail.com>
1113 2006-06-05 Ville Vainio <vivainio@gmail.com>
1110
1114
1111 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1115 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1112 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1116 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1113
1117
1114 * upgrade_dir.py: try import 'path' module a bit harder
1118 * upgrade_dir.py: try import 'path' module a bit harder
1115 (for %upgrade)
1119 (for %upgrade)
1116
1120
1117 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1121 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1118
1122
1119 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1123 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1120 instead of looping 20 times.
1124 instead of looping 20 times.
1121
1125
1122 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1126 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1123 correctly at initialization time. Bug reported by Krishna Mohan
1127 correctly at initialization time. Bug reported by Krishna Mohan
1124 Gundu <gkmohan-AT-gmail.com> on the user list.
1128 Gundu <gkmohan-AT-gmail.com> on the user list.
1125
1129
1126 * IPython/Release.py (version): Mark 0.7.2 version to start
1130 * IPython/Release.py (version): Mark 0.7.2 version to start
1127 testing for release on 06/06.
1131 testing for release on 06/06.
1128
1132
1129 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1133 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1130
1134
1131 * scripts/irunner: thin script interface so users don't have to
1135 * scripts/irunner: thin script interface so users don't have to
1132 find the module and call it as an executable, since modules rarely
1136 find the module and call it as an executable, since modules rarely
1133 live in people's PATH.
1137 live in people's PATH.
1134
1138
1135 * IPython/irunner.py (InteractiveRunner.__init__): added
1139 * IPython/irunner.py (InteractiveRunner.__init__): added
1136 delaybeforesend attribute to control delays with newer versions of
1140 delaybeforesend attribute to control delays with newer versions of
1137 pexpect. Thanks to detailed help from pexpect's author, Noah
1141 pexpect. Thanks to detailed help from pexpect's author, Noah
1138 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1142 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1139 correctly (it works in NoColor mode).
1143 correctly (it works in NoColor mode).
1140
1144
1141 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1145 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1142 SAGE list, from improper log() calls.
1146 SAGE list, from improper log() calls.
1143
1147
1144 2006-05-31 Ville Vainio <vivainio@gmail.com>
1148 2006-05-31 Ville Vainio <vivainio@gmail.com>
1145
1149
1146 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1150 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1147 with args in parens to work correctly with dirs that have spaces.
1151 with args in parens to work correctly with dirs that have spaces.
1148
1152
1149 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1153 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1150
1154
1151 * IPython/Logger.py (Logger.logstart): add option to log raw input
1155 * IPython/Logger.py (Logger.logstart): add option to log raw input
1152 instead of the processed one. A -r flag was added to the
1156 instead of the processed one. A -r flag was added to the
1153 %logstart magic used for controlling logging.
1157 %logstart magic used for controlling logging.
1154
1158
1155 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1159 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1156
1160
1157 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1161 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1158 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1162 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1159 recognize the option. After a bug report by Will Maier. This
1163 recognize the option. After a bug report by Will Maier. This
1160 closes #64 (will do it after confirmation from W. Maier).
1164 closes #64 (will do it after confirmation from W. Maier).
1161
1165
1162 * IPython/irunner.py: New module to run scripts as if manually
1166 * IPython/irunner.py: New module to run scripts as if manually
1163 typed into an interactive environment, based on pexpect. After a
1167 typed into an interactive environment, based on pexpect. After a
1164 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1168 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1165 ipython-user list. Simple unittests in the tests/ directory.
1169 ipython-user list. Simple unittests in the tests/ directory.
1166
1170
1167 * tools/release: add Will Maier, OpenBSD port maintainer, to
1171 * tools/release: add Will Maier, OpenBSD port maintainer, to
1168 recepients list. We are now officially part of the OpenBSD ports:
1172 recepients list. We are now officially part of the OpenBSD ports:
1169 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1173 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1170 work.
1174 work.
1171
1175
1172 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1176 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1173
1177
1174 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1178 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1175 so that it doesn't break tkinter apps.
1179 so that it doesn't break tkinter apps.
1176
1180
1177 * IPython/iplib.py (_prefilter): fix bug where aliases would
1181 * IPython/iplib.py (_prefilter): fix bug where aliases would
1178 shadow variables when autocall was fully off. Reported by SAGE
1182 shadow variables when autocall was fully off. Reported by SAGE
1179 author William Stein.
1183 author William Stein.
1180
1184
1181 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1185 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1182 at what detail level strings are computed when foo? is requested.
1186 at what detail level strings are computed when foo? is requested.
1183 This allows users to ask for example that the string form of an
1187 This allows users to ask for example that the string form of an
1184 object is only computed when foo?? is called, or even never, by
1188 object is only computed when foo?? is called, or even never, by
1185 setting the object_info_string_level >= 2 in the configuration
1189 setting the object_info_string_level >= 2 in the configuration
1186 file. This new option has been added and documented. After a
1190 file. This new option has been added and documented. After a
1187 request by SAGE to be able to control the printing of very large
1191 request by SAGE to be able to control the printing of very large
1188 objects more easily.
1192 objects more easily.
1189
1193
1190 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1194 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1191
1195
1192 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1196 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1193 from sys.argv, to be 100% consistent with how Python itself works
1197 from sys.argv, to be 100% consistent with how Python itself works
1194 (as seen for example with python -i file.py). After a bug report
1198 (as seen for example with python -i file.py). After a bug report
1195 by Jeffrey Collins.
1199 by Jeffrey Collins.
1196
1200
1197 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1201 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1198 nasty bug which was preventing custom namespaces with -pylab,
1202 nasty bug which was preventing custom namespaces with -pylab,
1199 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1203 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1200 compatibility (long gone from mpl).
1204 compatibility (long gone from mpl).
1201
1205
1202 * IPython/ipapi.py (make_session): name change: create->make. We
1206 * IPython/ipapi.py (make_session): name change: create->make. We
1203 use make in other places (ipmaker,...), it's shorter and easier to
1207 use make in other places (ipmaker,...), it's shorter and easier to
1204 type and say, etc. I'm trying to clean things before 0.7.2 so
1208 type and say, etc. I'm trying to clean things before 0.7.2 so
1205 that I can keep things stable wrt to ipapi in the chainsaw branch.
1209 that I can keep things stable wrt to ipapi in the chainsaw branch.
1206
1210
1207 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1211 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1208 python-mode recognizes our debugger mode. Add support for
1212 python-mode recognizes our debugger mode. Add support for
1209 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1213 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1210 <m.liu.jin-AT-gmail.com> originally written by
1214 <m.liu.jin-AT-gmail.com> originally written by
1211 doxgen-AT-newsmth.net (with minor modifications for xemacs
1215 doxgen-AT-newsmth.net (with minor modifications for xemacs
1212 compatibility)
1216 compatibility)
1213
1217
1214 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1218 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1215 tracebacks when walking the stack so that the stack tracking system
1219 tracebacks when walking the stack so that the stack tracking system
1216 in emacs' python-mode can identify the frames correctly.
1220 in emacs' python-mode can identify the frames correctly.
1217
1221
1218 * IPython/ipmaker.py (make_IPython): make the internal (and
1222 * IPython/ipmaker.py (make_IPython): make the internal (and
1219 default config) autoedit_syntax value false by default. Too many
1223 default config) autoedit_syntax value false by default. Too many
1220 users have complained to me (both on and off-list) about problems
1224 users have complained to me (both on and off-list) about problems
1221 with this option being on by default, so I'm making it default to
1225 with this option being on by default, so I'm making it default to
1222 off. It can still be enabled by anyone via the usual mechanisms.
1226 off. It can still be enabled by anyone via the usual mechanisms.
1223
1227
1224 * IPython/completer.py (Completer.attr_matches): add support for
1228 * IPython/completer.py (Completer.attr_matches): add support for
1225 PyCrust-style _getAttributeNames magic method. Patch contributed
1229 PyCrust-style _getAttributeNames magic method. Patch contributed
1226 by <mscott-AT-goldenspud.com>. Closes #50.
1230 by <mscott-AT-goldenspud.com>. Closes #50.
1227
1231
1228 * IPython/iplib.py (InteractiveShell.__init__): remove the
1232 * IPython/iplib.py (InteractiveShell.__init__): remove the
1229 deletion of exit/quit from __builtin__, which can break
1233 deletion of exit/quit from __builtin__, which can break
1230 third-party tools like the Zope debugging console. The
1234 third-party tools like the Zope debugging console. The
1231 %exit/%quit magics remain. In general, it's probably a good idea
1235 %exit/%quit magics remain. In general, it's probably a good idea
1232 not to delete anything from __builtin__, since we never know what
1236 not to delete anything from __builtin__, since we never know what
1233 that will break. In any case, python now (for 2.5) will support
1237 that will break. In any case, python now (for 2.5) will support
1234 'real' exit/quit, so this issue is moot. Closes #55.
1238 'real' exit/quit, so this issue is moot. Closes #55.
1235
1239
1236 * IPython/genutils.py (with_obj): rename the 'with' function to
1240 * IPython/genutils.py (with_obj): rename the 'with' function to
1237 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1241 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1238 becomes a language keyword. Closes #53.
1242 becomes a language keyword. Closes #53.
1239
1243
1240 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1244 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1241 __file__ attribute to this so it fools more things into thinking
1245 __file__ attribute to this so it fools more things into thinking
1242 it is a real module. Closes #59.
1246 it is a real module. Closes #59.
1243
1247
1244 * IPython/Magic.py (magic_edit): add -n option to open the editor
1248 * IPython/Magic.py (magic_edit): add -n option to open the editor
1245 at a specific line number. After a patch by Stefan van der Walt.
1249 at a specific line number. After a patch by Stefan van der Walt.
1246
1250
1247 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1251 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1248
1252
1249 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1253 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1250 reason the file could not be opened. After automatic crash
1254 reason the file could not be opened. After automatic crash
1251 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1255 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1252 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1256 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1253 (_should_recompile): Don't fire editor if using %bg, since there
1257 (_should_recompile): Don't fire editor if using %bg, since there
1254 is no file in the first place. From the same report as above.
1258 is no file in the first place. From the same report as above.
1255 (raw_input): protect against faulty third-party prefilters. After
1259 (raw_input): protect against faulty third-party prefilters. After
1256 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1260 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1257 while running under SAGE.
1261 while running under SAGE.
1258
1262
1259 2006-05-23 Ville Vainio <vivainio@gmail.com>
1263 2006-05-23 Ville Vainio <vivainio@gmail.com>
1260
1264
1261 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1265 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1262 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1266 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1263 now returns None (again), unless dummy is specifically allowed by
1267 now returns None (again), unless dummy is specifically allowed by
1264 ipapi.get(allow_dummy=True).
1268 ipapi.get(allow_dummy=True).
1265
1269
1266 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1270 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1267
1271
1268 * IPython: remove all 2.2-compatibility objects and hacks from
1272 * IPython: remove all 2.2-compatibility objects and hacks from
1269 everywhere, since we only support 2.3 at this point. Docs
1273 everywhere, since we only support 2.3 at this point. Docs
1270 updated.
1274 updated.
1271
1275
1272 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1276 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1273 Anything requiring extra validation can be turned into a Python
1277 Anything requiring extra validation can be turned into a Python
1274 property in the future. I used a property for the db one b/c
1278 property in the future. I used a property for the db one b/c
1275 there was a nasty circularity problem with the initialization
1279 there was a nasty circularity problem with the initialization
1276 order, which right now I don't have time to clean up.
1280 order, which right now I don't have time to clean up.
1277
1281
1278 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1282 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1279 another locking bug reported by Jorgen. I'm not 100% sure though,
1283 another locking bug reported by Jorgen. I'm not 100% sure though,
1280 so more testing is needed...
1284 so more testing is needed...
1281
1285
1282 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1286 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1283
1287
1284 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1288 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1285 local variables from any routine in user code (typically executed
1289 local variables from any routine in user code (typically executed
1286 with %run) directly into the interactive namespace. Very useful
1290 with %run) directly into the interactive namespace. Very useful
1287 when doing complex debugging.
1291 when doing complex debugging.
1288 (IPythonNotRunning): Changed the default None object to a dummy
1292 (IPythonNotRunning): Changed the default None object to a dummy
1289 whose attributes can be queried as well as called without
1293 whose attributes can be queried as well as called without
1290 exploding, to ease writing code which works transparently both in
1294 exploding, to ease writing code which works transparently both in
1291 and out of ipython and uses some of this API.
1295 and out of ipython and uses some of this API.
1292
1296
1293 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1297 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1294
1298
1295 * IPython/hooks.py (result_display): Fix the fact that our display
1299 * IPython/hooks.py (result_display): Fix the fact that our display
1296 hook was using str() instead of repr(), as the default python
1300 hook was using str() instead of repr(), as the default python
1297 console does. This had gone unnoticed b/c it only happened if
1301 console does. This had gone unnoticed b/c it only happened if
1298 %Pprint was off, but the inconsistency was there.
1302 %Pprint was off, but the inconsistency was there.
1299
1303
1300 2006-05-15 Ville Vainio <vivainio@gmail.com>
1304 2006-05-15 Ville Vainio <vivainio@gmail.com>
1301
1305
1302 * Oinspect.py: Only show docstring for nonexisting/binary files
1306 * Oinspect.py: Only show docstring for nonexisting/binary files
1303 when doing object??, closing ticket #62
1307 when doing object??, closing ticket #62
1304
1308
1305 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1309 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1306
1310
1307 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1311 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1308 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1312 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1309 was being released in a routine which hadn't checked if it had
1313 was being released in a routine which hadn't checked if it had
1310 been the one to acquire it.
1314 been the one to acquire it.
1311
1315
1312 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1316 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1313
1317
1314 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1318 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1315
1319
1316 2006-04-11 Ville Vainio <vivainio@gmail.com>
1320 2006-04-11 Ville Vainio <vivainio@gmail.com>
1317
1321
1318 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1322 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1319 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1323 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1320 prefilters, allowing stuff like magics and aliases in the file.
1324 prefilters, allowing stuff like magics and aliases in the file.
1321
1325
1322 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1326 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1323 added. Supported now are "%clear in" and "%clear out" (clear input and
1327 added. Supported now are "%clear in" and "%clear out" (clear input and
1324 output history, respectively). Also fixed CachedOutput.flush to
1328 output history, respectively). Also fixed CachedOutput.flush to
1325 properly flush the output cache.
1329 properly flush the output cache.
1326
1330
1327 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1331 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1328 half-success (and fail explicitly).
1332 half-success (and fail explicitly).
1329
1333
1330 2006-03-28 Ville Vainio <vivainio@gmail.com>
1334 2006-03-28 Ville Vainio <vivainio@gmail.com>
1331
1335
1332 * iplib.py: Fix quoting of aliases so that only argless ones
1336 * iplib.py: Fix quoting of aliases so that only argless ones
1333 are quoted
1337 are quoted
1334
1338
1335 2006-03-28 Ville Vainio <vivainio@gmail.com>
1339 2006-03-28 Ville Vainio <vivainio@gmail.com>
1336
1340
1337 * iplib.py: Quote aliases with spaces in the name.
1341 * iplib.py: Quote aliases with spaces in the name.
1338 "c:\program files\blah\bin" is now legal alias target.
1342 "c:\program files\blah\bin" is now legal alias target.
1339
1343
1340 * ext_rehashdir.py: Space no longer allowed as arg
1344 * ext_rehashdir.py: Space no longer allowed as arg
1341 separator, since space is legal in path names.
1345 separator, since space is legal in path names.
1342
1346
1343 2006-03-16 Ville Vainio <vivainio@gmail.com>
1347 2006-03-16 Ville Vainio <vivainio@gmail.com>
1344
1348
1345 * upgrade_dir.py: Take path.py from Extensions, correcting
1349 * upgrade_dir.py: Take path.py from Extensions, correcting
1346 %upgrade magic
1350 %upgrade magic
1347
1351
1348 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1352 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1349
1353
1350 * hooks.py: Only enclose editor binary in quotes if legal and
1354 * hooks.py: Only enclose editor binary in quotes if legal and
1351 necessary (space in the name, and is an existing file). Fixes a bug
1355 necessary (space in the name, and is an existing file). Fixes a bug
1352 reported by Zachary Pincus.
1356 reported by Zachary Pincus.
1353
1357
1354 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1358 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1355
1359
1356 * Manual: thanks to a tip on proper color handling for Emacs, by
1360 * Manual: thanks to a tip on proper color handling for Emacs, by
1357 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1361 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1358
1362
1359 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1363 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1360 by applying the provided patch. Thanks to Liu Jin
1364 by applying the provided patch. Thanks to Liu Jin
1361 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1365 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1362 XEmacs/Linux, I'm trusting the submitter that it actually helps
1366 XEmacs/Linux, I'm trusting the submitter that it actually helps
1363 under win32/GNU Emacs. Will revisit if any problems are reported.
1367 under win32/GNU Emacs. Will revisit if any problems are reported.
1364
1368
1365 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1369 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1366
1370
1367 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1371 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1368 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1372 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1369
1373
1370 2006-03-12 Ville Vainio <vivainio@gmail.com>
1374 2006-03-12 Ville Vainio <vivainio@gmail.com>
1371
1375
1372 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1376 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1373 Torsten Marek.
1377 Torsten Marek.
1374
1378
1375 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1379 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1376
1380
1377 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1381 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1378 line ranges works again.
1382 line ranges works again.
1379
1383
1380 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1384 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1381
1385
1382 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1386 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1383 and friends, after a discussion with Zach Pincus on ipython-user.
1387 and friends, after a discussion with Zach Pincus on ipython-user.
1384 I'm not 100% sure, but after thinking about it quite a bit, it may
1388 I'm not 100% sure, but after thinking about it quite a bit, it may
1385 be OK. Testing with the multithreaded shells didn't reveal any
1389 be OK. Testing with the multithreaded shells didn't reveal any
1386 problems, but let's keep an eye out.
1390 problems, but let's keep an eye out.
1387
1391
1388 In the process, I fixed a few things which were calling
1392 In the process, I fixed a few things which were calling
1389 self.InteractiveTB() directly (like safe_execfile), which is a
1393 self.InteractiveTB() directly (like safe_execfile), which is a
1390 mistake: ALL exception reporting should be done by calling
1394 mistake: ALL exception reporting should be done by calling
1391 self.showtraceback(), which handles state and tab-completion and
1395 self.showtraceback(), which handles state and tab-completion and
1392 more.
1396 more.
1393
1397
1394 2006-03-01 Ville Vainio <vivainio@gmail.com>
1398 2006-03-01 Ville Vainio <vivainio@gmail.com>
1395
1399
1396 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1400 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1397 To use, do "from ipipe import *".
1401 To use, do "from ipipe import *".
1398
1402
1399 2006-02-24 Ville Vainio <vivainio@gmail.com>
1403 2006-02-24 Ville Vainio <vivainio@gmail.com>
1400
1404
1401 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1405 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1402 "cleanly" and safely than the older upgrade mechanism.
1406 "cleanly" and safely than the older upgrade mechanism.
1403
1407
1404 2006-02-21 Ville Vainio <vivainio@gmail.com>
1408 2006-02-21 Ville Vainio <vivainio@gmail.com>
1405
1409
1406 * Magic.py: %save works again.
1410 * Magic.py: %save works again.
1407
1411
1408 2006-02-15 Ville Vainio <vivainio@gmail.com>
1412 2006-02-15 Ville Vainio <vivainio@gmail.com>
1409
1413
1410 * Magic.py: %Pprint works again
1414 * Magic.py: %Pprint works again
1411
1415
1412 * Extensions/ipy_sane_defaults.py: Provide everything provided
1416 * Extensions/ipy_sane_defaults.py: Provide everything provided
1413 in default ipythonrc, to make it possible to have a completely empty
1417 in default ipythonrc, to make it possible to have a completely empty
1414 ipythonrc (and thus completely rc-file free configuration)
1418 ipythonrc (and thus completely rc-file free configuration)
1415
1419
1416 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1420 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1417
1421
1418 * IPython/hooks.py (editor): quote the call to the editor command,
1422 * IPython/hooks.py (editor): quote the call to the editor command,
1419 to allow commands with spaces in them. Problem noted by watching
1423 to allow commands with spaces in them. Problem noted by watching
1420 Ian Oswald's video about textpad under win32 at
1424 Ian Oswald's video about textpad under win32 at
1421 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1425 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1422
1426
1423 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1427 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1424 describing magics (we haven't used @ for a loong time).
1428 describing magics (we haven't used @ for a loong time).
1425
1429
1426 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1430 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1427 contributed by marienz to close
1431 contributed by marienz to close
1428 http://www.scipy.net/roundup/ipython/issue53.
1432 http://www.scipy.net/roundup/ipython/issue53.
1429
1433
1430 2006-02-10 Ville Vainio <vivainio@gmail.com>
1434 2006-02-10 Ville Vainio <vivainio@gmail.com>
1431
1435
1432 * genutils.py: getoutput now works in win32 too
1436 * genutils.py: getoutput now works in win32 too
1433
1437
1434 * completer.py: alias and magic completion only invoked
1438 * completer.py: alias and magic completion only invoked
1435 at the first "item" in the line, to avoid "cd %store"
1439 at the first "item" in the line, to avoid "cd %store"
1436 nonsense.
1440 nonsense.
1437
1441
1438 2006-02-09 Ville Vainio <vivainio@gmail.com>
1442 2006-02-09 Ville Vainio <vivainio@gmail.com>
1439
1443
1440 * test/*: Added a unit testing framework (finally).
1444 * test/*: Added a unit testing framework (finally).
1441 '%run runtests.py' to run test_*.
1445 '%run runtests.py' to run test_*.
1442
1446
1443 * ipapi.py: Exposed runlines and set_custom_exc
1447 * ipapi.py: Exposed runlines and set_custom_exc
1444
1448
1445 2006-02-07 Ville Vainio <vivainio@gmail.com>
1449 2006-02-07 Ville Vainio <vivainio@gmail.com>
1446
1450
1447 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1451 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1448 instead use "f(1 2)" as before.
1452 instead use "f(1 2)" as before.
1449
1453
1450 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1454 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1451
1455
1452 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1456 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1453 facilities, for demos processed by the IPython input filter
1457 facilities, for demos processed by the IPython input filter
1454 (IPythonDemo), and for running a script one-line-at-a-time as a
1458 (IPythonDemo), and for running a script one-line-at-a-time as a
1455 demo, both for pure Python (LineDemo) and for IPython-processed
1459 demo, both for pure Python (LineDemo) and for IPython-processed
1456 input (IPythonLineDemo). After a request by Dave Kohel, from the
1460 input (IPythonLineDemo). After a request by Dave Kohel, from the
1457 SAGE team.
1461 SAGE team.
1458 (Demo.edit): added an edit() method to the demo objects, to edit
1462 (Demo.edit): added an edit() method to the demo objects, to edit
1459 the in-memory copy of the last executed block.
1463 the in-memory copy of the last executed block.
1460
1464
1461 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1465 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1462 processing to %edit, %macro and %save. These commands can now be
1466 processing to %edit, %macro and %save. These commands can now be
1463 invoked on the unprocessed input as it was typed by the user
1467 invoked on the unprocessed input as it was typed by the user
1464 (without any prefilters applied). After requests by the SAGE team
1468 (without any prefilters applied). After requests by the SAGE team
1465 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1469 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1466
1470
1467 2006-02-01 Ville Vainio <vivainio@gmail.com>
1471 2006-02-01 Ville Vainio <vivainio@gmail.com>
1468
1472
1469 * setup.py, eggsetup.py: easy_install ipython==dev works
1473 * setup.py, eggsetup.py: easy_install ipython==dev works
1470 correctly now (on Linux)
1474 correctly now (on Linux)
1471
1475
1472 * ipy_user_conf,ipmaker: user config changes, removed spurious
1476 * ipy_user_conf,ipmaker: user config changes, removed spurious
1473 warnings
1477 warnings
1474
1478
1475 * iplib: if rc.banner is string, use it as is.
1479 * iplib: if rc.banner is string, use it as is.
1476
1480
1477 * Magic: %pycat accepts a string argument and pages it's contents.
1481 * Magic: %pycat accepts a string argument and pages it's contents.
1478
1482
1479
1483
1480 2006-01-30 Ville Vainio <vivainio@gmail.com>
1484 2006-01-30 Ville Vainio <vivainio@gmail.com>
1481
1485
1482 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1486 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1483 Now %store and bookmarks work through PickleShare, meaning that
1487 Now %store and bookmarks work through PickleShare, meaning that
1484 concurrent access is possible and all ipython sessions see the
1488 concurrent access is possible and all ipython sessions see the
1485 same database situation all the time, instead of snapshot of
1489 same database situation all the time, instead of snapshot of
1486 the situation when the session was started. Hence, %bookmark
1490 the situation when the session was started. Hence, %bookmark
1487 results are immediately accessible from othes sessions. The database
1491 results are immediately accessible from othes sessions. The database
1488 is also available for use by user extensions. See:
1492 is also available for use by user extensions. See:
1489 http://www.python.org/pypi/pickleshare
1493 http://www.python.org/pypi/pickleshare
1490
1494
1491 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1495 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1492
1496
1493 * aliases can now be %store'd
1497 * aliases can now be %store'd
1494
1498
1495 * path.py moved to Extensions so that pickleshare does not need
1499 * path.py moved to Extensions so that pickleshare does not need
1496 IPython-specific import. Extensions added to pythonpath right
1500 IPython-specific import. Extensions added to pythonpath right
1497 at __init__.
1501 at __init__.
1498
1502
1499 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1503 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1500 called with _ip.system and the pre-transformed command string.
1504 called with _ip.system and the pre-transformed command string.
1501
1505
1502 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1506 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1503
1507
1504 * IPython/iplib.py (interact): Fix that we were not catching
1508 * IPython/iplib.py (interact): Fix that we were not catching
1505 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1509 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1506 logic here had to change, but it's fixed now.
1510 logic here had to change, but it's fixed now.
1507
1511
1508 2006-01-29 Ville Vainio <vivainio@gmail.com>
1512 2006-01-29 Ville Vainio <vivainio@gmail.com>
1509
1513
1510 * iplib.py: Try to import pyreadline on Windows.
1514 * iplib.py: Try to import pyreadline on Windows.
1511
1515
1512 2006-01-27 Ville Vainio <vivainio@gmail.com>
1516 2006-01-27 Ville Vainio <vivainio@gmail.com>
1513
1517
1514 * iplib.py: Expose ipapi as _ip in builtin namespace.
1518 * iplib.py: Expose ipapi as _ip in builtin namespace.
1515 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1519 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1516 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1520 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1517 syntax now produce _ip.* variant of the commands.
1521 syntax now produce _ip.* variant of the commands.
1518
1522
1519 * "_ip.options().autoedit_syntax = 2" automatically throws
1523 * "_ip.options().autoedit_syntax = 2" automatically throws
1520 user to editor for syntax error correction without prompting.
1524 user to editor for syntax error correction without prompting.
1521
1525
1522 2006-01-27 Ville Vainio <vivainio@gmail.com>
1526 2006-01-27 Ville Vainio <vivainio@gmail.com>
1523
1527
1524 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1528 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1525 'ipython' at argv[0]) executed through command line.
1529 'ipython' at argv[0]) executed through command line.
1526 NOTE: this DEPRECATES calling ipython with multiple scripts
1530 NOTE: this DEPRECATES calling ipython with multiple scripts
1527 ("ipython a.py b.py c.py")
1531 ("ipython a.py b.py c.py")
1528
1532
1529 * iplib.py, hooks.py: Added configurable input prefilter,
1533 * iplib.py, hooks.py: Added configurable input prefilter,
1530 named 'input_prefilter'. See ext_rescapture.py for example
1534 named 'input_prefilter'. See ext_rescapture.py for example
1531 usage.
1535 usage.
1532
1536
1533 * ext_rescapture.py, Magic.py: Better system command output capture
1537 * ext_rescapture.py, Magic.py: Better system command output capture
1534 through 'var = !ls' (deprecates user-visible %sc). Same notation
1538 through 'var = !ls' (deprecates user-visible %sc). Same notation
1535 applies for magics, 'var = %alias' assigns alias list to var.
1539 applies for magics, 'var = %alias' assigns alias list to var.
1536
1540
1537 * ipapi.py: added meta() for accessing extension-usable data store.
1541 * ipapi.py: added meta() for accessing extension-usable data store.
1538
1542
1539 * iplib.py: added InteractiveShell.getapi(). New magics should be
1543 * iplib.py: added InteractiveShell.getapi(). New magics should be
1540 written doing self.getapi() instead of using the shell directly.
1544 written doing self.getapi() instead of using the shell directly.
1541
1545
1542 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1546 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1543 %store foo >> ~/myfoo.txt to store variables to files (in clean
1547 %store foo >> ~/myfoo.txt to store variables to files (in clean
1544 textual form, not a restorable pickle).
1548 textual form, not a restorable pickle).
1545
1549
1546 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1550 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1547
1551
1548 * usage.py, Magic.py: added %quickref
1552 * usage.py, Magic.py: added %quickref
1549
1553
1550 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1554 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1551
1555
1552 * GetoptErrors when invoking magics etc. with wrong args
1556 * GetoptErrors when invoking magics etc. with wrong args
1553 are now more helpful:
1557 are now more helpful:
1554 GetoptError: option -l not recognized (allowed: "qb" )
1558 GetoptError: option -l not recognized (allowed: "qb" )
1555
1559
1556 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1560 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1557
1561
1558 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1562 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1559 computationally intensive blocks don't appear to stall the demo.
1563 computationally intensive blocks don't appear to stall the demo.
1560
1564
1561 2006-01-24 Ville Vainio <vivainio@gmail.com>
1565 2006-01-24 Ville Vainio <vivainio@gmail.com>
1562
1566
1563 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1567 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1564 value to manipulate resulting history entry.
1568 value to manipulate resulting history entry.
1565
1569
1566 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1570 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1567 to instance methods of IPApi class, to make extending an embedded
1571 to instance methods of IPApi class, to make extending an embedded
1568 IPython feasible. See ext_rehashdir.py for example usage.
1572 IPython feasible. See ext_rehashdir.py for example usage.
1569
1573
1570 * Merged 1071-1076 from branches/0.7.1
1574 * Merged 1071-1076 from branches/0.7.1
1571
1575
1572
1576
1573 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1577 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1574
1578
1575 * tools/release (daystamp): Fix build tools to use the new
1579 * tools/release (daystamp): Fix build tools to use the new
1576 eggsetup.py script to build lightweight eggs.
1580 eggsetup.py script to build lightweight eggs.
1577
1581
1578 * Applied changesets 1062 and 1064 before 0.7.1 release.
1582 * Applied changesets 1062 and 1064 before 0.7.1 release.
1579
1583
1580 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1584 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1581 see the raw input history (without conversions like %ls ->
1585 see the raw input history (without conversions like %ls ->
1582 ipmagic("ls")). After a request from W. Stein, SAGE
1586 ipmagic("ls")). After a request from W. Stein, SAGE
1583 (http://modular.ucsd.edu/sage) developer. This information is
1587 (http://modular.ucsd.edu/sage) developer. This information is
1584 stored in the input_hist_raw attribute of the IPython instance, so
1588 stored in the input_hist_raw attribute of the IPython instance, so
1585 developers can access it if needed (it's an InputList instance).
1589 developers can access it if needed (it's an InputList instance).
1586
1590
1587 * Versionstring = 0.7.2.svn
1591 * Versionstring = 0.7.2.svn
1588
1592
1589 * eggsetup.py: A separate script for constructing eggs, creates
1593 * eggsetup.py: A separate script for constructing eggs, creates
1590 proper launch scripts even on Windows (an .exe file in
1594 proper launch scripts even on Windows (an .exe file in
1591 \python24\scripts).
1595 \python24\scripts).
1592
1596
1593 * ipapi.py: launch_new_instance, launch entry point needed for the
1597 * ipapi.py: launch_new_instance, launch entry point needed for the
1594 egg.
1598 egg.
1595
1599
1596 2006-01-23 Ville Vainio <vivainio@gmail.com>
1600 2006-01-23 Ville Vainio <vivainio@gmail.com>
1597
1601
1598 * Added %cpaste magic for pasting python code
1602 * Added %cpaste magic for pasting python code
1599
1603
1600 2006-01-22 Ville Vainio <vivainio@gmail.com>
1604 2006-01-22 Ville Vainio <vivainio@gmail.com>
1601
1605
1602 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1606 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1603
1607
1604 * Versionstring = 0.7.2.svn
1608 * Versionstring = 0.7.2.svn
1605
1609
1606 * eggsetup.py: A separate script for constructing eggs, creates
1610 * eggsetup.py: A separate script for constructing eggs, creates
1607 proper launch scripts even on Windows (an .exe file in
1611 proper launch scripts even on Windows (an .exe file in
1608 \python24\scripts).
1612 \python24\scripts).
1609
1613
1610 * ipapi.py: launch_new_instance, launch entry point needed for the
1614 * ipapi.py: launch_new_instance, launch entry point needed for the
1611 egg.
1615 egg.
1612
1616
1613 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1617 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1614
1618
1615 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1619 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1616 %pfile foo would print the file for foo even if it was a binary.
1620 %pfile foo would print the file for foo even if it was a binary.
1617 Now, extensions '.so' and '.dll' are skipped.
1621 Now, extensions '.so' and '.dll' are skipped.
1618
1622
1619 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1623 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1620 bug, where macros would fail in all threaded modes. I'm not 100%
1624 bug, where macros would fail in all threaded modes. I'm not 100%
1621 sure, so I'm going to put out an rc instead of making a release
1625 sure, so I'm going to put out an rc instead of making a release
1622 today, and wait for feedback for at least a few days.
1626 today, and wait for feedback for at least a few days.
1623
1627
1624 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1628 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1625 it...) the handling of pasting external code with autoindent on.
1629 it...) the handling of pasting external code with autoindent on.
1626 To get out of a multiline input, the rule will appear for most
1630 To get out of a multiline input, the rule will appear for most
1627 users unchanged: two blank lines or change the indent level
1631 users unchanged: two blank lines or change the indent level
1628 proposed by IPython. But there is a twist now: you can
1632 proposed by IPython. But there is a twist now: you can
1629 add/subtract only *one or two spaces*. If you add/subtract three
1633 add/subtract only *one or two spaces*. If you add/subtract three
1630 or more (unless you completely delete the line), IPython will
1634 or more (unless you completely delete the line), IPython will
1631 accept that line, and you'll need to enter a second one of pure
1635 accept that line, and you'll need to enter a second one of pure
1632 whitespace. I know it sounds complicated, but I can't find a
1636 whitespace. I know it sounds complicated, but I can't find a
1633 different solution that covers all the cases, with the right
1637 different solution that covers all the cases, with the right
1634 heuristics. Hopefully in actual use, nobody will really notice
1638 heuristics. Hopefully in actual use, nobody will really notice
1635 all these strange rules and things will 'just work'.
1639 all these strange rules and things will 'just work'.
1636
1640
1637 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1641 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1638
1642
1639 * IPython/iplib.py (interact): catch exceptions which can be
1643 * IPython/iplib.py (interact): catch exceptions which can be
1640 triggered asynchronously by signal handlers. Thanks to an
1644 triggered asynchronously by signal handlers. Thanks to an
1641 automatic crash report, submitted by Colin Kingsley
1645 automatic crash report, submitted by Colin Kingsley
1642 <tercel-AT-gentoo.org>.
1646 <tercel-AT-gentoo.org>.
1643
1647
1644 2006-01-20 Ville Vainio <vivainio@gmail.com>
1648 2006-01-20 Ville Vainio <vivainio@gmail.com>
1645
1649
1646 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1650 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1647 (%rehashdir, very useful, try it out) of how to extend ipython
1651 (%rehashdir, very useful, try it out) of how to extend ipython
1648 with new magics. Also added Extensions dir to pythonpath to make
1652 with new magics. Also added Extensions dir to pythonpath to make
1649 importing extensions easy.
1653 importing extensions easy.
1650
1654
1651 * %store now complains when trying to store interactively declared
1655 * %store now complains when trying to store interactively declared
1652 classes / instances of those classes.
1656 classes / instances of those classes.
1653
1657
1654 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1658 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1655 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1659 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1656 if they exist, and ipy_user_conf.py with some defaults is created for
1660 if they exist, and ipy_user_conf.py with some defaults is created for
1657 the user.
1661 the user.
1658
1662
1659 * Startup rehashing done by the config file, not InterpreterExec.
1663 * Startup rehashing done by the config file, not InterpreterExec.
1660 This means system commands are available even without selecting the
1664 This means system commands are available even without selecting the
1661 pysh profile. It's the sensible default after all.
1665 pysh profile. It's the sensible default after all.
1662
1666
1663 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1667 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1664
1668
1665 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1669 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1666 multiline code with autoindent on working. But I am really not
1670 multiline code with autoindent on working. But I am really not
1667 sure, so this needs more testing. Will commit a debug-enabled
1671 sure, so this needs more testing. Will commit a debug-enabled
1668 version for now, while I test it some more, so that Ville and
1672 version for now, while I test it some more, so that Ville and
1669 others may also catch any problems. Also made
1673 others may also catch any problems. Also made
1670 self.indent_current_str() a method, to ensure that there's no
1674 self.indent_current_str() a method, to ensure that there's no
1671 chance of the indent space count and the corresponding string
1675 chance of the indent space count and the corresponding string
1672 falling out of sync. All code needing the string should just call
1676 falling out of sync. All code needing the string should just call
1673 the method.
1677 the method.
1674
1678
1675 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1679 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1676
1680
1677 * IPython/Magic.py (magic_edit): fix check for when users don't
1681 * IPython/Magic.py (magic_edit): fix check for when users don't
1678 save their output files, the try/except was in the wrong section.
1682 save their output files, the try/except was in the wrong section.
1679
1683
1680 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1684 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1681
1685
1682 * IPython/Magic.py (magic_run): fix __file__ global missing from
1686 * IPython/Magic.py (magic_run): fix __file__ global missing from
1683 script's namespace when executed via %run. After a report by
1687 script's namespace when executed via %run. After a report by
1684 Vivian.
1688 Vivian.
1685
1689
1686 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1690 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1687 when using python 2.4. The parent constructor changed in 2.4, and
1691 when using python 2.4. The parent constructor changed in 2.4, and
1688 we need to track it directly (we can't call it, as it messes up
1692 we need to track it directly (we can't call it, as it messes up
1689 readline and tab-completion inside our pdb would stop working).
1693 readline and tab-completion inside our pdb would stop working).
1690 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1694 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1691
1695
1692 2006-01-16 Ville Vainio <vivainio@gmail.com>
1696 2006-01-16 Ville Vainio <vivainio@gmail.com>
1693
1697
1694 * Ipython/magic.py: Reverted back to old %edit functionality
1698 * Ipython/magic.py: Reverted back to old %edit functionality
1695 that returns file contents on exit.
1699 that returns file contents on exit.
1696
1700
1697 * IPython/path.py: Added Jason Orendorff's "path" module to
1701 * IPython/path.py: Added Jason Orendorff's "path" module to
1698 IPython tree, http://www.jorendorff.com/articles/python/path/.
1702 IPython tree, http://www.jorendorff.com/articles/python/path/.
1699 You can get path objects conveniently through %sc, and !!, e.g.:
1703 You can get path objects conveniently through %sc, and !!, e.g.:
1700 sc files=ls
1704 sc files=ls
1701 for p in files.paths: # or files.p
1705 for p in files.paths: # or files.p
1702 print p,p.mtime
1706 print p,p.mtime
1703
1707
1704 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1708 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1705 now work again without considering the exclusion regexp -
1709 now work again without considering the exclusion regexp -
1706 hence, things like ',foo my/path' turn to 'foo("my/path")'
1710 hence, things like ',foo my/path' turn to 'foo("my/path")'
1707 instead of syntax error.
1711 instead of syntax error.
1708
1712
1709
1713
1710 2006-01-14 Ville Vainio <vivainio@gmail.com>
1714 2006-01-14 Ville Vainio <vivainio@gmail.com>
1711
1715
1712 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1716 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1713 ipapi decorators for python 2.4 users, options() provides access to rc
1717 ipapi decorators for python 2.4 users, options() provides access to rc
1714 data.
1718 data.
1715
1719
1716 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1720 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1717 as path separators (even on Linux ;-). Space character after
1721 as path separators (even on Linux ;-). Space character after
1718 backslash (as yielded by tab completer) is still space;
1722 backslash (as yielded by tab completer) is still space;
1719 "%cd long\ name" works as expected.
1723 "%cd long\ name" works as expected.
1720
1724
1721 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1725 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1722 as "chain of command", with priority. API stays the same,
1726 as "chain of command", with priority. API stays the same,
1723 TryNext exception raised by a hook function signals that
1727 TryNext exception raised by a hook function signals that
1724 current hook failed and next hook should try handling it, as
1728 current hook failed and next hook should try handling it, as
1725 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1729 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1726 requested configurable display hook, which is now implemented.
1730 requested configurable display hook, which is now implemented.
1727
1731
1728 2006-01-13 Ville Vainio <vivainio@gmail.com>
1732 2006-01-13 Ville Vainio <vivainio@gmail.com>
1729
1733
1730 * IPython/platutils*.py: platform specific utility functions,
1734 * IPython/platutils*.py: platform specific utility functions,
1731 so far only set_term_title is implemented (change terminal
1735 so far only set_term_title is implemented (change terminal
1732 label in windowing systems). %cd now changes the title to
1736 label in windowing systems). %cd now changes the title to
1733 current dir.
1737 current dir.
1734
1738
1735 * IPython/Release.py: Added myself to "authors" list,
1739 * IPython/Release.py: Added myself to "authors" list,
1736 had to create new files.
1740 had to create new files.
1737
1741
1738 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1742 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1739 shell escape; not a known bug but had potential to be one in the
1743 shell escape; not a known bug but had potential to be one in the
1740 future.
1744 future.
1741
1745
1742 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1746 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1743 extension API for IPython! See the module for usage example. Fix
1747 extension API for IPython! See the module for usage example. Fix
1744 OInspect for docstring-less magic functions.
1748 OInspect for docstring-less magic functions.
1745
1749
1746
1750
1747 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1751 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1748
1752
1749 * IPython/iplib.py (raw_input): temporarily deactivate all
1753 * IPython/iplib.py (raw_input): temporarily deactivate all
1750 attempts at allowing pasting of code with autoindent on. It
1754 attempts at allowing pasting of code with autoindent on. It
1751 introduced bugs (reported by Prabhu) and I can't seem to find a
1755 introduced bugs (reported by Prabhu) and I can't seem to find a
1752 robust combination which works in all cases. Will have to revisit
1756 robust combination which works in all cases. Will have to revisit
1753 later.
1757 later.
1754
1758
1755 * IPython/genutils.py: remove isspace() function. We've dropped
1759 * IPython/genutils.py: remove isspace() function. We've dropped
1756 2.2 compatibility, so it's OK to use the string method.
1760 2.2 compatibility, so it's OK to use the string method.
1757
1761
1758 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1762 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1759
1763
1760 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1764 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1761 matching what NOT to autocall on, to include all python binary
1765 matching what NOT to autocall on, to include all python binary
1762 operators (including things like 'and', 'or', 'is' and 'in').
1766 operators (including things like 'and', 'or', 'is' and 'in').
1763 Prompted by a bug report on 'foo & bar', but I realized we had
1767 Prompted by a bug report on 'foo & bar', but I realized we had
1764 many more potential bug cases with other operators. The regexp is
1768 many more potential bug cases with other operators. The regexp is
1765 self.re_exclude_auto, it's fairly commented.
1769 self.re_exclude_auto, it's fairly commented.
1766
1770
1767 2006-01-12 Ville Vainio <vivainio@gmail.com>
1771 2006-01-12 Ville Vainio <vivainio@gmail.com>
1768
1772
1769 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1773 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1770 Prettified and hardened string/backslash quoting with ipsystem(),
1774 Prettified and hardened string/backslash quoting with ipsystem(),
1771 ipalias() and ipmagic(). Now even \ characters are passed to
1775 ipalias() and ipmagic(). Now even \ characters are passed to
1772 %magics, !shell escapes and aliases exactly as they are in the
1776 %magics, !shell escapes and aliases exactly as they are in the
1773 ipython command line. Should improve backslash experience,
1777 ipython command line. Should improve backslash experience,
1774 particularly in Windows (path delimiter for some commands that
1778 particularly in Windows (path delimiter for some commands that
1775 won't understand '/'), but Unix benefits as well (regexps). %cd
1779 won't understand '/'), but Unix benefits as well (regexps). %cd
1776 magic still doesn't support backslash path delimiters, though. Also
1780 magic still doesn't support backslash path delimiters, though. Also
1777 deleted all pretense of supporting multiline command strings in
1781 deleted all pretense of supporting multiline command strings in
1778 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1782 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1779
1783
1780 * doc/build_doc_instructions.txt added. Documentation on how to
1784 * doc/build_doc_instructions.txt added. Documentation on how to
1781 use doc/update_manual.py, added yesterday. Both files contributed
1785 use doc/update_manual.py, added yesterday. Both files contributed
1782 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1786 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1783 doc/*.sh for deprecation at a later date.
1787 doc/*.sh for deprecation at a later date.
1784
1788
1785 * /ipython.py Added ipython.py to root directory for
1789 * /ipython.py Added ipython.py to root directory for
1786 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1790 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1787 ipython.py) and development convenience (no need to keep doing
1791 ipython.py) and development convenience (no need to keep doing
1788 "setup.py install" between changes).
1792 "setup.py install" between changes).
1789
1793
1790 * Made ! and !! shell escapes work (again) in multiline expressions:
1794 * Made ! and !! shell escapes work (again) in multiline expressions:
1791 if 1:
1795 if 1:
1792 !ls
1796 !ls
1793 !!ls
1797 !!ls
1794
1798
1795 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1799 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1796
1800
1797 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1801 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1798 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1802 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1799 module in case-insensitive installation. Was causing crashes
1803 module in case-insensitive installation. Was causing crashes
1800 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1804 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1801
1805
1802 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1806 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1803 <marienz-AT-gentoo.org>, closes
1807 <marienz-AT-gentoo.org>, closes
1804 http://www.scipy.net/roundup/ipython/issue51.
1808 http://www.scipy.net/roundup/ipython/issue51.
1805
1809
1806 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1810 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1807
1811
1808 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1812 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1809 problem of excessive CPU usage under *nix and keyboard lag under
1813 problem of excessive CPU usage under *nix and keyboard lag under
1810 win32.
1814 win32.
1811
1815
1812 2006-01-10 *** Released version 0.7.0
1816 2006-01-10 *** Released version 0.7.0
1813
1817
1814 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1818 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1815
1819
1816 * IPython/Release.py (revision): tag version number to 0.7.0,
1820 * IPython/Release.py (revision): tag version number to 0.7.0,
1817 ready for release.
1821 ready for release.
1818
1822
1819 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1823 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1820 it informs the user of the name of the temp. file used. This can
1824 it informs the user of the name of the temp. file used. This can
1821 help if you decide later to reuse that same file, so you know
1825 help if you decide later to reuse that same file, so you know
1822 where to copy the info from.
1826 where to copy the info from.
1823
1827
1824 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1828 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1825
1829
1826 * setup_bdist_egg.py: little script to build an egg. Added
1830 * setup_bdist_egg.py: little script to build an egg. Added
1827 support in the release tools as well.
1831 support in the release tools as well.
1828
1832
1829 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1833 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1830
1834
1831 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1835 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1832 version selection (new -wxversion command line and ipythonrc
1836 version selection (new -wxversion command line and ipythonrc
1833 parameter). Patch contributed by Arnd Baecker
1837 parameter). Patch contributed by Arnd Baecker
1834 <arnd.baecker-AT-web.de>.
1838 <arnd.baecker-AT-web.de>.
1835
1839
1836 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1840 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1837 embedded instances, for variables defined at the interactive
1841 embedded instances, for variables defined at the interactive
1838 prompt of the embedded ipython. Reported by Arnd.
1842 prompt of the embedded ipython. Reported by Arnd.
1839
1843
1840 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1844 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1841 it can be used as a (stateful) toggle, or with a direct parameter.
1845 it can be used as a (stateful) toggle, or with a direct parameter.
1842
1846
1843 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1847 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1844 could be triggered in certain cases and cause the traceback
1848 could be triggered in certain cases and cause the traceback
1845 printer not to work.
1849 printer not to work.
1846
1850
1847 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1851 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1848
1852
1849 * IPython/iplib.py (_should_recompile): Small fix, closes
1853 * IPython/iplib.py (_should_recompile): Small fix, closes
1850 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1854 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1851
1855
1852 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1856 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1853
1857
1854 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1858 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1855 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1859 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1856 Moad for help with tracking it down.
1860 Moad for help with tracking it down.
1857
1861
1858 * IPython/iplib.py (handle_auto): fix autocall handling for
1862 * IPython/iplib.py (handle_auto): fix autocall handling for
1859 objects which support BOTH __getitem__ and __call__ (so that f [x]
1863 objects which support BOTH __getitem__ and __call__ (so that f [x]
1860 is left alone, instead of becoming f([x]) automatically).
1864 is left alone, instead of becoming f([x]) automatically).
1861
1865
1862 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1866 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1863 Ville's patch.
1867 Ville's patch.
1864
1868
1865 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1869 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1866
1870
1867 * IPython/iplib.py (handle_auto): changed autocall semantics to
1871 * IPython/iplib.py (handle_auto): changed autocall semantics to
1868 include 'smart' mode, where the autocall transformation is NOT
1872 include 'smart' mode, where the autocall transformation is NOT
1869 applied if there are no arguments on the line. This allows you to
1873 applied if there are no arguments on the line. This allows you to
1870 just type 'foo' if foo is a callable to see its internal form,
1874 just type 'foo' if foo is a callable to see its internal form,
1871 instead of having it called with no arguments (typically a
1875 instead of having it called with no arguments (typically a
1872 mistake). The old 'full' autocall still exists: for that, you
1876 mistake). The old 'full' autocall still exists: for that, you
1873 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1877 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1874
1878
1875 * IPython/completer.py (Completer.attr_matches): add
1879 * IPython/completer.py (Completer.attr_matches): add
1876 tab-completion support for Enthoughts' traits. After a report by
1880 tab-completion support for Enthoughts' traits. After a report by
1877 Arnd and a patch by Prabhu.
1881 Arnd and a patch by Prabhu.
1878
1882
1879 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1883 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1880
1884
1881 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1885 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1882 Schmolck's patch to fix inspect.getinnerframes().
1886 Schmolck's patch to fix inspect.getinnerframes().
1883
1887
1884 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1888 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1885 for embedded instances, regarding handling of namespaces and items
1889 for embedded instances, regarding handling of namespaces and items
1886 added to the __builtin__ one. Multiple embedded instances and
1890 added to the __builtin__ one. Multiple embedded instances and
1887 recursive embeddings should work better now (though I'm not sure
1891 recursive embeddings should work better now (though I'm not sure
1888 I've got all the corner cases fixed, that code is a bit of a brain
1892 I've got all the corner cases fixed, that code is a bit of a brain
1889 twister).
1893 twister).
1890
1894
1891 * IPython/Magic.py (magic_edit): added support to edit in-memory
1895 * IPython/Magic.py (magic_edit): added support to edit in-memory
1892 macros (automatically creates the necessary temp files). %edit
1896 macros (automatically creates the necessary temp files). %edit
1893 also doesn't return the file contents anymore, it's just noise.
1897 also doesn't return the file contents anymore, it's just noise.
1894
1898
1895 * IPython/completer.py (Completer.attr_matches): revert change to
1899 * IPython/completer.py (Completer.attr_matches): revert change to
1896 complete only on attributes listed in __all__. I realized it
1900 complete only on attributes listed in __all__. I realized it
1897 cripples the tab-completion system as a tool for exploring the
1901 cripples the tab-completion system as a tool for exploring the
1898 internals of unknown libraries (it renders any non-__all__
1902 internals of unknown libraries (it renders any non-__all__
1899 attribute off-limits). I got bit by this when trying to see
1903 attribute off-limits). I got bit by this when trying to see
1900 something inside the dis module.
1904 something inside the dis module.
1901
1905
1902 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1906 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1903
1907
1904 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1908 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1905 namespace for users and extension writers to hold data in. This
1909 namespace for users and extension writers to hold data in. This
1906 follows the discussion in
1910 follows the discussion in
1907 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1911 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1908
1912
1909 * IPython/completer.py (IPCompleter.complete): small patch to help
1913 * IPython/completer.py (IPCompleter.complete): small patch to help
1910 tab-completion under Emacs, after a suggestion by John Barnard
1914 tab-completion under Emacs, after a suggestion by John Barnard
1911 <barnarj-AT-ccf.org>.
1915 <barnarj-AT-ccf.org>.
1912
1916
1913 * IPython/Magic.py (Magic.extract_input_slices): added support for
1917 * IPython/Magic.py (Magic.extract_input_slices): added support for
1914 the slice notation in magics to use N-M to represent numbers N...M
1918 the slice notation in magics to use N-M to represent numbers N...M
1915 (closed endpoints). This is used by %macro and %save.
1919 (closed endpoints). This is used by %macro and %save.
1916
1920
1917 * IPython/completer.py (Completer.attr_matches): for modules which
1921 * IPython/completer.py (Completer.attr_matches): for modules which
1918 define __all__, complete only on those. After a patch by Jeffrey
1922 define __all__, complete only on those. After a patch by Jeffrey
1919 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1923 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1920 speed up this routine.
1924 speed up this routine.
1921
1925
1922 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1926 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1923 don't know if this is the end of it, but the behavior now is
1927 don't know if this is the end of it, but the behavior now is
1924 certainly much more correct. Note that coupled with macros,
1928 certainly much more correct. Note that coupled with macros,
1925 slightly surprising (at first) behavior may occur: a macro will in
1929 slightly surprising (at first) behavior may occur: a macro will in
1926 general expand to multiple lines of input, so upon exiting, the
1930 general expand to multiple lines of input, so upon exiting, the
1927 in/out counters will both be bumped by the corresponding amount
1931 in/out counters will both be bumped by the corresponding amount
1928 (as if the macro's contents had been typed interactively). Typing
1932 (as if the macro's contents had been typed interactively). Typing
1929 %hist will reveal the intermediate (silently processed) lines.
1933 %hist will reveal the intermediate (silently processed) lines.
1930
1934
1931 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1935 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1932 pickle to fail (%run was overwriting __main__ and not restoring
1936 pickle to fail (%run was overwriting __main__ and not restoring
1933 it, but pickle relies on __main__ to operate).
1937 it, but pickle relies on __main__ to operate).
1934
1938
1935 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1939 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1936 using properties, but forgot to make the main InteractiveShell
1940 using properties, but forgot to make the main InteractiveShell
1937 class a new-style class. Properties fail silently, and
1941 class a new-style class. Properties fail silently, and
1938 mysteriously, with old-style class (getters work, but
1942 mysteriously, with old-style class (getters work, but
1939 setters don't do anything).
1943 setters don't do anything).
1940
1944
1941 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1945 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1942
1946
1943 * IPython/Magic.py (magic_history): fix history reporting bug (I
1947 * IPython/Magic.py (magic_history): fix history reporting bug (I
1944 know some nasties are still there, I just can't seem to find a
1948 know some nasties are still there, I just can't seem to find a
1945 reproducible test case to track them down; the input history is
1949 reproducible test case to track them down; the input history is
1946 falling out of sync...)
1950 falling out of sync...)
1947
1951
1948 * IPython/iplib.py (handle_shell_escape): fix bug where both
1952 * IPython/iplib.py (handle_shell_escape): fix bug where both
1949 aliases and system accesses where broken for indented code (such
1953 aliases and system accesses where broken for indented code (such
1950 as loops).
1954 as loops).
1951
1955
1952 * IPython/genutils.py (shell): fix small but critical bug for
1956 * IPython/genutils.py (shell): fix small but critical bug for
1953 win32 system access.
1957 win32 system access.
1954
1958
1955 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1959 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1956
1960
1957 * IPython/iplib.py (showtraceback): remove use of the
1961 * IPython/iplib.py (showtraceback): remove use of the
1958 sys.last_{type/value/traceback} structures, which are non
1962 sys.last_{type/value/traceback} structures, which are non
1959 thread-safe.
1963 thread-safe.
1960 (_prefilter): change control flow to ensure that we NEVER
1964 (_prefilter): change control flow to ensure that we NEVER
1961 introspect objects when autocall is off. This will guarantee that
1965 introspect objects when autocall is off. This will guarantee that
1962 having an input line of the form 'x.y', where access to attribute
1966 having an input line of the form 'x.y', where access to attribute
1963 'y' has side effects, doesn't trigger the side effect TWICE. It
1967 'y' has side effects, doesn't trigger the side effect TWICE. It
1964 is important to note that, with autocall on, these side effects
1968 is important to note that, with autocall on, these side effects
1965 can still happen.
1969 can still happen.
1966 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1970 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1967 trio. IPython offers these three kinds of special calls which are
1971 trio. IPython offers these three kinds of special calls which are
1968 not python code, and it's a good thing to have their call method
1972 not python code, and it's a good thing to have their call method
1969 be accessible as pure python functions (not just special syntax at
1973 be accessible as pure python functions (not just special syntax at
1970 the command line). It gives us a better internal implementation
1974 the command line). It gives us a better internal implementation
1971 structure, as well as exposing these for user scripting more
1975 structure, as well as exposing these for user scripting more
1972 cleanly.
1976 cleanly.
1973
1977
1974 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1978 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1975 file. Now that they'll be more likely to be used with the
1979 file. Now that they'll be more likely to be used with the
1976 persistance system (%store), I want to make sure their module path
1980 persistance system (%store), I want to make sure their module path
1977 doesn't change in the future, so that we don't break things for
1981 doesn't change in the future, so that we don't break things for
1978 users' persisted data.
1982 users' persisted data.
1979
1983
1980 * IPython/iplib.py (autoindent_update): move indentation
1984 * IPython/iplib.py (autoindent_update): move indentation
1981 management into the _text_ processing loop, not the keyboard
1985 management into the _text_ processing loop, not the keyboard
1982 interactive one. This is necessary to correctly process non-typed
1986 interactive one. This is necessary to correctly process non-typed
1983 multiline input (such as macros).
1987 multiline input (such as macros).
1984
1988
1985 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1989 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1986 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1990 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1987 which was producing problems in the resulting manual.
1991 which was producing problems in the resulting manual.
1988 (magic_whos): improve reporting of instances (show their class,
1992 (magic_whos): improve reporting of instances (show their class,
1989 instead of simply printing 'instance' which isn't terribly
1993 instead of simply printing 'instance' which isn't terribly
1990 informative).
1994 informative).
1991
1995
1992 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1996 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1993 (minor mods) to support network shares under win32.
1997 (minor mods) to support network shares under win32.
1994
1998
1995 * IPython/winconsole.py (get_console_size): add new winconsole
1999 * IPython/winconsole.py (get_console_size): add new winconsole
1996 module and fixes to page_dumb() to improve its behavior under
2000 module and fixes to page_dumb() to improve its behavior under
1997 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2001 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1998
2002
1999 * IPython/Magic.py (Macro): simplified Macro class to just
2003 * IPython/Magic.py (Macro): simplified Macro class to just
2000 subclass list. We've had only 2.2 compatibility for a very long
2004 subclass list. We've had only 2.2 compatibility for a very long
2001 time, yet I was still avoiding subclassing the builtin types. No
2005 time, yet I was still avoiding subclassing the builtin types. No
2002 more (I'm also starting to use properties, though I won't shift to
2006 more (I'm also starting to use properties, though I won't shift to
2003 2.3-specific features quite yet).
2007 2.3-specific features quite yet).
2004 (magic_store): added Ville's patch for lightweight variable
2008 (magic_store): added Ville's patch for lightweight variable
2005 persistence, after a request on the user list by Matt Wilkie
2009 persistence, after a request on the user list by Matt Wilkie
2006 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2010 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2007 details.
2011 details.
2008
2012
2009 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2013 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2010 changed the default logfile name from 'ipython.log' to
2014 changed the default logfile name from 'ipython.log' to
2011 'ipython_log.py'. These logs are real python files, and now that
2015 'ipython_log.py'. These logs are real python files, and now that
2012 we have much better multiline support, people are more likely to
2016 we have much better multiline support, people are more likely to
2013 want to use them as such. Might as well name them correctly.
2017 want to use them as such. Might as well name them correctly.
2014
2018
2015 * IPython/Magic.py: substantial cleanup. While we can't stop
2019 * IPython/Magic.py: substantial cleanup. While we can't stop
2016 using magics as mixins, due to the existing customizations 'out
2020 using magics as mixins, due to the existing customizations 'out
2017 there' which rely on the mixin naming conventions, at least I
2021 there' which rely on the mixin naming conventions, at least I
2018 cleaned out all cross-class name usage. So once we are OK with
2022 cleaned out all cross-class name usage. So once we are OK with
2019 breaking compatibility, the two systems can be separated.
2023 breaking compatibility, the two systems can be separated.
2020
2024
2021 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2025 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2022 anymore, and the class is a fair bit less hideous as well. New
2026 anymore, and the class is a fair bit less hideous as well. New
2023 features were also introduced: timestamping of input, and logging
2027 features were also introduced: timestamping of input, and logging
2024 of output results. These are user-visible with the -t and -o
2028 of output results. These are user-visible with the -t and -o
2025 options to %logstart. Closes
2029 options to %logstart. Closes
2026 http://www.scipy.net/roundup/ipython/issue11 and a request by
2030 http://www.scipy.net/roundup/ipython/issue11 and a request by
2027 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2031 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2028
2032
2029 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2033 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2030
2034
2031 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2035 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2032 better handle backslashes in paths. See the thread 'More Windows
2036 better handle backslashes in paths. See the thread 'More Windows
2033 questions part 2 - \/ characters revisited' on the iypthon user
2037 questions part 2 - \/ characters revisited' on the iypthon user
2034 list:
2038 list:
2035 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2039 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2036
2040
2037 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2041 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2038
2042
2039 (InteractiveShell.__init__): change threaded shells to not use the
2043 (InteractiveShell.__init__): change threaded shells to not use the
2040 ipython crash handler. This was causing more problems than not,
2044 ipython crash handler. This was causing more problems than not,
2041 as exceptions in the main thread (GUI code, typically) would
2045 as exceptions in the main thread (GUI code, typically) would
2042 always show up as a 'crash', when they really weren't.
2046 always show up as a 'crash', when they really weren't.
2043
2047
2044 The colors and exception mode commands (%colors/%xmode) have been
2048 The colors and exception mode commands (%colors/%xmode) have been
2045 synchronized to also take this into account, so users can get
2049 synchronized to also take this into account, so users can get
2046 verbose exceptions for their threaded code as well. I also added
2050 verbose exceptions for their threaded code as well. I also added
2047 support for activating pdb inside this exception handler as well,
2051 support for activating pdb inside this exception handler as well,
2048 so now GUI authors can use IPython's enhanced pdb at runtime.
2052 so now GUI authors can use IPython's enhanced pdb at runtime.
2049
2053
2050 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2054 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2051 true by default, and add it to the shipped ipythonrc file. Since
2055 true by default, and add it to the shipped ipythonrc file. Since
2052 this asks the user before proceeding, I think it's OK to make it
2056 this asks the user before proceeding, I think it's OK to make it
2053 true by default.
2057 true by default.
2054
2058
2055 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2059 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2056 of the previous special-casing of input in the eval loop. I think
2060 of the previous special-casing of input in the eval loop. I think
2057 this is cleaner, as they really are commands and shouldn't have
2061 this is cleaner, as they really are commands and shouldn't have
2058 a special role in the middle of the core code.
2062 a special role in the middle of the core code.
2059
2063
2060 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2064 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2061
2065
2062 * IPython/iplib.py (edit_syntax_error): added support for
2066 * IPython/iplib.py (edit_syntax_error): added support for
2063 automatically reopening the editor if the file had a syntax error
2067 automatically reopening the editor if the file had a syntax error
2064 in it. Thanks to scottt who provided the patch at:
2068 in it. Thanks to scottt who provided the patch at:
2065 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2069 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2066 version committed).
2070 version committed).
2067
2071
2068 * IPython/iplib.py (handle_normal): add suport for multi-line
2072 * IPython/iplib.py (handle_normal): add suport for multi-line
2069 input with emtpy lines. This fixes
2073 input with emtpy lines. This fixes
2070 http://www.scipy.net/roundup/ipython/issue43 and a similar
2074 http://www.scipy.net/roundup/ipython/issue43 and a similar
2071 discussion on the user list.
2075 discussion on the user list.
2072
2076
2073 WARNING: a behavior change is necessarily introduced to support
2077 WARNING: a behavior change is necessarily introduced to support
2074 blank lines: now a single blank line with whitespace does NOT
2078 blank lines: now a single blank line with whitespace does NOT
2075 break the input loop, which means that when autoindent is on, by
2079 break the input loop, which means that when autoindent is on, by
2076 default hitting return on the next (indented) line does NOT exit.
2080 default hitting return on the next (indented) line does NOT exit.
2077
2081
2078 Instead, to exit a multiline input you can either have:
2082 Instead, to exit a multiline input you can either have:
2079
2083
2080 - TWO whitespace lines (just hit return again), or
2084 - TWO whitespace lines (just hit return again), or
2081 - a single whitespace line of a different length than provided
2085 - a single whitespace line of a different length than provided
2082 by the autoindent (add or remove a space).
2086 by the autoindent (add or remove a space).
2083
2087
2084 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2088 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2085 module to better organize all readline-related functionality.
2089 module to better organize all readline-related functionality.
2086 I've deleted FlexCompleter and put all completion clases here.
2090 I've deleted FlexCompleter and put all completion clases here.
2087
2091
2088 * IPython/iplib.py (raw_input): improve indentation management.
2092 * IPython/iplib.py (raw_input): improve indentation management.
2089 It is now possible to paste indented code with autoindent on, and
2093 It is now possible to paste indented code with autoindent on, and
2090 the code is interpreted correctly (though it still looks bad on
2094 the code is interpreted correctly (though it still looks bad on
2091 screen, due to the line-oriented nature of ipython).
2095 screen, due to the line-oriented nature of ipython).
2092 (MagicCompleter.complete): change behavior so that a TAB key on an
2096 (MagicCompleter.complete): change behavior so that a TAB key on an
2093 otherwise empty line actually inserts a tab, instead of completing
2097 otherwise empty line actually inserts a tab, instead of completing
2094 on the entire global namespace. This makes it easier to use the
2098 on the entire global namespace. This makes it easier to use the
2095 TAB key for indentation. After a request by Hans Meine
2099 TAB key for indentation. After a request by Hans Meine
2096 <hans_meine-AT-gmx.net>
2100 <hans_meine-AT-gmx.net>
2097 (_prefilter): add support so that typing plain 'exit' or 'quit'
2101 (_prefilter): add support so that typing plain 'exit' or 'quit'
2098 does a sensible thing. Originally I tried to deviate as little as
2102 does a sensible thing. Originally I tried to deviate as little as
2099 possible from the default python behavior, but even that one may
2103 possible from the default python behavior, but even that one may
2100 change in this direction (thread on python-dev to that effect).
2104 change in this direction (thread on python-dev to that effect).
2101 Regardless, ipython should do the right thing even if CPython's
2105 Regardless, ipython should do the right thing even if CPython's
2102 '>>>' prompt doesn't.
2106 '>>>' prompt doesn't.
2103 (InteractiveShell): removed subclassing code.InteractiveConsole
2107 (InteractiveShell): removed subclassing code.InteractiveConsole
2104 class. By now we'd overridden just about all of its methods: I've
2108 class. By now we'd overridden just about all of its methods: I've
2105 copied the remaining two over, and now ipython is a standalone
2109 copied the remaining two over, and now ipython is a standalone
2106 class. This will provide a clearer picture for the chainsaw
2110 class. This will provide a clearer picture for the chainsaw
2107 branch refactoring.
2111 branch refactoring.
2108
2112
2109 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2113 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2110
2114
2111 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2115 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2112 failures for objects which break when dir() is called on them.
2116 failures for objects which break when dir() is called on them.
2113
2117
2114 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2118 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2115 distinct local and global namespaces in the completer API. This
2119 distinct local and global namespaces in the completer API. This
2116 change allows us to properly handle completion with distinct
2120 change allows us to properly handle completion with distinct
2117 scopes, including in embedded instances (this had never really
2121 scopes, including in embedded instances (this had never really
2118 worked correctly).
2122 worked correctly).
2119
2123
2120 Note: this introduces a change in the constructor for
2124 Note: this introduces a change in the constructor for
2121 MagicCompleter, as a new global_namespace parameter is now the
2125 MagicCompleter, as a new global_namespace parameter is now the
2122 second argument (the others were bumped one position).
2126 second argument (the others were bumped one position).
2123
2127
2124 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2128 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2125
2129
2126 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2130 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2127 embedded instances (which can be done now thanks to Vivian's
2131 embedded instances (which can be done now thanks to Vivian's
2128 frame-handling fixes for pdb).
2132 frame-handling fixes for pdb).
2129 (InteractiveShell.__init__): Fix namespace handling problem in
2133 (InteractiveShell.__init__): Fix namespace handling problem in
2130 embedded instances. We were overwriting __main__ unconditionally,
2134 embedded instances. We were overwriting __main__ unconditionally,
2131 and this should only be done for 'full' (non-embedded) IPython;
2135 and this should only be done for 'full' (non-embedded) IPython;
2132 embedded instances must respect the caller's __main__. Thanks to
2136 embedded instances must respect the caller's __main__. Thanks to
2133 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2137 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2134
2138
2135 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2139 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2136
2140
2137 * setup.py: added download_url to setup(). This registers the
2141 * setup.py: added download_url to setup(). This registers the
2138 download address at PyPI, which is not only useful to humans
2142 download address at PyPI, which is not only useful to humans
2139 browsing the site, but is also picked up by setuptools (the Eggs
2143 browsing the site, but is also picked up by setuptools (the Eggs
2140 machinery). Thanks to Ville and R. Kern for the info/discussion
2144 machinery). Thanks to Ville and R. Kern for the info/discussion
2141 on this.
2145 on this.
2142
2146
2143 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2147 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2144
2148
2145 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2149 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2146 This brings a lot of nice functionality to the pdb mode, which now
2150 This brings a lot of nice functionality to the pdb mode, which now
2147 has tab-completion, syntax highlighting, and better stack handling
2151 has tab-completion, syntax highlighting, and better stack handling
2148 than before. Many thanks to Vivian De Smedt
2152 than before. Many thanks to Vivian De Smedt
2149 <vivian-AT-vdesmedt.com> for the original patches.
2153 <vivian-AT-vdesmedt.com> for the original patches.
2150
2154
2151 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2155 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2152
2156
2153 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2157 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2154 sequence to consistently accept the banner argument. The
2158 sequence to consistently accept the banner argument. The
2155 inconsistency was tripping SAGE, thanks to Gary Zablackis
2159 inconsistency was tripping SAGE, thanks to Gary Zablackis
2156 <gzabl-AT-yahoo.com> for the report.
2160 <gzabl-AT-yahoo.com> for the report.
2157
2161
2158 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2162 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2159
2163
2160 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2164 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2161 Fix bug where a naked 'alias' call in the ipythonrc file would
2165 Fix bug where a naked 'alias' call in the ipythonrc file would
2162 cause a crash. Bug reported by Jorgen Stenarson.
2166 cause a crash. Bug reported by Jorgen Stenarson.
2163
2167
2164 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2168 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2165
2169
2166 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2170 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2167 startup time.
2171 startup time.
2168
2172
2169 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2173 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2170 instances had introduced a bug with globals in normal code. Now
2174 instances had introduced a bug with globals in normal code. Now
2171 it's working in all cases.
2175 it's working in all cases.
2172
2176
2173 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2177 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2174 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2178 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2175 has been introduced to set the default case sensitivity of the
2179 has been introduced to set the default case sensitivity of the
2176 searches. Users can still select either mode at runtime on a
2180 searches. Users can still select either mode at runtime on a
2177 per-search basis.
2181 per-search basis.
2178
2182
2179 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2183 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2180
2184
2181 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2185 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2182 attributes in wildcard searches for subclasses. Modified version
2186 attributes in wildcard searches for subclasses. Modified version
2183 of a patch by Jorgen.
2187 of a patch by Jorgen.
2184
2188
2185 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2189 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2186
2190
2187 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2191 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2188 embedded instances. I added a user_global_ns attribute to the
2192 embedded instances. I added a user_global_ns attribute to the
2189 InteractiveShell class to handle this.
2193 InteractiveShell class to handle this.
2190
2194
2191 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2195 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2192
2196
2193 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2197 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2194 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2198 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2195 (reported under win32, but may happen also in other platforms).
2199 (reported under win32, but may happen also in other platforms).
2196 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2200 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2197
2201
2198 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2202 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2199
2203
2200 * IPython/Magic.py (magic_psearch): new support for wildcard
2204 * IPython/Magic.py (magic_psearch): new support for wildcard
2201 patterns. Now, typing ?a*b will list all names which begin with a
2205 patterns. Now, typing ?a*b will list all names which begin with a
2202 and end in b, for example. The %psearch magic has full
2206 and end in b, for example. The %psearch magic has full
2203 docstrings. Many thanks to JΓΆrgen Stenarson
2207 docstrings. Many thanks to JΓΆrgen Stenarson
2204 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2208 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2205 implementing this functionality.
2209 implementing this functionality.
2206
2210
2207 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2211 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2208
2212
2209 * Manual: fixed long-standing annoyance of double-dashes (as in
2213 * Manual: fixed long-standing annoyance of double-dashes (as in
2210 --prefix=~, for example) being stripped in the HTML version. This
2214 --prefix=~, for example) being stripped in the HTML version. This
2211 is a latex2html bug, but a workaround was provided. Many thanks
2215 is a latex2html bug, but a workaround was provided. Many thanks
2212 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2216 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2213 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2217 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2214 rolling. This seemingly small issue had tripped a number of users
2218 rolling. This seemingly small issue had tripped a number of users
2215 when first installing, so I'm glad to see it gone.
2219 when first installing, so I'm glad to see it gone.
2216
2220
2217 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2221 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2218
2222
2219 * IPython/Extensions/numeric_formats.py: fix missing import,
2223 * IPython/Extensions/numeric_formats.py: fix missing import,
2220 reported by Stephen Walton.
2224 reported by Stephen Walton.
2221
2225
2222 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2226 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2223
2227
2224 * IPython/demo.py: finish demo module, fully documented now.
2228 * IPython/demo.py: finish demo module, fully documented now.
2225
2229
2226 * IPython/genutils.py (file_read): simple little utility to read a
2230 * IPython/genutils.py (file_read): simple little utility to read a
2227 file and ensure it's closed afterwards.
2231 file and ensure it's closed afterwards.
2228
2232
2229 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2233 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2230
2234
2231 * IPython/demo.py (Demo.__init__): added support for individually
2235 * IPython/demo.py (Demo.__init__): added support for individually
2232 tagging blocks for automatic execution.
2236 tagging blocks for automatic execution.
2233
2237
2234 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2238 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2235 syntax-highlighted python sources, requested by John.
2239 syntax-highlighted python sources, requested by John.
2236
2240
2237 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2241 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2238
2242
2239 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2243 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2240 finishing.
2244 finishing.
2241
2245
2242 * IPython/genutils.py (shlex_split): moved from Magic to here,
2246 * IPython/genutils.py (shlex_split): moved from Magic to here,
2243 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2247 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2244
2248
2245 * IPython/demo.py (Demo.__init__): added support for silent
2249 * IPython/demo.py (Demo.__init__): added support for silent
2246 blocks, improved marks as regexps, docstrings written.
2250 blocks, improved marks as regexps, docstrings written.
2247 (Demo.__init__): better docstring, added support for sys.argv.
2251 (Demo.__init__): better docstring, added support for sys.argv.
2248
2252
2249 * IPython/genutils.py (marquee): little utility used by the demo
2253 * IPython/genutils.py (marquee): little utility used by the demo
2250 code, handy in general.
2254 code, handy in general.
2251
2255
2252 * IPython/demo.py (Demo.__init__): new class for interactive
2256 * IPython/demo.py (Demo.__init__): new class for interactive
2253 demos. Not documented yet, I just wrote it in a hurry for
2257 demos. Not documented yet, I just wrote it in a hurry for
2254 scipy'05. Will docstring later.
2258 scipy'05. Will docstring later.
2255
2259
2256 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2260 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2257
2261
2258 * IPython/Shell.py (sigint_handler): Drastic simplification which
2262 * IPython/Shell.py (sigint_handler): Drastic simplification which
2259 also seems to make Ctrl-C work correctly across threads! This is
2263 also seems to make Ctrl-C work correctly across threads! This is
2260 so simple, that I can't beleive I'd missed it before. Needs more
2264 so simple, that I can't beleive I'd missed it before. Needs more
2261 testing, though.
2265 testing, though.
2262 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2266 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2263 like this before...
2267 like this before...
2264
2268
2265 * IPython/genutils.py (get_home_dir): add protection against
2269 * IPython/genutils.py (get_home_dir): add protection against
2266 non-dirs in win32 registry.
2270 non-dirs in win32 registry.
2267
2271
2268 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2272 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2269 bug where dict was mutated while iterating (pysh crash).
2273 bug where dict was mutated while iterating (pysh crash).
2270
2274
2271 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2275 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2272
2276
2273 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2277 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2274 spurious newlines added by this routine. After a report by
2278 spurious newlines added by this routine. After a report by
2275 F. Mantegazza.
2279 F. Mantegazza.
2276
2280
2277 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2281 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2278
2282
2279 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2283 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2280 calls. These were a leftover from the GTK 1.x days, and can cause
2284 calls. These were a leftover from the GTK 1.x days, and can cause
2281 problems in certain cases (after a report by John Hunter).
2285 problems in certain cases (after a report by John Hunter).
2282
2286
2283 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2287 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2284 os.getcwd() fails at init time. Thanks to patch from David Remahl
2288 os.getcwd() fails at init time. Thanks to patch from David Remahl
2285 <chmod007-AT-mac.com>.
2289 <chmod007-AT-mac.com>.
2286 (InteractiveShell.__init__): prevent certain special magics from
2290 (InteractiveShell.__init__): prevent certain special magics from
2287 being shadowed by aliases. Closes
2291 being shadowed by aliases. Closes
2288 http://www.scipy.net/roundup/ipython/issue41.
2292 http://www.scipy.net/roundup/ipython/issue41.
2289
2293
2290 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2294 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2291
2295
2292 * IPython/iplib.py (InteractiveShell.complete): Added new
2296 * IPython/iplib.py (InteractiveShell.complete): Added new
2293 top-level completion method to expose the completion mechanism
2297 top-level completion method to expose the completion mechanism
2294 beyond readline-based environments.
2298 beyond readline-based environments.
2295
2299
2296 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2300 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2297
2301
2298 * tools/ipsvnc (svnversion): fix svnversion capture.
2302 * tools/ipsvnc (svnversion): fix svnversion capture.
2299
2303
2300 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2304 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2301 attribute to self, which was missing. Before, it was set by a
2305 attribute to self, which was missing. Before, it was set by a
2302 routine which in certain cases wasn't being called, so the
2306 routine which in certain cases wasn't being called, so the
2303 instance could end up missing the attribute. This caused a crash.
2307 instance could end up missing the attribute. This caused a crash.
2304 Closes http://www.scipy.net/roundup/ipython/issue40.
2308 Closes http://www.scipy.net/roundup/ipython/issue40.
2305
2309
2306 2005-08-16 Fernando Perez <fperez@colorado.edu>
2310 2005-08-16 Fernando Perez <fperez@colorado.edu>
2307
2311
2308 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2312 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2309 contains non-string attribute. Closes
2313 contains non-string attribute. Closes
2310 http://www.scipy.net/roundup/ipython/issue38.
2314 http://www.scipy.net/roundup/ipython/issue38.
2311
2315
2312 2005-08-14 Fernando Perez <fperez@colorado.edu>
2316 2005-08-14 Fernando Perez <fperez@colorado.edu>
2313
2317
2314 * tools/ipsvnc: Minor improvements, to add changeset info.
2318 * tools/ipsvnc: Minor improvements, to add changeset info.
2315
2319
2316 2005-08-12 Fernando Perez <fperez@colorado.edu>
2320 2005-08-12 Fernando Perez <fperez@colorado.edu>
2317
2321
2318 * IPython/iplib.py (runsource): remove self.code_to_run_src
2322 * IPython/iplib.py (runsource): remove self.code_to_run_src
2319 attribute. I realized this is nothing more than
2323 attribute. I realized this is nothing more than
2320 '\n'.join(self.buffer), and having the same data in two different
2324 '\n'.join(self.buffer), and having the same data in two different
2321 places is just asking for synchronization bugs. This may impact
2325 places is just asking for synchronization bugs. This may impact
2322 people who have custom exception handlers, so I need to warn
2326 people who have custom exception handlers, so I need to warn
2323 ipython-dev about it (F. Mantegazza may use them).
2327 ipython-dev about it (F. Mantegazza may use them).
2324
2328
2325 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2329 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2326
2330
2327 * IPython/genutils.py: fix 2.2 compatibility (generators)
2331 * IPython/genutils.py: fix 2.2 compatibility (generators)
2328
2332
2329 2005-07-18 Fernando Perez <fperez@colorado.edu>
2333 2005-07-18 Fernando Perez <fperez@colorado.edu>
2330
2334
2331 * IPython/genutils.py (get_home_dir): fix to help users with
2335 * IPython/genutils.py (get_home_dir): fix to help users with
2332 invalid $HOME under win32.
2336 invalid $HOME under win32.
2333
2337
2334 2005-07-17 Fernando Perez <fperez@colorado.edu>
2338 2005-07-17 Fernando Perez <fperez@colorado.edu>
2335
2339
2336 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2340 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2337 some old hacks and clean up a bit other routines; code should be
2341 some old hacks and clean up a bit other routines; code should be
2338 simpler and a bit faster.
2342 simpler and a bit faster.
2339
2343
2340 * IPython/iplib.py (interact): removed some last-resort attempts
2344 * IPython/iplib.py (interact): removed some last-resort attempts
2341 to survive broken stdout/stderr. That code was only making it
2345 to survive broken stdout/stderr. That code was only making it
2342 harder to abstract out the i/o (necessary for gui integration),
2346 harder to abstract out the i/o (necessary for gui integration),
2343 and the crashes it could prevent were extremely rare in practice
2347 and the crashes it could prevent were extremely rare in practice
2344 (besides being fully user-induced in a pretty violent manner).
2348 (besides being fully user-induced in a pretty violent manner).
2345
2349
2346 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2350 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2347 Nothing major yet, but the code is simpler to read; this should
2351 Nothing major yet, but the code is simpler to read; this should
2348 make it easier to do more serious modifications in the future.
2352 make it easier to do more serious modifications in the future.
2349
2353
2350 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2354 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2351 which broke in .15 (thanks to a report by Ville).
2355 which broke in .15 (thanks to a report by Ville).
2352
2356
2353 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2357 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2354 be quite correct, I know next to nothing about unicode). This
2358 be quite correct, I know next to nothing about unicode). This
2355 will allow unicode strings to be used in prompts, amongst other
2359 will allow unicode strings to be used in prompts, amongst other
2356 cases. It also will prevent ipython from crashing when unicode
2360 cases. It also will prevent ipython from crashing when unicode
2357 shows up unexpectedly in many places. If ascii encoding fails, we
2361 shows up unexpectedly in many places. If ascii encoding fails, we
2358 assume utf_8. Currently the encoding is not a user-visible
2362 assume utf_8. Currently the encoding is not a user-visible
2359 setting, though it could be made so if there is demand for it.
2363 setting, though it could be made so if there is demand for it.
2360
2364
2361 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2365 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2362
2366
2363 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2367 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2364
2368
2365 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2369 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2366
2370
2367 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2371 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2368 code can work transparently for 2.2/2.3.
2372 code can work transparently for 2.2/2.3.
2369
2373
2370 2005-07-16 Fernando Perez <fperez@colorado.edu>
2374 2005-07-16 Fernando Perez <fperez@colorado.edu>
2371
2375
2372 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2376 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2373 out of the color scheme table used for coloring exception
2377 out of the color scheme table used for coloring exception
2374 tracebacks. This allows user code to add new schemes at runtime.
2378 tracebacks. This allows user code to add new schemes at runtime.
2375 This is a minimally modified version of the patch at
2379 This is a minimally modified version of the patch at
2376 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2380 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2377 for the contribution.
2381 for the contribution.
2378
2382
2379 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2383 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2380 slightly modified version of the patch in
2384 slightly modified version of the patch in
2381 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2385 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2382 to remove the previous try/except solution (which was costlier).
2386 to remove the previous try/except solution (which was costlier).
2383 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2387 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2384
2388
2385 2005-06-08 Fernando Perez <fperez@colorado.edu>
2389 2005-06-08 Fernando Perez <fperez@colorado.edu>
2386
2390
2387 * IPython/iplib.py (write/write_err): Add methods to abstract all
2391 * IPython/iplib.py (write/write_err): Add methods to abstract all
2388 I/O a bit more.
2392 I/O a bit more.
2389
2393
2390 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2394 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2391 warning, reported by Aric Hagberg, fix by JD Hunter.
2395 warning, reported by Aric Hagberg, fix by JD Hunter.
2392
2396
2393 2005-06-02 *** Released version 0.6.15
2397 2005-06-02 *** Released version 0.6.15
2394
2398
2395 2005-06-01 Fernando Perez <fperez@colorado.edu>
2399 2005-06-01 Fernando Perez <fperez@colorado.edu>
2396
2400
2397 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2401 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2398 tab-completion of filenames within open-quoted strings. Note that
2402 tab-completion of filenames within open-quoted strings. Note that
2399 this requires that in ~/.ipython/ipythonrc, users change the
2403 this requires that in ~/.ipython/ipythonrc, users change the
2400 readline delimiters configuration to read:
2404 readline delimiters configuration to read:
2401
2405
2402 readline_remove_delims -/~
2406 readline_remove_delims -/~
2403
2407
2404
2408
2405 2005-05-31 *** Released version 0.6.14
2409 2005-05-31 *** Released version 0.6.14
2406
2410
2407 2005-05-29 Fernando Perez <fperez@colorado.edu>
2411 2005-05-29 Fernando Perez <fperez@colorado.edu>
2408
2412
2409 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2413 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2410 with files not on the filesystem. Reported by Eliyahu Sandler
2414 with files not on the filesystem. Reported by Eliyahu Sandler
2411 <eli@gondolin.net>
2415 <eli@gondolin.net>
2412
2416
2413 2005-05-22 Fernando Perez <fperez@colorado.edu>
2417 2005-05-22 Fernando Perez <fperez@colorado.edu>
2414
2418
2415 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2419 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2416 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2420 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2417
2421
2418 2005-05-19 Fernando Perez <fperez@colorado.edu>
2422 2005-05-19 Fernando Perez <fperez@colorado.edu>
2419
2423
2420 * IPython/iplib.py (safe_execfile): close a file which could be
2424 * IPython/iplib.py (safe_execfile): close a file which could be
2421 left open (causing problems in win32, which locks open files).
2425 left open (causing problems in win32, which locks open files).
2422 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2426 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2423
2427
2424 2005-05-18 Fernando Perez <fperez@colorado.edu>
2428 2005-05-18 Fernando Perez <fperez@colorado.edu>
2425
2429
2426 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2430 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2427 keyword arguments correctly to safe_execfile().
2431 keyword arguments correctly to safe_execfile().
2428
2432
2429 2005-05-13 Fernando Perez <fperez@colorado.edu>
2433 2005-05-13 Fernando Perez <fperez@colorado.edu>
2430
2434
2431 * ipython.1: Added info about Qt to manpage, and threads warning
2435 * ipython.1: Added info about Qt to manpage, and threads warning
2432 to usage page (invoked with --help).
2436 to usage page (invoked with --help).
2433
2437
2434 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2438 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2435 new matcher (it goes at the end of the priority list) to do
2439 new matcher (it goes at the end of the priority list) to do
2436 tab-completion on named function arguments. Submitted by George
2440 tab-completion on named function arguments. Submitted by George
2437 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2441 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2438 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2442 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2439 for more details.
2443 for more details.
2440
2444
2441 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2445 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2442 SystemExit exceptions in the script being run. Thanks to a report
2446 SystemExit exceptions in the script being run. Thanks to a report
2443 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2447 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2444 producing very annoying behavior when running unit tests.
2448 producing very annoying behavior when running unit tests.
2445
2449
2446 2005-05-12 Fernando Perez <fperez@colorado.edu>
2450 2005-05-12 Fernando Perez <fperez@colorado.edu>
2447
2451
2448 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2452 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2449 which I'd broken (again) due to a changed regexp. In the process,
2453 which I'd broken (again) due to a changed regexp. In the process,
2450 added ';' as an escape to auto-quote the whole line without
2454 added ';' as an escape to auto-quote the whole line without
2451 splitting its arguments. Thanks to a report by Jerry McRae
2455 splitting its arguments. Thanks to a report by Jerry McRae
2452 <qrs0xyc02-AT-sneakemail.com>.
2456 <qrs0xyc02-AT-sneakemail.com>.
2453
2457
2454 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2458 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2455 possible crashes caused by a TokenError. Reported by Ed Schofield
2459 possible crashes caused by a TokenError. Reported by Ed Schofield
2456 <schofield-AT-ftw.at>.
2460 <schofield-AT-ftw.at>.
2457
2461
2458 2005-05-06 Fernando Perez <fperez@colorado.edu>
2462 2005-05-06 Fernando Perez <fperez@colorado.edu>
2459
2463
2460 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2464 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2461
2465
2462 2005-04-29 Fernando Perez <fperez@colorado.edu>
2466 2005-04-29 Fernando Perez <fperez@colorado.edu>
2463
2467
2464 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2468 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2465 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2469 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2466 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2470 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2467 which provides support for Qt interactive usage (similar to the
2471 which provides support for Qt interactive usage (similar to the
2468 existing one for WX and GTK). This had been often requested.
2472 existing one for WX and GTK). This had been often requested.
2469
2473
2470 2005-04-14 *** Released version 0.6.13
2474 2005-04-14 *** Released version 0.6.13
2471
2475
2472 2005-04-08 Fernando Perez <fperez@colorado.edu>
2476 2005-04-08 Fernando Perez <fperez@colorado.edu>
2473
2477
2474 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2478 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2475 from _ofind, which gets called on almost every input line. Now,
2479 from _ofind, which gets called on almost every input line. Now,
2476 we only try to get docstrings if they are actually going to be
2480 we only try to get docstrings if they are actually going to be
2477 used (the overhead of fetching unnecessary docstrings can be
2481 used (the overhead of fetching unnecessary docstrings can be
2478 noticeable for certain objects, such as Pyro proxies).
2482 noticeable for certain objects, such as Pyro proxies).
2479
2483
2480 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2484 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2481 for completers. For some reason I had been passing them the state
2485 for completers. For some reason I had been passing them the state
2482 variable, which completers never actually need, and was in
2486 variable, which completers never actually need, and was in
2483 conflict with the rlcompleter API. Custom completers ONLY need to
2487 conflict with the rlcompleter API. Custom completers ONLY need to
2484 take the text parameter.
2488 take the text parameter.
2485
2489
2486 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2490 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2487 work correctly in pysh. I've also moved all the logic which used
2491 work correctly in pysh. I've also moved all the logic which used
2488 to be in pysh.py here, which will prevent problems with future
2492 to be in pysh.py here, which will prevent problems with future
2489 upgrades. However, this time I must warn users to update their
2493 upgrades. However, this time I must warn users to update their
2490 pysh profile to include the line
2494 pysh profile to include the line
2491
2495
2492 import_all IPython.Extensions.InterpreterExec
2496 import_all IPython.Extensions.InterpreterExec
2493
2497
2494 because otherwise things won't work for them. They MUST also
2498 because otherwise things won't work for them. They MUST also
2495 delete pysh.py and the line
2499 delete pysh.py and the line
2496
2500
2497 execfile pysh.py
2501 execfile pysh.py
2498
2502
2499 from their ipythonrc-pysh.
2503 from their ipythonrc-pysh.
2500
2504
2501 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2505 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2502 robust in the face of objects whose dir() returns non-strings
2506 robust in the face of objects whose dir() returns non-strings
2503 (which it shouldn't, but some broken libs like ITK do). Thanks to
2507 (which it shouldn't, but some broken libs like ITK do). Thanks to
2504 a patch by John Hunter (implemented differently, though). Also
2508 a patch by John Hunter (implemented differently, though). Also
2505 minor improvements by using .extend instead of + on lists.
2509 minor improvements by using .extend instead of + on lists.
2506
2510
2507 * pysh.py:
2511 * pysh.py:
2508
2512
2509 2005-04-06 Fernando Perez <fperez@colorado.edu>
2513 2005-04-06 Fernando Perez <fperez@colorado.edu>
2510
2514
2511 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2515 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2512 by default, so that all users benefit from it. Those who don't
2516 by default, so that all users benefit from it. Those who don't
2513 want it can still turn it off.
2517 want it can still turn it off.
2514
2518
2515 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2519 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2516 config file, I'd forgotten about this, so users were getting it
2520 config file, I'd forgotten about this, so users were getting it
2517 off by default.
2521 off by default.
2518
2522
2519 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2523 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2520 consistency. Now magics can be called in multiline statements,
2524 consistency. Now magics can be called in multiline statements,
2521 and python variables can be expanded in magic calls via $var.
2525 and python variables can be expanded in magic calls via $var.
2522 This makes the magic system behave just like aliases or !system
2526 This makes the magic system behave just like aliases or !system
2523 calls.
2527 calls.
2524
2528
2525 2005-03-28 Fernando Perez <fperez@colorado.edu>
2529 2005-03-28 Fernando Perez <fperez@colorado.edu>
2526
2530
2527 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2531 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2528 expensive string additions for building command. Add support for
2532 expensive string additions for building command. Add support for
2529 trailing ';' when autocall is used.
2533 trailing ';' when autocall is used.
2530
2534
2531 2005-03-26 Fernando Perez <fperez@colorado.edu>
2535 2005-03-26 Fernando Perez <fperez@colorado.edu>
2532
2536
2533 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2537 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2534 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2538 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2535 ipython.el robust against prompts with any number of spaces
2539 ipython.el robust against prompts with any number of spaces
2536 (including 0) after the ':' character.
2540 (including 0) after the ':' character.
2537
2541
2538 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2542 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2539 continuation prompt, which misled users to think the line was
2543 continuation prompt, which misled users to think the line was
2540 already indented. Closes debian Bug#300847, reported to me by
2544 already indented. Closes debian Bug#300847, reported to me by
2541 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2545 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2542
2546
2543 2005-03-23 Fernando Perez <fperez@colorado.edu>
2547 2005-03-23 Fernando Perez <fperez@colorado.edu>
2544
2548
2545 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2549 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2546 properly aligned if they have embedded newlines.
2550 properly aligned if they have embedded newlines.
2547
2551
2548 * IPython/iplib.py (runlines): Add a public method to expose
2552 * IPython/iplib.py (runlines): Add a public method to expose
2549 IPython's code execution machinery, so that users can run strings
2553 IPython's code execution machinery, so that users can run strings
2550 as if they had been typed at the prompt interactively.
2554 as if they had been typed at the prompt interactively.
2551 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2555 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2552 methods which can call the system shell, but with python variable
2556 methods which can call the system shell, but with python variable
2553 expansion. The three such methods are: __IPYTHON__.system,
2557 expansion. The three such methods are: __IPYTHON__.system,
2554 .getoutput and .getoutputerror. These need to be documented in a
2558 .getoutput and .getoutputerror. These need to be documented in a
2555 'public API' section (to be written) of the manual.
2559 'public API' section (to be written) of the manual.
2556
2560
2557 2005-03-20 Fernando Perez <fperez@colorado.edu>
2561 2005-03-20 Fernando Perez <fperez@colorado.edu>
2558
2562
2559 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2563 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2560 for custom exception handling. This is quite powerful, and it
2564 for custom exception handling. This is quite powerful, and it
2561 allows for user-installable exception handlers which can trap
2565 allows for user-installable exception handlers which can trap
2562 custom exceptions at runtime and treat them separately from
2566 custom exceptions at runtime and treat them separately from
2563 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2567 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2564 Mantegazza <mantegazza-AT-ill.fr>.
2568 Mantegazza <mantegazza-AT-ill.fr>.
2565 (InteractiveShell.set_custom_completer): public API function to
2569 (InteractiveShell.set_custom_completer): public API function to
2566 add new completers at runtime.
2570 add new completers at runtime.
2567
2571
2568 2005-03-19 Fernando Perez <fperez@colorado.edu>
2572 2005-03-19 Fernando Perez <fperez@colorado.edu>
2569
2573
2570 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2574 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2571 allow objects which provide their docstrings via non-standard
2575 allow objects which provide their docstrings via non-standard
2572 mechanisms (like Pyro proxies) to still be inspected by ipython's
2576 mechanisms (like Pyro proxies) to still be inspected by ipython's
2573 ? system.
2577 ? system.
2574
2578
2575 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2579 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2576 automatic capture system. I tried quite hard to make it work
2580 automatic capture system. I tried quite hard to make it work
2577 reliably, and simply failed. I tried many combinations with the
2581 reliably, and simply failed. I tried many combinations with the
2578 subprocess module, but eventually nothing worked in all needed
2582 subprocess module, but eventually nothing worked in all needed
2579 cases (not blocking stdin for the child, duplicating stdout
2583 cases (not blocking stdin for the child, duplicating stdout
2580 without blocking, etc). The new %sc/%sx still do capture to these
2584 without blocking, etc). The new %sc/%sx still do capture to these
2581 magical list/string objects which make shell use much more
2585 magical list/string objects which make shell use much more
2582 conveninent, so not all is lost.
2586 conveninent, so not all is lost.
2583
2587
2584 XXX - FIX MANUAL for the change above!
2588 XXX - FIX MANUAL for the change above!
2585
2589
2586 (runsource): I copied code.py's runsource() into ipython to modify
2590 (runsource): I copied code.py's runsource() into ipython to modify
2587 it a bit. Now the code object and source to be executed are
2591 it a bit. Now the code object and source to be executed are
2588 stored in ipython. This makes this info accessible to third-party
2592 stored in ipython. This makes this info accessible to third-party
2589 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2593 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2590 Mantegazza <mantegazza-AT-ill.fr>.
2594 Mantegazza <mantegazza-AT-ill.fr>.
2591
2595
2592 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2596 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2593 history-search via readline (like C-p/C-n). I'd wanted this for a
2597 history-search via readline (like C-p/C-n). I'd wanted this for a
2594 long time, but only recently found out how to do it. For users
2598 long time, but only recently found out how to do it. For users
2595 who already have their ipythonrc files made and want this, just
2599 who already have their ipythonrc files made and want this, just
2596 add:
2600 add:
2597
2601
2598 readline_parse_and_bind "\e[A": history-search-backward
2602 readline_parse_and_bind "\e[A": history-search-backward
2599 readline_parse_and_bind "\e[B": history-search-forward
2603 readline_parse_and_bind "\e[B": history-search-forward
2600
2604
2601 2005-03-18 Fernando Perez <fperez@colorado.edu>
2605 2005-03-18 Fernando Perez <fperez@colorado.edu>
2602
2606
2603 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2607 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2604 LSString and SList classes which allow transparent conversions
2608 LSString and SList classes which allow transparent conversions
2605 between list mode and whitespace-separated string.
2609 between list mode and whitespace-separated string.
2606 (magic_r): Fix recursion problem in %r.
2610 (magic_r): Fix recursion problem in %r.
2607
2611
2608 * IPython/genutils.py (LSString): New class to be used for
2612 * IPython/genutils.py (LSString): New class to be used for
2609 automatic storage of the results of all alias/system calls in _o
2613 automatic storage of the results of all alias/system calls in _o
2610 and _e (stdout/err). These provide a .l/.list attribute which
2614 and _e (stdout/err). These provide a .l/.list attribute which
2611 does automatic splitting on newlines. This means that for most
2615 does automatic splitting on newlines. This means that for most
2612 uses, you'll never need to do capturing of output with %sc/%sx
2616 uses, you'll never need to do capturing of output with %sc/%sx
2613 anymore, since ipython keeps this always done for you. Note that
2617 anymore, since ipython keeps this always done for you. Note that
2614 only the LAST results are stored, the _o/e variables are
2618 only the LAST results are stored, the _o/e variables are
2615 overwritten on each call. If you need to save their contents
2619 overwritten on each call. If you need to save their contents
2616 further, simply bind them to any other name.
2620 further, simply bind them to any other name.
2617
2621
2618 2005-03-17 Fernando Perez <fperez@colorado.edu>
2622 2005-03-17 Fernando Perez <fperez@colorado.edu>
2619
2623
2620 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2624 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2621 prompt namespace handling.
2625 prompt namespace handling.
2622
2626
2623 2005-03-16 Fernando Perez <fperez@colorado.edu>
2627 2005-03-16 Fernando Perez <fperez@colorado.edu>
2624
2628
2625 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2629 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2626 classic prompts to be '>>> ' (final space was missing, and it
2630 classic prompts to be '>>> ' (final space was missing, and it
2627 trips the emacs python mode).
2631 trips the emacs python mode).
2628 (BasePrompt.__str__): Added safe support for dynamic prompt
2632 (BasePrompt.__str__): Added safe support for dynamic prompt
2629 strings. Now you can set your prompt string to be '$x', and the
2633 strings. Now you can set your prompt string to be '$x', and the
2630 value of x will be printed from your interactive namespace. The
2634 value of x will be printed from your interactive namespace. The
2631 interpolation syntax includes the full Itpl support, so
2635 interpolation syntax includes the full Itpl support, so
2632 ${foo()+x+bar()} is a valid prompt string now, and the function
2636 ${foo()+x+bar()} is a valid prompt string now, and the function
2633 calls will be made at runtime.
2637 calls will be made at runtime.
2634
2638
2635 2005-03-15 Fernando Perez <fperez@colorado.edu>
2639 2005-03-15 Fernando Perez <fperez@colorado.edu>
2636
2640
2637 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2641 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2638 avoid name clashes in pylab. %hist still works, it just forwards
2642 avoid name clashes in pylab. %hist still works, it just forwards
2639 the call to %history.
2643 the call to %history.
2640
2644
2641 2005-03-02 *** Released version 0.6.12
2645 2005-03-02 *** Released version 0.6.12
2642
2646
2643 2005-03-02 Fernando Perez <fperez@colorado.edu>
2647 2005-03-02 Fernando Perez <fperez@colorado.edu>
2644
2648
2645 * IPython/iplib.py (handle_magic): log magic calls properly as
2649 * IPython/iplib.py (handle_magic): log magic calls properly as
2646 ipmagic() function calls.
2650 ipmagic() function calls.
2647
2651
2648 * IPython/Magic.py (magic_time): Improved %time to support
2652 * IPython/Magic.py (magic_time): Improved %time to support
2649 statements and provide wall-clock as well as CPU time.
2653 statements and provide wall-clock as well as CPU time.
2650
2654
2651 2005-02-27 Fernando Perez <fperez@colorado.edu>
2655 2005-02-27 Fernando Perez <fperez@colorado.edu>
2652
2656
2653 * IPython/hooks.py: New hooks module, to expose user-modifiable
2657 * IPython/hooks.py: New hooks module, to expose user-modifiable
2654 IPython functionality in a clean manner. For now only the editor
2658 IPython functionality in a clean manner. For now only the editor
2655 hook is actually written, and other thigns which I intend to turn
2659 hook is actually written, and other thigns which I intend to turn
2656 into proper hooks aren't yet there. The display and prefilter
2660 into proper hooks aren't yet there. The display and prefilter
2657 stuff, for example, should be hooks. But at least now the
2661 stuff, for example, should be hooks. But at least now the
2658 framework is in place, and the rest can be moved here with more
2662 framework is in place, and the rest can be moved here with more
2659 time later. IPython had had a .hooks variable for a long time for
2663 time later. IPython had had a .hooks variable for a long time for
2660 this purpose, but I'd never actually used it for anything.
2664 this purpose, but I'd never actually used it for anything.
2661
2665
2662 2005-02-26 Fernando Perez <fperez@colorado.edu>
2666 2005-02-26 Fernando Perez <fperez@colorado.edu>
2663
2667
2664 * IPython/ipmaker.py (make_IPython): make the default ipython
2668 * IPython/ipmaker.py (make_IPython): make the default ipython
2665 directory be called _ipython under win32, to follow more the
2669 directory be called _ipython under win32, to follow more the
2666 naming peculiarities of that platform (where buggy software like
2670 naming peculiarities of that platform (where buggy software like
2667 Visual Sourcesafe breaks with .named directories). Reported by
2671 Visual Sourcesafe breaks with .named directories). Reported by
2668 Ville Vainio.
2672 Ville Vainio.
2669
2673
2670 2005-02-23 Fernando Perez <fperez@colorado.edu>
2674 2005-02-23 Fernando Perez <fperez@colorado.edu>
2671
2675
2672 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2676 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2673 auto_aliases for win32 which were causing problems. Users can
2677 auto_aliases for win32 which were causing problems. Users can
2674 define the ones they personally like.
2678 define the ones they personally like.
2675
2679
2676 2005-02-21 Fernando Perez <fperez@colorado.edu>
2680 2005-02-21 Fernando Perez <fperez@colorado.edu>
2677
2681
2678 * IPython/Magic.py (magic_time): new magic to time execution of
2682 * IPython/Magic.py (magic_time): new magic to time execution of
2679 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2683 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2680
2684
2681 2005-02-19 Fernando Perez <fperez@colorado.edu>
2685 2005-02-19 Fernando Perez <fperez@colorado.edu>
2682
2686
2683 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2687 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2684 into keys (for prompts, for example).
2688 into keys (for prompts, for example).
2685
2689
2686 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2690 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2687 prompts in case users want them. This introduces a small behavior
2691 prompts in case users want them. This introduces a small behavior
2688 change: ipython does not automatically add a space to all prompts
2692 change: ipython does not automatically add a space to all prompts
2689 anymore. To get the old prompts with a space, users should add it
2693 anymore. To get the old prompts with a space, users should add it
2690 manually to their ipythonrc file, so for example prompt_in1 should
2694 manually to their ipythonrc file, so for example prompt_in1 should
2691 now read 'In [\#]: ' instead of 'In [\#]:'.
2695 now read 'In [\#]: ' instead of 'In [\#]:'.
2692 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2696 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2693 file) to control left-padding of secondary prompts.
2697 file) to control left-padding of secondary prompts.
2694
2698
2695 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2699 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2696 the profiler can't be imported. Fix for Debian, which removed
2700 the profiler can't be imported. Fix for Debian, which removed
2697 profile.py because of License issues. I applied a slightly
2701 profile.py because of License issues. I applied a slightly
2698 modified version of the original Debian patch at
2702 modified version of the original Debian patch at
2699 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2703 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2700
2704
2701 2005-02-17 Fernando Perez <fperez@colorado.edu>
2705 2005-02-17 Fernando Perez <fperez@colorado.edu>
2702
2706
2703 * IPython/genutils.py (native_line_ends): Fix bug which would
2707 * IPython/genutils.py (native_line_ends): Fix bug which would
2704 cause improper line-ends under win32 b/c I was not opening files
2708 cause improper line-ends under win32 b/c I was not opening files
2705 in binary mode. Bug report and fix thanks to Ville.
2709 in binary mode. Bug report and fix thanks to Ville.
2706
2710
2707 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2711 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2708 trying to catch spurious foo[1] autocalls. My fix actually broke
2712 trying to catch spurious foo[1] autocalls. My fix actually broke
2709 ',/' autoquote/call with explicit escape (bad regexp).
2713 ',/' autoquote/call with explicit escape (bad regexp).
2710
2714
2711 2005-02-15 *** Released version 0.6.11
2715 2005-02-15 *** Released version 0.6.11
2712
2716
2713 2005-02-14 Fernando Perez <fperez@colorado.edu>
2717 2005-02-14 Fernando Perez <fperez@colorado.edu>
2714
2718
2715 * IPython/background_jobs.py: New background job management
2719 * IPython/background_jobs.py: New background job management
2716 subsystem. This is implemented via a new set of classes, and
2720 subsystem. This is implemented via a new set of classes, and
2717 IPython now provides a builtin 'jobs' object for background job
2721 IPython now provides a builtin 'jobs' object for background job
2718 execution. A convenience %bg magic serves as a lightweight
2722 execution. A convenience %bg magic serves as a lightweight
2719 frontend for starting the more common type of calls. This was
2723 frontend for starting the more common type of calls. This was
2720 inspired by discussions with B. Granger and the BackgroundCommand
2724 inspired by discussions with B. Granger and the BackgroundCommand
2721 class described in the book Python Scripting for Computational
2725 class described in the book Python Scripting for Computational
2722 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2726 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2723 (although ultimately no code from this text was used, as IPython's
2727 (although ultimately no code from this text was used, as IPython's
2724 system is a separate implementation).
2728 system is a separate implementation).
2725
2729
2726 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2730 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2727 to control the completion of single/double underscore names
2731 to control the completion of single/double underscore names
2728 separately. As documented in the example ipytonrc file, the
2732 separately. As documented in the example ipytonrc file, the
2729 readline_omit__names variable can now be set to 2, to omit even
2733 readline_omit__names variable can now be set to 2, to omit even
2730 single underscore names. Thanks to a patch by Brian Wong
2734 single underscore names. Thanks to a patch by Brian Wong
2731 <BrianWong-AT-AirgoNetworks.Com>.
2735 <BrianWong-AT-AirgoNetworks.Com>.
2732 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2736 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2733 be autocalled as foo([1]) if foo were callable. A problem for
2737 be autocalled as foo([1]) if foo were callable. A problem for
2734 things which are both callable and implement __getitem__.
2738 things which are both callable and implement __getitem__.
2735 (init_readline): Fix autoindentation for win32. Thanks to a patch
2739 (init_readline): Fix autoindentation for win32. Thanks to a patch
2736 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2740 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2737
2741
2738 2005-02-12 Fernando Perez <fperez@colorado.edu>
2742 2005-02-12 Fernando Perez <fperez@colorado.edu>
2739
2743
2740 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2744 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2741 which I had written long ago to sort out user error messages which
2745 which I had written long ago to sort out user error messages which
2742 may occur during startup. This seemed like a good idea initially,
2746 may occur during startup. This seemed like a good idea initially,
2743 but it has proven a disaster in retrospect. I don't want to
2747 but it has proven a disaster in retrospect. I don't want to
2744 change much code for now, so my fix is to set the internal 'debug'
2748 change much code for now, so my fix is to set the internal 'debug'
2745 flag to true everywhere, whose only job was precisely to control
2749 flag to true everywhere, whose only job was precisely to control
2746 this subsystem. This closes issue 28 (as well as avoiding all
2750 this subsystem. This closes issue 28 (as well as avoiding all
2747 sorts of strange hangups which occur from time to time).
2751 sorts of strange hangups which occur from time to time).
2748
2752
2749 2005-02-07 Fernando Perez <fperez@colorado.edu>
2753 2005-02-07 Fernando Perez <fperez@colorado.edu>
2750
2754
2751 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2755 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2752 previous call produced a syntax error.
2756 previous call produced a syntax error.
2753
2757
2754 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2758 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2755 classes without constructor.
2759 classes without constructor.
2756
2760
2757 2005-02-06 Fernando Perez <fperez@colorado.edu>
2761 2005-02-06 Fernando Perez <fperez@colorado.edu>
2758
2762
2759 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2763 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2760 completions with the results of each matcher, so we return results
2764 completions with the results of each matcher, so we return results
2761 to the user from all namespaces. This breaks with ipython
2765 to the user from all namespaces. This breaks with ipython
2762 tradition, but I think it's a nicer behavior. Now you get all
2766 tradition, but I think it's a nicer behavior. Now you get all
2763 possible completions listed, from all possible namespaces (python,
2767 possible completions listed, from all possible namespaces (python,
2764 filesystem, magics...) After a request by John Hunter
2768 filesystem, magics...) After a request by John Hunter
2765 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2769 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2766
2770
2767 2005-02-05 Fernando Perez <fperez@colorado.edu>
2771 2005-02-05 Fernando Perez <fperez@colorado.edu>
2768
2772
2769 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2773 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2770 the call had quote characters in it (the quotes were stripped).
2774 the call had quote characters in it (the quotes were stripped).
2771
2775
2772 2005-01-31 Fernando Perez <fperez@colorado.edu>
2776 2005-01-31 Fernando Perez <fperez@colorado.edu>
2773
2777
2774 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2778 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2775 Itpl.itpl() to make the code more robust against psyco
2779 Itpl.itpl() to make the code more robust against psyco
2776 optimizations.
2780 optimizations.
2777
2781
2778 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2782 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2779 of causing an exception. Quicker, cleaner.
2783 of causing an exception. Quicker, cleaner.
2780
2784
2781 2005-01-28 Fernando Perez <fperez@colorado.edu>
2785 2005-01-28 Fernando Perez <fperez@colorado.edu>
2782
2786
2783 * scripts/ipython_win_post_install.py (install): hardcode
2787 * scripts/ipython_win_post_install.py (install): hardcode
2784 sys.prefix+'python.exe' as the executable path. It turns out that
2788 sys.prefix+'python.exe' as the executable path. It turns out that
2785 during the post-installation run, sys.executable resolves to the
2789 during the post-installation run, sys.executable resolves to the
2786 name of the binary installer! I should report this as a distutils
2790 name of the binary installer! I should report this as a distutils
2787 bug, I think. I updated the .10 release with this tiny fix, to
2791 bug, I think. I updated the .10 release with this tiny fix, to
2788 avoid annoying the lists further.
2792 avoid annoying the lists further.
2789
2793
2790 2005-01-27 *** Released version 0.6.10
2794 2005-01-27 *** Released version 0.6.10
2791
2795
2792 2005-01-27 Fernando Perez <fperez@colorado.edu>
2796 2005-01-27 Fernando Perez <fperez@colorado.edu>
2793
2797
2794 * IPython/numutils.py (norm): Added 'inf' as optional name for
2798 * IPython/numutils.py (norm): Added 'inf' as optional name for
2795 L-infinity norm, included references to mathworld.com for vector
2799 L-infinity norm, included references to mathworld.com for vector
2796 norm definitions.
2800 norm definitions.
2797 (amin/amax): added amin/amax for array min/max. Similar to what
2801 (amin/amax): added amin/amax for array min/max. Similar to what
2798 pylab ships with after the recent reorganization of names.
2802 pylab ships with after the recent reorganization of names.
2799 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2803 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2800
2804
2801 * ipython.el: committed Alex's recent fixes and improvements.
2805 * ipython.el: committed Alex's recent fixes and improvements.
2802 Tested with python-mode from CVS, and it looks excellent. Since
2806 Tested with python-mode from CVS, and it looks excellent. Since
2803 python-mode hasn't released anything in a while, I'm temporarily
2807 python-mode hasn't released anything in a while, I'm temporarily
2804 putting a copy of today's CVS (v 4.70) of python-mode in:
2808 putting a copy of today's CVS (v 4.70) of python-mode in:
2805 http://ipython.scipy.org/tmp/python-mode.el
2809 http://ipython.scipy.org/tmp/python-mode.el
2806
2810
2807 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2811 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2808 sys.executable for the executable name, instead of assuming it's
2812 sys.executable for the executable name, instead of assuming it's
2809 called 'python.exe' (the post-installer would have produced broken
2813 called 'python.exe' (the post-installer would have produced broken
2810 setups on systems with a differently named python binary).
2814 setups on systems with a differently named python binary).
2811
2815
2812 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2816 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2813 references to os.linesep, to make the code more
2817 references to os.linesep, to make the code more
2814 platform-independent. This is also part of the win32 coloring
2818 platform-independent. This is also part of the win32 coloring
2815 fixes.
2819 fixes.
2816
2820
2817 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2821 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2818 lines, which actually cause coloring bugs because the length of
2822 lines, which actually cause coloring bugs because the length of
2819 the line is very difficult to correctly compute with embedded
2823 the line is very difficult to correctly compute with embedded
2820 escapes. This was the source of all the coloring problems under
2824 escapes. This was the source of all the coloring problems under
2821 Win32. I think that _finally_, Win32 users have a properly
2825 Win32. I think that _finally_, Win32 users have a properly
2822 working ipython in all respects. This would never have happened
2826 working ipython in all respects. This would never have happened
2823 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2827 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2824
2828
2825 2005-01-26 *** Released version 0.6.9
2829 2005-01-26 *** Released version 0.6.9
2826
2830
2827 2005-01-25 Fernando Perez <fperez@colorado.edu>
2831 2005-01-25 Fernando Perez <fperez@colorado.edu>
2828
2832
2829 * setup.py: finally, we have a true Windows installer, thanks to
2833 * setup.py: finally, we have a true Windows installer, thanks to
2830 the excellent work of Viktor Ransmayr
2834 the excellent work of Viktor Ransmayr
2831 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2835 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2832 Windows users. The setup routine is quite a bit cleaner thanks to
2836 Windows users. The setup routine is quite a bit cleaner thanks to
2833 this, and the post-install script uses the proper functions to
2837 this, and the post-install script uses the proper functions to
2834 allow a clean de-installation using the standard Windows Control
2838 allow a clean de-installation using the standard Windows Control
2835 Panel.
2839 Panel.
2836
2840
2837 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2841 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2838 environment variable under all OSes (including win32) if
2842 environment variable under all OSes (including win32) if
2839 available. This will give consistency to win32 users who have set
2843 available. This will give consistency to win32 users who have set
2840 this variable for any reason. If os.environ['HOME'] fails, the
2844 this variable for any reason. If os.environ['HOME'] fails, the
2841 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2845 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2842
2846
2843 2005-01-24 Fernando Perez <fperez@colorado.edu>
2847 2005-01-24 Fernando Perez <fperez@colorado.edu>
2844
2848
2845 * IPython/numutils.py (empty_like): add empty_like(), similar to
2849 * IPython/numutils.py (empty_like): add empty_like(), similar to
2846 zeros_like() but taking advantage of the new empty() Numeric routine.
2850 zeros_like() but taking advantage of the new empty() Numeric routine.
2847
2851
2848 2005-01-23 *** Released version 0.6.8
2852 2005-01-23 *** Released version 0.6.8
2849
2853
2850 2005-01-22 Fernando Perez <fperez@colorado.edu>
2854 2005-01-22 Fernando Perez <fperez@colorado.edu>
2851
2855
2852 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2856 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2853 automatic show() calls. After discussing things with JDH, it
2857 automatic show() calls. After discussing things with JDH, it
2854 turns out there are too many corner cases where this can go wrong.
2858 turns out there are too many corner cases where this can go wrong.
2855 It's best not to try to be 'too smart', and simply have ipython
2859 It's best not to try to be 'too smart', and simply have ipython
2856 reproduce as much as possible the default behavior of a normal
2860 reproduce as much as possible the default behavior of a normal
2857 python shell.
2861 python shell.
2858
2862
2859 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2863 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2860 line-splitting regexp and _prefilter() to avoid calling getattr()
2864 line-splitting regexp and _prefilter() to avoid calling getattr()
2861 on assignments. This closes
2865 on assignments. This closes
2862 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2866 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2863 readline uses getattr(), so a simple <TAB> keypress is still
2867 readline uses getattr(), so a simple <TAB> keypress is still
2864 enough to trigger getattr() calls on an object.
2868 enough to trigger getattr() calls on an object.
2865
2869
2866 2005-01-21 Fernando Perez <fperez@colorado.edu>
2870 2005-01-21 Fernando Perez <fperez@colorado.edu>
2867
2871
2868 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2872 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2869 docstring under pylab so it doesn't mask the original.
2873 docstring under pylab so it doesn't mask the original.
2870
2874
2871 2005-01-21 *** Released version 0.6.7
2875 2005-01-21 *** Released version 0.6.7
2872
2876
2873 2005-01-21 Fernando Perez <fperez@colorado.edu>
2877 2005-01-21 Fernando Perez <fperez@colorado.edu>
2874
2878
2875 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2879 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2876 signal handling for win32 users in multithreaded mode.
2880 signal handling for win32 users in multithreaded mode.
2877
2881
2878 2005-01-17 Fernando Perez <fperez@colorado.edu>
2882 2005-01-17 Fernando Perez <fperez@colorado.edu>
2879
2883
2880 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2884 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2881 instances with no __init__. After a crash report by Norbert Nemec
2885 instances with no __init__. After a crash report by Norbert Nemec
2882 <Norbert-AT-nemec-online.de>.
2886 <Norbert-AT-nemec-online.de>.
2883
2887
2884 2005-01-14 Fernando Perez <fperez@colorado.edu>
2888 2005-01-14 Fernando Perez <fperez@colorado.edu>
2885
2889
2886 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2890 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2887 names for verbose exceptions, when multiple dotted names and the
2891 names for verbose exceptions, when multiple dotted names and the
2888 'parent' object were present on the same line.
2892 'parent' object were present on the same line.
2889
2893
2890 2005-01-11 Fernando Perez <fperez@colorado.edu>
2894 2005-01-11 Fernando Perez <fperez@colorado.edu>
2891
2895
2892 * IPython/genutils.py (flag_calls): new utility to trap and flag
2896 * IPython/genutils.py (flag_calls): new utility to trap and flag
2893 calls in functions. I need it to clean up matplotlib support.
2897 calls in functions. I need it to clean up matplotlib support.
2894 Also removed some deprecated code in genutils.
2898 Also removed some deprecated code in genutils.
2895
2899
2896 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2900 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2897 that matplotlib scripts called with %run, which don't call show()
2901 that matplotlib scripts called with %run, which don't call show()
2898 themselves, still have their plotting windows open.
2902 themselves, still have their plotting windows open.
2899
2903
2900 2005-01-05 Fernando Perez <fperez@colorado.edu>
2904 2005-01-05 Fernando Perez <fperez@colorado.edu>
2901
2905
2902 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2906 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2903 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2907 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2904
2908
2905 2004-12-19 Fernando Perez <fperez@colorado.edu>
2909 2004-12-19 Fernando Perez <fperez@colorado.edu>
2906
2910
2907 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2911 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2908 parent_runcode, which was an eyesore. The same result can be
2912 parent_runcode, which was an eyesore. The same result can be
2909 obtained with Python's regular superclass mechanisms.
2913 obtained with Python's regular superclass mechanisms.
2910
2914
2911 2004-12-17 Fernando Perez <fperez@colorado.edu>
2915 2004-12-17 Fernando Perez <fperez@colorado.edu>
2912
2916
2913 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2917 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2914 reported by Prabhu.
2918 reported by Prabhu.
2915 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2919 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2916 sys.stderr) instead of explicitly calling sys.stderr. This helps
2920 sys.stderr) instead of explicitly calling sys.stderr. This helps
2917 maintain our I/O abstractions clean, for future GUI embeddings.
2921 maintain our I/O abstractions clean, for future GUI embeddings.
2918
2922
2919 * IPython/genutils.py (info): added new utility for sys.stderr
2923 * IPython/genutils.py (info): added new utility for sys.stderr
2920 unified info message handling (thin wrapper around warn()).
2924 unified info message handling (thin wrapper around warn()).
2921
2925
2922 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2926 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2923 composite (dotted) names on verbose exceptions.
2927 composite (dotted) names on verbose exceptions.
2924 (VerboseTB.nullrepr): harden against another kind of errors which
2928 (VerboseTB.nullrepr): harden against another kind of errors which
2925 Python's inspect module can trigger, and which were crashing
2929 Python's inspect module can trigger, and which were crashing
2926 IPython. Thanks to a report by Marco Lombardi
2930 IPython. Thanks to a report by Marco Lombardi
2927 <mlombard-AT-ma010192.hq.eso.org>.
2931 <mlombard-AT-ma010192.hq.eso.org>.
2928
2932
2929 2004-12-13 *** Released version 0.6.6
2933 2004-12-13 *** Released version 0.6.6
2930
2934
2931 2004-12-12 Fernando Perez <fperez@colorado.edu>
2935 2004-12-12 Fernando Perez <fperez@colorado.edu>
2932
2936
2933 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2937 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2934 generated by pygtk upon initialization if it was built without
2938 generated by pygtk upon initialization if it was built without
2935 threads (for matplotlib users). After a crash reported by
2939 threads (for matplotlib users). After a crash reported by
2936 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2940 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2937
2941
2938 * IPython/ipmaker.py (make_IPython): fix small bug in the
2942 * IPython/ipmaker.py (make_IPython): fix small bug in the
2939 import_some parameter for multiple imports.
2943 import_some parameter for multiple imports.
2940
2944
2941 * IPython/iplib.py (ipmagic): simplified the interface of
2945 * IPython/iplib.py (ipmagic): simplified the interface of
2942 ipmagic() to take a single string argument, just as it would be
2946 ipmagic() to take a single string argument, just as it would be
2943 typed at the IPython cmd line.
2947 typed at the IPython cmd line.
2944 (ipalias): Added new ipalias() with an interface identical to
2948 (ipalias): Added new ipalias() with an interface identical to
2945 ipmagic(). This completes exposing a pure python interface to the
2949 ipmagic(). This completes exposing a pure python interface to the
2946 alias and magic system, which can be used in loops or more complex
2950 alias and magic system, which can be used in loops or more complex
2947 code where IPython's automatic line mangling is not active.
2951 code where IPython's automatic line mangling is not active.
2948
2952
2949 * IPython/genutils.py (timing): changed interface of timing to
2953 * IPython/genutils.py (timing): changed interface of timing to
2950 simply run code once, which is the most common case. timings()
2954 simply run code once, which is the most common case. timings()
2951 remains unchanged, for the cases where you want multiple runs.
2955 remains unchanged, for the cases where you want multiple runs.
2952
2956
2953 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2957 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2954 bug where Python2.2 crashes with exec'ing code which does not end
2958 bug where Python2.2 crashes with exec'ing code which does not end
2955 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2959 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2956 before.
2960 before.
2957
2961
2958 2004-12-10 Fernando Perez <fperez@colorado.edu>
2962 2004-12-10 Fernando Perez <fperez@colorado.edu>
2959
2963
2960 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2964 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2961 -t to -T, to accomodate the new -t flag in %run (the %run and
2965 -t to -T, to accomodate the new -t flag in %run (the %run and
2962 %prun options are kind of intermixed, and it's not easy to change
2966 %prun options are kind of intermixed, and it's not easy to change
2963 this with the limitations of python's getopt).
2967 this with the limitations of python's getopt).
2964
2968
2965 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2969 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2966 the execution of scripts. It's not as fine-tuned as timeit.py,
2970 the execution of scripts. It's not as fine-tuned as timeit.py,
2967 but it works from inside ipython (and under 2.2, which lacks
2971 but it works from inside ipython (and under 2.2, which lacks
2968 timeit.py). Optionally a number of runs > 1 can be given for
2972 timeit.py). Optionally a number of runs > 1 can be given for
2969 timing very short-running code.
2973 timing very short-running code.
2970
2974
2971 * IPython/genutils.py (uniq_stable): new routine which returns a
2975 * IPython/genutils.py (uniq_stable): new routine which returns a
2972 list of unique elements in any iterable, but in stable order of
2976 list of unique elements in any iterable, but in stable order of
2973 appearance. I needed this for the ultraTB fixes, and it's a handy
2977 appearance. I needed this for the ultraTB fixes, and it's a handy
2974 utility.
2978 utility.
2975
2979
2976 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2980 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2977 dotted names in Verbose exceptions. This had been broken since
2981 dotted names in Verbose exceptions. This had been broken since
2978 the very start, now x.y will properly be printed in a Verbose
2982 the very start, now x.y will properly be printed in a Verbose
2979 traceback, instead of x being shown and y appearing always as an
2983 traceback, instead of x being shown and y appearing always as an
2980 'undefined global'. Getting this to work was a bit tricky,
2984 'undefined global'. Getting this to work was a bit tricky,
2981 because by default python tokenizers are stateless. Saved by
2985 because by default python tokenizers are stateless. Saved by
2982 python's ability to easily add a bit of state to an arbitrary
2986 python's ability to easily add a bit of state to an arbitrary
2983 function (without needing to build a full-blown callable object).
2987 function (without needing to build a full-blown callable object).
2984
2988
2985 Also big cleanup of this code, which had horrendous runtime
2989 Also big cleanup of this code, which had horrendous runtime
2986 lookups of zillions of attributes for colorization. Moved all
2990 lookups of zillions of attributes for colorization. Moved all
2987 this code into a few templates, which make it cleaner and quicker.
2991 this code into a few templates, which make it cleaner and quicker.
2988
2992
2989 Printout quality was also improved for Verbose exceptions: one
2993 Printout quality was also improved for Verbose exceptions: one
2990 variable per line, and memory addresses are printed (this can be
2994 variable per line, and memory addresses are printed (this can be
2991 quite handy in nasty debugging situations, which is what Verbose
2995 quite handy in nasty debugging situations, which is what Verbose
2992 is for).
2996 is for).
2993
2997
2994 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2998 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2995 the command line as scripts to be loaded by embedded instances.
2999 the command line as scripts to be loaded by embedded instances.
2996 Doing so has the potential for an infinite recursion if there are
3000 Doing so has the potential for an infinite recursion if there are
2997 exceptions thrown in the process. This fixes a strange crash
3001 exceptions thrown in the process. This fixes a strange crash
2998 reported by Philippe MULLER <muller-AT-irit.fr>.
3002 reported by Philippe MULLER <muller-AT-irit.fr>.
2999
3003
3000 2004-12-09 Fernando Perez <fperez@colorado.edu>
3004 2004-12-09 Fernando Perez <fperez@colorado.edu>
3001
3005
3002 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3006 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3003 to reflect new names in matplotlib, which now expose the
3007 to reflect new names in matplotlib, which now expose the
3004 matlab-compatible interface via a pylab module instead of the
3008 matlab-compatible interface via a pylab module instead of the
3005 'matlab' name. The new code is backwards compatible, so users of
3009 'matlab' name. The new code is backwards compatible, so users of
3006 all matplotlib versions are OK. Patch by J. Hunter.
3010 all matplotlib versions are OK. Patch by J. Hunter.
3007
3011
3008 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3012 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3009 of __init__ docstrings for instances (class docstrings are already
3013 of __init__ docstrings for instances (class docstrings are already
3010 automatically printed). Instances with customized docstrings
3014 automatically printed). Instances with customized docstrings
3011 (indep. of the class) are also recognized and all 3 separate
3015 (indep. of the class) are also recognized and all 3 separate
3012 docstrings are printed (instance, class, constructor). After some
3016 docstrings are printed (instance, class, constructor). After some
3013 comments/suggestions by J. Hunter.
3017 comments/suggestions by J. Hunter.
3014
3018
3015 2004-12-05 Fernando Perez <fperez@colorado.edu>
3019 2004-12-05 Fernando Perez <fperez@colorado.edu>
3016
3020
3017 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3021 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3018 warnings when tab-completion fails and triggers an exception.
3022 warnings when tab-completion fails and triggers an exception.
3019
3023
3020 2004-12-03 Fernando Perez <fperez@colorado.edu>
3024 2004-12-03 Fernando Perez <fperez@colorado.edu>
3021
3025
3022 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3026 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3023 be triggered when using 'run -p'. An incorrect option flag was
3027 be triggered when using 'run -p'. An incorrect option flag was
3024 being set ('d' instead of 'D').
3028 being set ('d' instead of 'D').
3025 (manpage): fix missing escaped \- sign.
3029 (manpage): fix missing escaped \- sign.
3026
3030
3027 2004-11-30 *** Released version 0.6.5
3031 2004-11-30 *** Released version 0.6.5
3028
3032
3029 2004-11-30 Fernando Perez <fperez@colorado.edu>
3033 2004-11-30 Fernando Perez <fperez@colorado.edu>
3030
3034
3031 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3035 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3032 setting with -d option.
3036 setting with -d option.
3033
3037
3034 * setup.py (docfiles): Fix problem where the doc glob I was using
3038 * setup.py (docfiles): Fix problem where the doc glob I was using
3035 was COMPLETELY BROKEN. It was giving the right files by pure
3039 was COMPLETELY BROKEN. It was giving the right files by pure
3036 accident, but failed once I tried to include ipython.el. Note:
3040 accident, but failed once I tried to include ipython.el. Note:
3037 glob() does NOT allow you to do exclusion on multiple endings!
3041 glob() does NOT allow you to do exclusion on multiple endings!
3038
3042
3039 2004-11-29 Fernando Perez <fperez@colorado.edu>
3043 2004-11-29 Fernando Perez <fperez@colorado.edu>
3040
3044
3041 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3045 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3042 the manpage as the source. Better formatting & consistency.
3046 the manpage as the source. Better formatting & consistency.
3043
3047
3044 * IPython/Magic.py (magic_run): Added new -d option, to run
3048 * IPython/Magic.py (magic_run): Added new -d option, to run
3045 scripts under the control of the python pdb debugger. Note that
3049 scripts under the control of the python pdb debugger. Note that
3046 this required changing the %prun option -d to -D, to avoid a clash
3050 this required changing the %prun option -d to -D, to avoid a clash
3047 (since %run must pass options to %prun, and getopt is too dumb to
3051 (since %run must pass options to %prun, and getopt is too dumb to
3048 handle options with string values with embedded spaces). Thanks
3052 handle options with string values with embedded spaces). Thanks
3049 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3053 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3050 (magic_who_ls): added type matching to %who and %whos, so that one
3054 (magic_who_ls): added type matching to %who and %whos, so that one
3051 can filter their output to only include variables of certain
3055 can filter their output to only include variables of certain
3052 types. Another suggestion by Matthew.
3056 types. Another suggestion by Matthew.
3053 (magic_whos): Added memory summaries in kb and Mb for arrays.
3057 (magic_whos): Added memory summaries in kb and Mb for arrays.
3054 (magic_who): Improve formatting (break lines every 9 vars).
3058 (magic_who): Improve formatting (break lines every 9 vars).
3055
3059
3056 2004-11-28 Fernando Perez <fperez@colorado.edu>
3060 2004-11-28 Fernando Perez <fperez@colorado.edu>
3057
3061
3058 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3062 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3059 cache when empty lines were present.
3063 cache when empty lines were present.
3060
3064
3061 2004-11-24 Fernando Perez <fperez@colorado.edu>
3065 2004-11-24 Fernando Perez <fperez@colorado.edu>
3062
3066
3063 * IPython/usage.py (__doc__): document the re-activated threading
3067 * IPython/usage.py (__doc__): document the re-activated threading
3064 options for WX and GTK.
3068 options for WX and GTK.
3065
3069
3066 2004-11-23 Fernando Perez <fperez@colorado.edu>
3070 2004-11-23 Fernando Perez <fperez@colorado.edu>
3067
3071
3068 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3072 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3069 the -wthread and -gthread options, along with a new -tk one to try
3073 the -wthread and -gthread options, along with a new -tk one to try
3070 and coordinate Tk threading with wx/gtk. The tk support is very
3074 and coordinate Tk threading with wx/gtk. The tk support is very
3071 platform dependent, since it seems to require Tcl and Tk to be
3075 platform dependent, since it seems to require Tcl and Tk to be
3072 built with threads (Fedora1/2 appears NOT to have it, but in
3076 built with threads (Fedora1/2 appears NOT to have it, but in
3073 Prabhu's Debian boxes it works OK). But even with some Tk
3077 Prabhu's Debian boxes it works OK). But even with some Tk
3074 limitations, this is a great improvement.
3078 limitations, this is a great improvement.
3075
3079
3076 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3080 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3077 info in user prompts. Patch by Prabhu.
3081 info in user prompts. Patch by Prabhu.
3078
3082
3079 2004-11-18 Fernando Perez <fperez@colorado.edu>
3083 2004-11-18 Fernando Perez <fperez@colorado.edu>
3080
3084
3081 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3085 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3082 EOFErrors and bail, to avoid infinite loops if a non-terminating
3086 EOFErrors and bail, to avoid infinite loops if a non-terminating
3083 file is fed into ipython. Patch submitted in issue 19 by user,
3087 file is fed into ipython. Patch submitted in issue 19 by user,
3084 many thanks.
3088 many thanks.
3085
3089
3086 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3090 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3087 autoquote/parens in continuation prompts, which can cause lots of
3091 autoquote/parens in continuation prompts, which can cause lots of
3088 problems. Closes roundup issue 20.
3092 problems. Closes roundup issue 20.
3089
3093
3090 2004-11-17 Fernando Perez <fperez@colorado.edu>
3094 2004-11-17 Fernando Perez <fperez@colorado.edu>
3091
3095
3092 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3096 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3093 reported as debian bug #280505. I'm not sure my local changelog
3097 reported as debian bug #280505. I'm not sure my local changelog
3094 entry has the proper debian format (Jack?).
3098 entry has the proper debian format (Jack?).
3095
3099
3096 2004-11-08 *** Released version 0.6.4
3100 2004-11-08 *** Released version 0.6.4
3097
3101
3098 2004-11-08 Fernando Perez <fperez@colorado.edu>
3102 2004-11-08 Fernando Perez <fperez@colorado.edu>
3099
3103
3100 * IPython/iplib.py (init_readline): Fix exit message for Windows
3104 * IPython/iplib.py (init_readline): Fix exit message for Windows
3101 when readline is active. Thanks to a report by Eric Jones
3105 when readline is active. Thanks to a report by Eric Jones
3102 <eric-AT-enthought.com>.
3106 <eric-AT-enthought.com>.
3103
3107
3104 2004-11-07 Fernando Perez <fperez@colorado.edu>
3108 2004-11-07 Fernando Perez <fperez@colorado.edu>
3105
3109
3106 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3110 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3107 sometimes seen by win2k/cygwin users.
3111 sometimes seen by win2k/cygwin users.
3108
3112
3109 2004-11-06 Fernando Perez <fperez@colorado.edu>
3113 2004-11-06 Fernando Perez <fperez@colorado.edu>
3110
3114
3111 * IPython/iplib.py (interact): Change the handling of %Exit from
3115 * IPython/iplib.py (interact): Change the handling of %Exit from
3112 trying to propagate a SystemExit to an internal ipython flag.
3116 trying to propagate a SystemExit to an internal ipython flag.
3113 This is less elegant than using Python's exception mechanism, but
3117 This is less elegant than using Python's exception mechanism, but
3114 I can't get that to work reliably with threads, so under -pylab
3118 I can't get that to work reliably with threads, so under -pylab
3115 %Exit was hanging IPython. Cross-thread exception handling is
3119 %Exit was hanging IPython. Cross-thread exception handling is
3116 really a bitch. Thaks to a bug report by Stephen Walton
3120 really a bitch. Thaks to a bug report by Stephen Walton
3117 <stephen.walton-AT-csun.edu>.
3121 <stephen.walton-AT-csun.edu>.
3118
3122
3119 2004-11-04 Fernando Perez <fperez@colorado.edu>
3123 2004-11-04 Fernando Perez <fperez@colorado.edu>
3120
3124
3121 * IPython/iplib.py (raw_input_original): store a pointer to the
3125 * IPython/iplib.py (raw_input_original): store a pointer to the
3122 true raw_input to harden against code which can modify it
3126 true raw_input to harden against code which can modify it
3123 (wx.py.PyShell does this and would otherwise crash ipython).
3127 (wx.py.PyShell does this and would otherwise crash ipython).
3124 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3128 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3125
3129
3126 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3130 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3127 Ctrl-C problem, which does not mess up the input line.
3131 Ctrl-C problem, which does not mess up the input line.
3128
3132
3129 2004-11-03 Fernando Perez <fperez@colorado.edu>
3133 2004-11-03 Fernando Perez <fperez@colorado.edu>
3130
3134
3131 * IPython/Release.py: Changed licensing to BSD, in all files.
3135 * IPython/Release.py: Changed licensing to BSD, in all files.
3132 (name): lowercase name for tarball/RPM release.
3136 (name): lowercase name for tarball/RPM release.
3133
3137
3134 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3138 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3135 use throughout ipython.
3139 use throughout ipython.
3136
3140
3137 * IPython/Magic.py (Magic._ofind): Switch to using the new
3141 * IPython/Magic.py (Magic._ofind): Switch to using the new
3138 OInspect.getdoc() function.
3142 OInspect.getdoc() function.
3139
3143
3140 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3144 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3141 of the line currently being canceled via Ctrl-C. It's extremely
3145 of the line currently being canceled via Ctrl-C. It's extremely
3142 ugly, but I don't know how to do it better (the problem is one of
3146 ugly, but I don't know how to do it better (the problem is one of
3143 handling cross-thread exceptions).
3147 handling cross-thread exceptions).
3144
3148
3145 2004-10-28 Fernando Perez <fperez@colorado.edu>
3149 2004-10-28 Fernando Perez <fperez@colorado.edu>
3146
3150
3147 * IPython/Shell.py (signal_handler): add signal handlers to trap
3151 * IPython/Shell.py (signal_handler): add signal handlers to trap
3148 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3152 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3149 report by Francesc Alted.
3153 report by Francesc Alted.
3150
3154
3151 2004-10-21 Fernando Perez <fperez@colorado.edu>
3155 2004-10-21 Fernando Perez <fperez@colorado.edu>
3152
3156
3153 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3157 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3154 to % for pysh syntax extensions.
3158 to % for pysh syntax extensions.
3155
3159
3156 2004-10-09 Fernando Perez <fperez@colorado.edu>
3160 2004-10-09 Fernando Perez <fperez@colorado.edu>
3157
3161
3158 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3162 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3159 arrays to print a more useful summary, without calling str(arr).
3163 arrays to print a more useful summary, without calling str(arr).
3160 This avoids the problem of extremely lengthy computations which
3164 This avoids the problem of extremely lengthy computations which
3161 occur if arr is large, and appear to the user as a system lockup
3165 occur if arr is large, and appear to the user as a system lockup
3162 with 100% cpu activity. After a suggestion by Kristian Sandberg
3166 with 100% cpu activity. After a suggestion by Kristian Sandberg
3163 <Kristian.Sandberg@colorado.edu>.
3167 <Kristian.Sandberg@colorado.edu>.
3164 (Magic.__init__): fix bug in global magic escapes not being
3168 (Magic.__init__): fix bug in global magic escapes not being
3165 correctly set.
3169 correctly set.
3166
3170
3167 2004-10-08 Fernando Perez <fperez@colorado.edu>
3171 2004-10-08 Fernando Perez <fperez@colorado.edu>
3168
3172
3169 * IPython/Magic.py (__license__): change to absolute imports of
3173 * IPython/Magic.py (__license__): change to absolute imports of
3170 ipython's own internal packages, to start adapting to the absolute
3174 ipython's own internal packages, to start adapting to the absolute
3171 import requirement of PEP-328.
3175 import requirement of PEP-328.
3172
3176
3173 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3177 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3174 files, and standardize author/license marks through the Release
3178 files, and standardize author/license marks through the Release
3175 module instead of having per/file stuff (except for files with
3179 module instead of having per/file stuff (except for files with
3176 particular licenses, like the MIT/PSF-licensed codes).
3180 particular licenses, like the MIT/PSF-licensed codes).
3177
3181
3178 * IPython/Debugger.py: remove dead code for python 2.1
3182 * IPython/Debugger.py: remove dead code for python 2.1
3179
3183
3180 2004-10-04 Fernando Perez <fperez@colorado.edu>
3184 2004-10-04 Fernando Perez <fperez@colorado.edu>
3181
3185
3182 * IPython/iplib.py (ipmagic): New function for accessing magics
3186 * IPython/iplib.py (ipmagic): New function for accessing magics
3183 via a normal python function call.
3187 via a normal python function call.
3184
3188
3185 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3189 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3186 from '@' to '%', to accomodate the new @decorator syntax of python
3190 from '@' to '%', to accomodate the new @decorator syntax of python
3187 2.4.
3191 2.4.
3188
3192
3189 2004-09-29 Fernando Perez <fperez@colorado.edu>
3193 2004-09-29 Fernando Perez <fperez@colorado.edu>
3190
3194
3191 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3195 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3192 matplotlib.use to prevent running scripts which try to switch
3196 matplotlib.use to prevent running scripts which try to switch
3193 interactive backends from within ipython. This will just crash
3197 interactive backends from within ipython. This will just crash
3194 the python interpreter, so we can't allow it (but a detailed error
3198 the python interpreter, so we can't allow it (but a detailed error
3195 is given to the user).
3199 is given to the user).
3196
3200
3197 2004-09-28 Fernando Perez <fperez@colorado.edu>
3201 2004-09-28 Fernando Perez <fperez@colorado.edu>
3198
3202
3199 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3203 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3200 matplotlib-related fixes so that using @run with non-matplotlib
3204 matplotlib-related fixes so that using @run with non-matplotlib
3201 scripts doesn't pop up spurious plot windows. This requires
3205 scripts doesn't pop up spurious plot windows. This requires
3202 matplotlib >= 0.63, where I had to make some changes as well.
3206 matplotlib >= 0.63, where I had to make some changes as well.
3203
3207
3204 * IPython/ipmaker.py (make_IPython): update version requirement to
3208 * IPython/ipmaker.py (make_IPython): update version requirement to
3205 python 2.2.
3209 python 2.2.
3206
3210
3207 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3211 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3208 banner arg for embedded customization.
3212 banner arg for embedded customization.
3209
3213
3210 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3214 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3211 explicit uses of __IP as the IPython's instance name. Now things
3215 explicit uses of __IP as the IPython's instance name. Now things
3212 are properly handled via the shell.name value. The actual code
3216 are properly handled via the shell.name value. The actual code
3213 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3217 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3214 is much better than before. I'll clean things completely when the
3218 is much better than before. I'll clean things completely when the
3215 magic stuff gets a real overhaul.
3219 magic stuff gets a real overhaul.
3216
3220
3217 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3221 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3218 minor changes to debian dir.
3222 minor changes to debian dir.
3219
3223
3220 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3224 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3221 pointer to the shell itself in the interactive namespace even when
3225 pointer to the shell itself in the interactive namespace even when
3222 a user-supplied dict is provided. This is needed for embedding
3226 a user-supplied dict is provided. This is needed for embedding
3223 purposes (found by tests with Michel Sanner).
3227 purposes (found by tests with Michel Sanner).
3224
3228
3225 2004-09-27 Fernando Perez <fperez@colorado.edu>
3229 2004-09-27 Fernando Perez <fperez@colorado.edu>
3226
3230
3227 * IPython/UserConfig/ipythonrc: remove []{} from
3231 * IPython/UserConfig/ipythonrc: remove []{} from
3228 readline_remove_delims, so that things like [modname.<TAB> do
3232 readline_remove_delims, so that things like [modname.<TAB> do
3229 proper completion. This disables [].TAB, but that's a less common
3233 proper completion. This disables [].TAB, but that's a less common
3230 case than module names in list comprehensions, for example.
3234 case than module names in list comprehensions, for example.
3231 Thanks to a report by Andrea Riciputi.
3235 Thanks to a report by Andrea Riciputi.
3232
3236
3233 2004-09-09 Fernando Perez <fperez@colorado.edu>
3237 2004-09-09 Fernando Perez <fperez@colorado.edu>
3234
3238
3235 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3239 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3236 blocking problems in win32 and osx. Fix by John.
3240 blocking problems in win32 and osx. Fix by John.
3237
3241
3238 2004-09-08 Fernando Perez <fperez@colorado.edu>
3242 2004-09-08 Fernando Perez <fperez@colorado.edu>
3239
3243
3240 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3244 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3241 for Win32 and OSX. Fix by John Hunter.
3245 for Win32 and OSX. Fix by John Hunter.
3242
3246
3243 2004-08-30 *** Released version 0.6.3
3247 2004-08-30 *** Released version 0.6.3
3244
3248
3245 2004-08-30 Fernando Perez <fperez@colorado.edu>
3249 2004-08-30 Fernando Perez <fperez@colorado.edu>
3246
3250
3247 * setup.py (isfile): Add manpages to list of dependent files to be
3251 * setup.py (isfile): Add manpages to list of dependent files to be
3248 updated.
3252 updated.
3249
3253
3250 2004-08-27 Fernando Perez <fperez@colorado.edu>
3254 2004-08-27 Fernando Perez <fperez@colorado.edu>
3251
3255
3252 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3256 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3253 for now. They don't really work with standalone WX/GTK code
3257 for now. They don't really work with standalone WX/GTK code
3254 (though matplotlib IS working fine with both of those backends).
3258 (though matplotlib IS working fine with both of those backends).
3255 This will neeed much more testing. I disabled most things with
3259 This will neeed much more testing. I disabled most things with
3256 comments, so turning it back on later should be pretty easy.
3260 comments, so turning it back on later should be pretty easy.
3257
3261
3258 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3262 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3259 autocalling of expressions like r'foo', by modifying the line
3263 autocalling of expressions like r'foo', by modifying the line
3260 split regexp. Closes
3264 split regexp. Closes
3261 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3265 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3262 Riley <ipythonbugs-AT-sabi.net>.
3266 Riley <ipythonbugs-AT-sabi.net>.
3263 (InteractiveShell.mainloop): honor --nobanner with banner
3267 (InteractiveShell.mainloop): honor --nobanner with banner
3264 extensions.
3268 extensions.
3265
3269
3266 * IPython/Shell.py: Significant refactoring of all classes, so
3270 * IPython/Shell.py: Significant refactoring of all classes, so
3267 that we can really support ALL matplotlib backends and threading
3271 that we can really support ALL matplotlib backends and threading
3268 models (John spotted a bug with Tk which required this). Now we
3272 models (John spotted a bug with Tk which required this). Now we
3269 should support single-threaded, WX-threads and GTK-threads, both
3273 should support single-threaded, WX-threads and GTK-threads, both
3270 for generic code and for matplotlib.
3274 for generic code and for matplotlib.
3271
3275
3272 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3276 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3273 -pylab, to simplify things for users. Will also remove the pylab
3277 -pylab, to simplify things for users. Will also remove the pylab
3274 profile, since now all of matplotlib configuration is directly
3278 profile, since now all of matplotlib configuration is directly
3275 handled here. This also reduces startup time.
3279 handled here. This also reduces startup time.
3276
3280
3277 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3281 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3278 shell wasn't being correctly called. Also in IPShellWX.
3282 shell wasn't being correctly called. Also in IPShellWX.
3279
3283
3280 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3284 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3281 fine-tune banner.
3285 fine-tune banner.
3282
3286
3283 * IPython/numutils.py (spike): Deprecate these spike functions,
3287 * IPython/numutils.py (spike): Deprecate these spike functions,
3284 delete (long deprecated) gnuplot_exec handler.
3288 delete (long deprecated) gnuplot_exec handler.
3285
3289
3286 2004-08-26 Fernando Perez <fperez@colorado.edu>
3290 2004-08-26 Fernando Perez <fperez@colorado.edu>
3287
3291
3288 * ipython.1: Update for threading options, plus some others which
3292 * ipython.1: Update for threading options, plus some others which
3289 were missing.
3293 were missing.
3290
3294
3291 * IPython/ipmaker.py (__call__): Added -wthread option for
3295 * IPython/ipmaker.py (__call__): Added -wthread option for
3292 wxpython thread handling. Make sure threading options are only
3296 wxpython thread handling. Make sure threading options are only
3293 valid at the command line.
3297 valid at the command line.
3294
3298
3295 * scripts/ipython: moved shell selection into a factory function
3299 * scripts/ipython: moved shell selection into a factory function
3296 in Shell.py, to keep the starter script to a minimum.
3300 in Shell.py, to keep the starter script to a minimum.
3297
3301
3298 2004-08-25 Fernando Perez <fperez@colorado.edu>
3302 2004-08-25 Fernando Perez <fperez@colorado.edu>
3299
3303
3300 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3304 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3301 John. Along with some recent changes he made to matplotlib, the
3305 John. Along with some recent changes he made to matplotlib, the
3302 next versions of both systems should work very well together.
3306 next versions of both systems should work very well together.
3303
3307
3304 2004-08-24 Fernando Perez <fperez@colorado.edu>
3308 2004-08-24 Fernando Perez <fperez@colorado.edu>
3305
3309
3306 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3310 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3307 tried to switch the profiling to using hotshot, but I'm getting
3311 tried to switch the profiling to using hotshot, but I'm getting
3308 strange errors from prof.runctx() there. I may be misreading the
3312 strange errors from prof.runctx() there. I may be misreading the
3309 docs, but it looks weird. For now the profiling code will
3313 docs, but it looks weird. For now the profiling code will
3310 continue to use the standard profiler.
3314 continue to use the standard profiler.
3311
3315
3312 2004-08-23 Fernando Perez <fperez@colorado.edu>
3316 2004-08-23 Fernando Perez <fperez@colorado.edu>
3313
3317
3314 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3318 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3315 threaded shell, by John Hunter. It's not quite ready yet, but
3319 threaded shell, by John Hunter. It's not quite ready yet, but
3316 close.
3320 close.
3317
3321
3318 2004-08-22 Fernando Perez <fperez@colorado.edu>
3322 2004-08-22 Fernando Perez <fperez@colorado.edu>
3319
3323
3320 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3324 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3321 in Magic and ultraTB.
3325 in Magic and ultraTB.
3322
3326
3323 * ipython.1: document threading options in manpage.
3327 * ipython.1: document threading options in manpage.
3324
3328
3325 * scripts/ipython: Changed name of -thread option to -gthread,
3329 * scripts/ipython: Changed name of -thread option to -gthread,
3326 since this is GTK specific. I want to leave the door open for a
3330 since this is GTK specific. I want to leave the door open for a
3327 -wthread option for WX, which will most likely be necessary. This
3331 -wthread option for WX, which will most likely be necessary. This
3328 change affects usage and ipmaker as well.
3332 change affects usage and ipmaker as well.
3329
3333
3330 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3334 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3331 handle the matplotlib shell issues. Code by John Hunter
3335 handle the matplotlib shell issues. Code by John Hunter
3332 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3336 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3333 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3337 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3334 broken (and disabled for end users) for now, but it puts the
3338 broken (and disabled for end users) for now, but it puts the
3335 infrastructure in place.
3339 infrastructure in place.
3336
3340
3337 2004-08-21 Fernando Perez <fperez@colorado.edu>
3341 2004-08-21 Fernando Perez <fperez@colorado.edu>
3338
3342
3339 * ipythonrc-pylab: Add matplotlib support.
3343 * ipythonrc-pylab: Add matplotlib support.
3340
3344
3341 * matplotlib_config.py: new files for matplotlib support, part of
3345 * matplotlib_config.py: new files for matplotlib support, part of
3342 the pylab profile.
3346 the pylab profile.
3343
3347
3344 * IPython/usage.py (__doc__): documented the threading options.
3348 * IPython/usage.py (__doc__): documented the threading options.
3345
3349
3346 2004-08-20 Fernando Perez <fperez@colorado.edu>
3350 2004-08-20 Fernando Perez <fperez@colorado.edu>
3347
3351
3348 * ipython: Modified the main calling routine to handle the -thread
3352 * ipython: Modified the main calling routine to handle the -thread
3349 and -mpthread options. This needs to be done as a top-level hack,
3353 and -mpthread options. This needs to be done as a top-level hack,
3350 because it determines which class to instantiate for IPython
3354 because it determines which class to instantiate for IPython
3351 itself.
3355 itself.
3352
3356
3353 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3357 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3354 classes to support multithreaded GTK operation without blocking,
3358 classes to support multithreaded GTK operation without blocking,
3355 and matplotlib with all backends. This is a lot of still very
3359 and matplotlib with all backends. This is a lot of still very
3356 experimental code, and threads are tricky. So it may still have a
3360 experimental code, and threads are tricky. So it may still have a
3357 few rough edges... This code owes a lot to
3361 few rough edges... This code owes a lot to
3358 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3362 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3359 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3363 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3360 to John Hunter for all the matplotlib work.
3364 to John Hunter for all the matplotlib work.
3361
3365
3362 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3366 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3363 options for gtk thread and matplotlib support.
3367 options for gtk thread and matplotlib support.
3364
3368
3365 2004-08-16 Fernando Perez <fperez@colorado.edu>
3369 2004-08-16 Fernando Perez <fperez@colorado.edu>
3366
3370
3367 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3371 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3368 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3372 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3369 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3373 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3370
3374
3371 2004-08-11 Fernando Perez <fperez@colorado.edu>
3375 2004-08-11 Fernando Perez <fperez@colorado.edu>
3372
3376
3373 * setup.py (isfile): Fix build so documentation gets updated for
3377 * setup.py (isfile): Fix build so documentation gets updated for
3374 rpms (it was only done for .tgz builds).
3378 rpms (it was only done for .tgz builds).
3375
3379
3376 2004-08-10 Fernando Perez <fperez@colorado.edu>
3380 2004-08-10 Fernando Perez <fperez@colorado.edu>
3377
3381
3378 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3382 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3379
3383
3380 * iplib.py : Silence syntax error exceptions in tab-completion.
3384 * iplib.py : Silence syntax error exceptions in tab-completion.
3381
3385
3382 2004-08-05 Fernando Perez <fperez@colorado.edu>
3386 2004-08-05 Fernando Perez <fperez@colorado.edu>
3383
3387
3384 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3388 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3385 'color off' mark for continuation prompts. This was causing long
3389 'color off' mark for continuation prompts. This was causing long
3386 continuation lines to mis-wrap.
3390 continuation lines to mis-wrap.
3387
3391
3388 2004-08-01 Fernando Perez <fperez@colorado.edu>
3392 2004-08-01 Fernando Perez <fperez@colorado.edu>
3389
3393
3390 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3394 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3391 for building ipython to be a parameter. All this is necessary
3395 for building ipython to be a parameter. All this is necessary
3392 right now to have a multithreaded version, but this insane
3396 right now to have a multithreaded version, but this insane
3393 non-design will be cleaned up soon. For now, it's a hack that
3397 non-design will be cleaned up soon. For now, it's a hack that
3394 works.
3398 works.
3395
3399
3396 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3400 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3397 args in various places. No bugs so far, but it's a dangerous
3401 args in various places. No bugs so far, but it's a dangerous
3398 practice.
3402 practice.
3399
3403
3400 2004-07-31 Fernando Perez <fperez@colorado.edu>
3404 2004-07-31 Fernando Perez <fperez@colorado.edu>
3401
3405
3402 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3406 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3403 fix completion of files with dots in their names under most
3407 fix completion of files with dots in their names under most
3404 profiles (pysh was OK because the completion order is different).
3408 profiles (pysh was OK because the completion order is different).
3405
3409
3406 2004-07-27 Fernando Perez <fperez@colorado.edu>
3410 2004-07-27 Fernando Perez <fperez@colorado.edu>
3407
3411
3408 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3412 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3409 keywords manually, b/c the one in keyword.py was removed in python
3413 keywords manually, b/c the one in keyword.py was removed in python
3410 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3414 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3411 This is NOT a bug under python 2.3 and earlier.
3415 This is NOT a bug under python 2.3 and earlier.
3412
3416
3413 2004-07-26 Fernando Perez <fperez@colorado.edu>
3417 2004-07-26 Fernando Perez <fperez@colorado.edu>
3414
3418
3415 * IPython/ultraTB.py (VerboseTB.text): Add another
3419 * IPython/ultraTB.py (VerboseTB.text): Add another
3416 linecache.checkcache() call to try to prevent inspect.py from
3420 linecache.checkcache() call to try to prevent inspect.py from
3417 crashing under python 2.3. I think this fixes
3421 crashing under python 2.3. I think this fixes
3418 http://www.scipy.net/roundup/ipython/issue17.
3422 http://www.scipy.net/roundup/ipython/issue17.
3419
3423
3420 2004-07-26 *** Released version 0.6.2
3424 2004-07-26 *** Released version 0.6.2
3421
3425
3422 2004-07-26 Fernando Perez <fperez@colorado.edu>
3426 2004-07-26 Fernando Perez <fperez@colorado.edu>
3423
3427
3424 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3428 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3425 fail for any number.
3429 fail for any number.
3426 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3430 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3427 empty bookmarks.
3431 empty bookmarks.
3428
3432
3429 2004-07-26 *** Released version 0.6.1
3433 2004-07-26 *** Released version 0.6.1
3430
3434
3431 2004-07-26 Fernando Perez <fperez@colorado.edu>
3435 2004-07-26 Fernando Perez <fperez@colorado.edu>
3432
3436
3433 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3437 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3434
3438
3435 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3439 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3436 escaping '()[]{}' in filenames.
3440 escaping '()[]{}' in filenames.
3437
3441
3438 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3442 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3439 Python 2.2 users who lack a proper shlex.split.
3443 Python 2.2 users who lack a proper shlex.split.
3440
3444
3441 2004-07-19 Fernando Perez <fperez@colorado.edu>
3445 2004-07-19 Fernando Perez <fperez@colorado.edu>
3442
3446
3443 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3447 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3444 for reading readline's init file. I follow the normal chain:
3448 for reading readline's init file. I follow the normal chain:
3445 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3449 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3446 report by Mike Heeter. This closes
3450 report by Mike Heeter. This closes
3447 http://www.scipy.net/roundup/ipython/issue16.
3451 http://www.scipy.net/roundup/ipython/issue16.
3448
3452
3449 2004-07-18 Fernando Perez <fperez@colorado.edu>
3453 2004-07-18 Fernando Perez <fperez@colorado.edu>
3450
3454
3451 * IPython/iplib.py (__init__): Add better handling of '\' under
3455 * IPython/iplib.py (__init__): Add better handling of '\' under
3452 Win32 for filenames. After a patch by Ville.
3456 Win32 for filenames. After a patch by Ville.
3453
3457
3454 2004-07-17 Fernando Perez <fperez@colorado.edu>
3458 2004-07-17 Fernando Perez <fperez@colorado.edu>
3455
3459
3456 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3460 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3457 autocalling would be triggered for 'foo is bar' if foo is
3461 autocalling would be triggered for 'foo is bar' if foo is
3458 callable. I also cleaned up the autocall detection code to use a
3462 callable. I also cleaned up the autocall detection code to use a
3459 regexp, which is faster. Bug reported by Alexander Schmolck.
3463 regexp, which is faster. Bug reported by Alexander Schmolck.
3460
3464
3461 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3465 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3462 '?' in them would confuse the help system. Reported by Alex
3466 '?' in them would confuse the help system. Reported by Alex
3463 Schmolck.
3467 Schmolck.
3464
3468
3465 2004-07-16 Fernando Perez <fperez@colorado.edu>
3469 2004-07-16 Fernando Perez <fperez@colorado.edu>
3466
3470
3467 * IPython/GnuplotInteractive.py (__all__): added plot2.
3471 * IPython/GnuplotInteractive.py (__all__): added plot2.
3468
3472
3469 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3473 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3470 plotting dictionaries, lists or tuples of 1d arrays.
3474 plotting dictionaries, lists or tuples of 1d arrays.
3471
3475
3472 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3476 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3473 optimizations.
3477 optimizations.
3474
3478
3475 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3479 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3476 the information which was there from Janko's original IPP code:
3480 the information which was there from Janko's original IPP code:
3477
3481
3478 03.05.99 20:53 porto.ifm.uni-kiel.de
3482 03.05.99 20:53 porto.ifm.uni-kiel.de
3479 --Started changelog.
3483 --Started changelog.
3480 --make clear do what it say it does
3484 --make clear do what it say it does
3481 --added pretty output of lines from inputcache
3485 --added pretty output of lines from inputcache
3482 --Made Logger a mixin class, simplifies handling of switches
3486 --Made Logger a mixin class, simplifies handling of switches
3483 --Added own completer class. .string<TAB> expands to last history
3487 --Added own completer class. .string<TAB> expands to last history
3484 line which starts with string. The new expansion is also present
3488 line which starts with string. The new expansion is also present
3485 with Ctrl-r from the readline library. But this shows, who this
3489 with Ctrl-r from the readline library. But this shows, who this
3486 can be done for other cases.
3490 can be done for other cases.
3487 --Added convention that all shell functions should accept a
3491 --Added convention that all shell functions should accept a
3488 parameter_string This opens the door for different behaviour for
3492 parameter_string This opens the door for different behaviour for
3489 each function. @cd is a good example of this.
3493 each function. @cd is a good example of this.
3490
3494
3491 04.05.99 12:12 porto.ifm.uni-kiel.de
3495 04.05.99 12:12 porto.ifm.uni-kiel.de
3492 --added logfile rotation
3496 --added logfile rotation
3493 --added new mainloop method which freezes first the namespace
3497 --added new mainloop method which freezes first the namespace
3494
3498
3495 07.05.99 21:24 porto.ifm.uni-kiel.de
3499 07.05.99 21:24 porto.ifm.uni-kiel.de
3496 --added the docreader classes. Now there is a help system.
3500 --added the docreader classes. Now there is a help system.
3497 -This is only a first try. Currently it's not easy to put new
3501 -This is only a first try. Currently it's not easy to put new
3498 stuff in the indices. But this is the way to go. Info would be
3502 stuff in the indices. But this is the way to go. Info would be
3499 better, but HTML is every where and not everybody has an info
3503 better, but HTML is every where and not everybody has an info
3500 system installed and it's not so easy to change html-docs to info.
3504 system installed and it's not so easy to change html-docs to info.
3501 --added global logfile option
3505 --added global logfile option
3502 --there is now a hook for object inspection method pinfo needs to
3506 --there is now a hook for object inspection method pinfo needs to
3503 be provided for this. Can be reached by two '??'.
3507 be provided for this. Can be reached by two '??'.
3504
3508
3505 08.05.99 20:51 porto.ifm.uni-kiel.de
3509 08.05.99 20:51 porto.ifm.uni-kiel.de
3506 --added a README
3510 --added a README
3507 --bug in rc file. Something has changed so functions in the rc
3511 --bug in rc file. Something has changed so functions in the rc
3508 file need to reference the shell and not self. Not clear if it's a
3512 file need to reference the shell and not self. Not clear if it's a
3509 bug or feature.
3513 bug or feature.
3510 --changed rc file for new behavior
3514 --changed rc file for new behavior
3511
3515
3512 2004-07-15 Fernando Perez <fperez@colorado.edu>
3516 2004-07-15 Fernando Perez <fperez@colorado.edu>
3513
3517
3514 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3518 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3515 cache was falling out of sync in bizarre manners when multi-line
3519 cache was falling out of sync in bizarre manners when multi-line
3516 input was present. Minor optimizations and cleanup.
3520 input was present. Minor optimizations and cleanup.
3517
3521
3518 (Logger): Remove old Changelog info for cleanup. This is the
3522 (Logger): Remove old Changelog info for cleanup. This is the
3519 information which was there from Janko's original code:
3523 information which was there from Janko's original code:
3520
3524
3521 Changes to Logger: - made the default log filename a parameter
3525 Changes to Logger: - made the default log filename a parameter
3522
3526
3523 - put a check for lines beginning with !@? in log(). Needed
3527 - put a check for lines beginning with !@? in log(). Needed
3524 (even if the handlers properly log their lines) for mid-session
3528 (even if the handlers properly log their lines) for mid-session
3525 logging activation to work properly. Without this, lines logged
3529 logging activation to work properly. Without this, lines logged
3526 in mid session, which get read from the cache, would end up
3530 in mid session, which get read from the cache, would end up
3527 'bare' (with !@? in the open) in the log. Now they are caught
3531 'bare' (with !@? in the open) in the log. Now they are caught
3528 and prepended with a #.
3532 and prepended with a #.
3529
3533
3530 * IPython/iplib.py (InteractiveShell.init_readline): added check
3534 * IPython/iplib.py (InteractiveShell.init_readline): added check
3531 in case MagicCompleter fails to be defined, so we don't crash.
3535 in case MagicCompleter fails to be defined, so we don't crash.
3532
3536
3533 2004-07-13 Fernando Perez <fperez@colorado.edu>
3537 2004-07-13 Fernando Perez <fperez@colorado.edu>
3534
3538
3535 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3539 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3536 of EPS if the requested filename ends in '.eps'.
3540 of EPS if the requested filename ends in '.eps'.
3537
3541
3538 2004-07-04 Fernando Perez <fperez@colorado.edu>
3542 2004-07-04 Fernando Perez <fperez@colorado.edu>
3539
3543
3540 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3544 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3541 escaping of quotes when calling the shell.
3545 escaping of quotes when calling the shell.
3542
3546
3543 2004-07-02 Fernando Perez <fperez@colorado.edu>
3547 2004-07-02 Fernando Perez <fperez@colorado.edu>
3544
3548
3545 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3549 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3546 gettext not working because we were clobbering '_'. Fixes
3550 gettext not working because we were clobbering '_'. Fixes
3547 http://www.scipy.net/roundup/ipython/issue6.
3551 http://www.scipy.net/roundup/ipython/issue6.
3548
3552
3549 2004-07-01 Fernando Perez <fperez@colorado.edu>
3553 2004-07-01 Fernando Perez <fperez@colorado.edu>
3550
3554
3551 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3555 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3552 into @cd. Patch by Ville.
3556 into @cd. Patch by Ville.
3553
3557
3554 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3558 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3555 new function to store things after ipmaker runs. Patch by Ville.
3559 new function to store things after ipmaker runs. Patch by Ville.
3556 Eventually this will go away once ipmaker is removed and the class
3560 Eventually this will go away once ipmaker is removed and the class
3557 gets cleaned up, but for now it's ok. Key functionality here is
3561 gets cleaned up, but for now it's ok. Key functionality here is
3558 the addition of the persistent storage mechanism, a dict for
3562 the addition of the persistent storage mechanism, a dict for
3559 keeping data across sessions (for now just bookmarks, but more can
3563 keeping data across sessions (for now just bookmarks, but more can
3560 be implemented later).
3564 be implemented later).
3561
3565
3562 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3566 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3563 persistent across sections. Patch by Ville, I modified it
3567 persistent across sections. Patch by Ville, I modified it
3564 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3568 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3565 added a '-l' option to list all bookmarks.
3569 added a '-l' option to list all bookmarks.
3566
3570
3567 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3571 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3568 center for cleanup. Registered with atexit.register(). I moved
3572 center for cleanup. Registered with atexit.register(). I moved
3569 here the old exit_cleanup(). After a patch by Ville.
3573 here the old exit_cleanup(). After a patch by Ville.
3570
3574
3571 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3575 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3572 characters in the hacked shlex_split for python 2.2.
3576 characters in the hacked shlex_split for python 2.2.
3573
3577
3574 * IPython/iplib.py (file_matches): more fixes to filenames with
3578 * IPython/iplib.py (file_matches): more fixes to filenames with
3575 whitespace in them. It's not perfect, but limitations in python's
3579 whitespace in them. It's not perfect, but limitations in python's
3576 readline make it impossible to go further.
3580 readline make it impossible to go further.
3577
3581
3578 2004-06-29 Fernando Perez <fperez@colorado.edu>
3582 2004-06-29 Fernando Perez <fperez@colorado.edu>
3579
3583
3580 * IPython/iplib.py (file_matches): escape whitespace correctly in
3584 * IPython/iplib.py (file_matches): escape whitespace correctly in
3581 filename completions. Bug reported by Ville.
3585 filename completions. Bug reported by Ville.
3582
3586
3583 2004-06-28 Fernando Perez <fperez@colorado.edu>
3587 2004-06-28 Fernando Perez <fperez@colorado.edu>
3584
3588
3585 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3589 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3586 the history file will be called 'history-PROFNAME' (or just
3590 the history file will be called 'history-PROFNAME' (or just
3587 'history' if no profile is loaded). I was getting annoyed at
3591 'history' if no profile is loaded). I was getting annoyed at
3588 getting my Numerical work history clobbered by pysh sessions.
3592 getting my Numerical work history clobbered by pysh sessions.
3589
3593
3590 * IPython/iplib.py (InteractiveShell.__init__): Internal
3594 * IPython/iplib.py (InteractiveShell.__init__): Internal
3591 getoutputerror() function so that we can honor the system_verbose
3595 getoutputerror() function so that we can honor the system_verbose
3592 flag for _all_ system calls. I also added escaping of #
3596 flag for _all_ system calls. I also added escaping of #
3593 characters here to avoid confusing Itpl.
3597 characters here to avoid confusing Itpl.
3594
3598
3595 * IPython/Magic.py (shlex_split): removed call to shell in
3599 * IPython/Magic.py (shlex_split): removed call to shell in
3596 parse_options and replaced it with shlex.split(). The annoying
3600 parse_options and replaced it with shlex.split(). The annoying
3597 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3601 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3598 to backport it from 2.3, with several frail hacks (the shlex
3602 to backport it from 2.3, with several frail hacks (the shlex
3599 module is rather limited in 2.2). Thanks to a suggestion by Ville
3603 module is rather limited in 2.2). Thanks to a suggestion by Ville
3600 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3604 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3601 problem.
3605 problem.
3602
3606
3603 (Magic.magic_system_verbose): new toggle to print the actual
3607 (Magic.magic_system_verbose): new toggle to print the actual
3604 system calls made by ipython. Mainly for debugging purposes.
3608 system calls made by ipython. Mainly for debugging purposes.
3605
3609
3606 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3610 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3607 doesn't support persistence. Reported (and fix suggested) by
3611 doesn't support persistence. Reported (and fix suggested) by
3608 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3612 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3609
3613
3610 2004-06-26 Fernando Perez <fperez@colorado.edu>
3614 2004-06-26 Fernando Perez <fperez@colorado.edu>
3611
3615
3612 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3616 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3613 continue prompts.
3617 continue prompts.
3614
3618
3615 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3619 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3616 function (basically a big docstring) and a few more things here to
3620 function (basically a big docstring) and a few more things here to
3617 speedup startup. pysh.py is now very lightweight. We want because
3621 speedup startup. pysh.py is now very lightweight. We want because
3618 it gets execfile'd, while InterpreterExec gets imported, so
3622 it gets execfile'd, while InterpreterExec gets imported, so
3619 byte-compilation saves time.
3623 byte-compilation saves time.
3620
3624
3621 2004-06-25 Fernando Perez <fperez@colorado.edu>
3625 2004-06-25 Fernando Perez <fperez@colorado.edu>
3622
3626
3623 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3627 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3624 -NUM', which was recently broken.
3628 -NUM', which was recently broken.
3625
3629
3626 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3630 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3627 in multi-line input (but not !!, which doesn't make sense there).
3631 in multi-line input (but not !!, which doesn't make sense there).
3628
3632
3629 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3633 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3630 It's just too useful, and people can turn it off in the less
3634 It's just too useful, and people can turn it off in the less
3631 common cases where it's a problem.
3635 common cases where it's a problem.
3632
3636
3633 2004-06-24 Fernando Perez <fperez@colorado.edu>
3637 2004-06-24 Fernando Perez <fperez@colorado.edu>
3634
3638
3635 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3639 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3636 special syntaxes (like alias calling) is now allied in multi-line
3640 special syntaxes (like alias calling) is now allied in multi-line
3637 input. This is still _very_ experimental, but it's necessary for
3641 input. This is still _very_ experimental, but it's necessary for
3638 efficient shell usage combining python looping syntax with system
3642 efficient shell usage combining python looping syntax with system
3639 calls. For now it's restricted to aliases, I don't think it
3643 calls. For now it's restricted to aliases, I don't think it
3640 really even makes sense to have this for magics.
3644 really even makes sense to have this for magics.
3641
3645
3642 2004-06-23 Fernando Perez <fperez@colorado.edu>
3646 2004-06-23 Fernando Perez <fperez@colorado.edu>
3643
3647
3644 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3648 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3645 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3649 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3646
3650
3647 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3651 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3648 extensions under Windows (after code sent by Gary Bishop). The
3652 extensions under Windows (after code sent by Gary Bishop). The
3649 extensions considered 'executable' are stored in IPython's rc
3653 extensions considered 'executable' are stored in IPython's rc
3650 structure as win_exec_ext.
3654 structure as win_exec_ext.
3651
3655
3652 * IPython/genutils.py (shell): new function, like system() but
3656 * IPython/genutils.py (shell): new function, like system() but
3653 without return value. Very useful for interactive shell work.
3657 without return value. Very useful for interactive shell work.
3654
3658
3655 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3659 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3656 delete aliases.
3660 delete aliases.
3657
3661
3658 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3662 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3659 sure that the alias table doesn't contain python keywords.
3663 sure that the alias table doesn't contain python keywords.
3660
3664
3661 2004-06-21 Fernando Perez <fperez@colorado.edu>
3665 2004-06-21 Fernando Perez <fperez@colorado.edu>
3662
3666
3663 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3667 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3664 non-existent items are found in $PATH. Reported by Thorsten.
3668 non-existent items are found in $PATH. Reported by Thorsten.
3665
3669
3666 2004-06-20 Fernando Perez <fperez@colorado.edu>
3670 2004-06-20 Fernando Perez <fperez@colorado.edu>
3667
3671
3668 * IPython/iplib.py (complete): modified the completer so that the
3672 * IPython/iplib.py (complete): modified the completer so that the
3669 order of priorities can be easily changed at runtime.
3673 order of priorities can be easily changed at runtime.
3670
3674
3671 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3675 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3672 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3676 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3673
3677
3674 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3678 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3675 expand Python variables prepended with $ in all system calls. The
3679 expand Python variables prepended with $ in all system calls. The
3676 same was done to InteractiveShell.handle_shell_escape. Now all
3680 same was done to InteractiveShell.handle_shell_escape. Now all
3677 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3681 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3678 expansion of python variables and expressions according to the
3682 expansion of python variables and expressions according to the
3679 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3683 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3680
3684
3681 Though PEP-215 has been rejected, a similar (but simpler) one
3685 Though PEP-215 has been rejected, a similar (but simpler) one
3682 seems like it will go into Python 2.4, PEP-292 -
3686 seems like it will go into Python 2.4, PEP-292 -
3683 http://www.python.org/peps/pep-0292.html.
3687 http://www.python.org/peps/pep-0292.html.
3684
3688
3685 I'll keep the full syntax of PEP-215, since IPython has since the
3689 I'll keep the full syntax of PEP-215, since IPython has since the
3686 start used Ka-Ping Yee's reference implementation discussed there
3690 start used Ka-Ping Yee's reference implementation discussed there
3687 (Itpl), and I actually like the powerful semantics it offers.
3691 (Itpl), and I actually like the powerful semantics it offers.
3688
3692
3689 In order to access normal shell variables, the $ has to be escaped
3693 In order to access normal shell variables, the $ has to be escaped
3690 via an extra $. For example:
3694 via an extra $. For example:
3691
3695
3692 In [7]: PATH='a python variable'
3696 In [7]: PATH='a python variable'
3693
3697
3694 In [8]: !echo $PATH
3698 In [8]: !echo $PATH
3695 a python variable
3699 a python variable
3696
3700
3697 In [9]: !echo $$PATH
3701 In [9]: !echo $$PATH
3698 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3702 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3699
3703
3700 (Magic.parse_options): escape $ so the shell doesn't evaluate
3704 (Magic.parse_options): escape $ so the shell doesn't evaluate
3701 things prematurely.
3705 things prematurely.
3702
3706
3703 * IPython/iplib.py (InteractiveShell.call_alias): added the
3707 * IPython/iplib.py (InteractiveShell.call_alias): added the
3704 ability for aliases to expand python variables via $.
3708 ability for aliases to expand python variables via $.
3705
3709
3706 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3710 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3707 system, now there's a @rehash/@rehashx pair of magics. These work
3711 system, now there's a @rehash/@rehashx pair of magics. These work
3708 like the csh rehash command, and can be invoked at any time. They
3712 like the csh rehash command, and can be invoked at any time. They
3709 build a table of aliases to everything in the user's $PATH
3713 build a table of aliases to everything in the user's $PATH
3710 (@rehash uses everything, @rehashx is slower but only adds
3714 (@rehash uses everything, @rehashx is slower but only adds
3711 executable files). With this, the pysh.py-based shell profile can
3715 executable files). With this, the pysh.py-based shell profile can
3712 now simply call rehash upon startup, and full access to all
3716 now simply call rehash upon startup, and full access to all
3713 programs in the user's path is obtained.
3717 programs in the user's path is obtained.
3714
3718
3715 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3719 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3716 functionality is now fully in place. I removed the old dynamic
3720 functionality is now fully in place. I removed the old dynamic
3717 code generation based approach, in favor of a much lighter one
3721 code generation based approach, in favor of a much lighter one
3718 based on a simple dict. The advantage is that this allows me to
3722 based on a simple dict. The advantage is that this allows me to
3719 now have thousands of aliases with negligible cost (unthinkable
3723 now have thousands of aliases with negligible cost (unthinkable
3720 with the old system).
3724 with the old system).
3721
3725
3722 2004-06-19 Fernando Perez <fperez@colorado.edu>
3726 2004-06-19 Fernando Perez <fperez@colorado.edu>
3723
3727
3724 * IPython/iplib.py (__init__): extended MagicCompleter class to
3728 * IPython/iplib.py (__init__): extended MagicCompleter class to
3725 also complete (last in priority) on user aliases.
3729 also complete (last in priority) on user aliases.
3726
3730
3727 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3731 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3728 call to eval.
3732 call to eval.
3729 (ItplNS.__init__): Added a new class which functions like Itpl,
3733 (ItplNS.__init__): Added a new class which functions like Itpl,
3730 but allows configuring the namespace for the evaluation to occur
3734 but allows configuring the namespace for the evaluation to occur
3731 in.
3735 in.
3732
3736
3733 2004-06-18 Fernando Perez <fperez@colorado.edu>
3737 2004-06-18 Fernando Perez <fperez@colorado.edu>
3734
3738
3735 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3739 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3736 better message when 'exit' or 'quit' are typed (a common newbie
3740 better message when 'exit' or 'quit' are typed (a common newbie
3737 confusion).
3741 confusion).
3738
3742
3739 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3743 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3740 check for Windows users.
3744 check for Windows users.
3741
3745
3742 * IPython/iplib.py (InteractiveShell.user_setup): removed
3746 * IPython/iplib.py (InteractiveShell.user_setup): removed
3743 disabling of colors for Windows. I'll test at runtime and issue a
3747 disabling of colors for Windows. I'll test at runtime and issue a
3744 warning if Gary's readline isn't found, as to nudge users to
3748 warning if Gary's readline isn't found, as to nudge users to
3745 download it.
3749 download it.
3746
3750
3747 2004-06-16 Fernando Perez <fperez@colorado.edu>
3751 2004-06-16 Fernando Perez <fperez@colorado.edu>
3748
3752
3749 * IPython/genutils.py (Stream.__init__): changed to print errors
3753 * IPython/genutils.py (Stream.__init__): changed to print errors
3750 to sys.stderr. I had a circular dependency here. Now it's
3754 to sys.stderr. I had a circular dependency here. Now it's
3751 possible to run ipython as IDLE's shell (consider this pre-alpha,
3755 possible to run ipython as IDLE's shell (consider this pre-alpha,
3752 since true stdout things end up in the starting terminal instead
3756 since true stdout things end up in the starting terminal instead
3753 of IDLE's out).
3757 of IDLE's out).
3754
3758
3755 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3759 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3756 users who haven't # updated their prompt_in2 definitions. Remove
3760 users who haven't # updated their prompt_in2 definitions. Remove
3757 eventually.
3761 eventually.
3758 (multiple_replace): added credit to original ASPN recipe.
3762 (multiple_replace): added credit to original ASPN recipe.
3759
3763
3760 2004-06-15 Fernando Perez <fperez@colorado.edu>
3764 2004-06-15 Fernando Perez <fperez@colorado.edu>
3761
3765
3762 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3766 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3763 list of auto-defined aliases.
3767 list of auto-defined aliases.
3764
3768
3765 2004-06-13 Fernando Perez <fperez@colorado.edu>
3769 2004-06-13 Fernando Perez <fperez@colorado.edu>
3766
3770
3767 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3771 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3768 install was really requested (so setup.py can be used for other
3772 install was really requested (so setup.py can be used for other
3769 things under Windows).
3773 things under Windows).
3770
3774
3771 2004-06-10 Fernando Perez <fperez@colorado.edu>
3775 2004-06-10 Fernando Perez <fperez@colorado.edu>
3772
3776
3773 * IPython/Logger.py (Logger.create_log): Manually remove any old
3777 * IPython/Logger.py (Logger.create_log): Manually remove any old
3774 backup, since os.remove may fail under Windows. Fixes bug
3778 backup, since os.remove may fail under Windows. Fixes bug
3775 reported by Thorsten.
3779 reported by Thorsten.
3776
3780
3777 2004-06-09 Fernando Perez <fperez@colorado.edu>
3781 2004-06-09 Fernando Perez <fperez@colorado.edu>
3778
3782
3779 * examples/example-embed.py: fixed all references to %n (replaced
3783 * examples/example-embed.py: fixed all references to %n (replaced
3780 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3784 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3781 for all examples and the manual as well.
3785 for all examples and the manual as well.
3782
3786
3783 2004-06-08 Fernando Perez <fperez@colorado.edu>
3787 2004-06-08 Fernando Perez <fperez@colorado.edu>
3784
3788
3785 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3789 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3786 alignment and color management. All 3 prompt subsystems now
3790 alignment and color management. All 3 prompt subsystems now
3787 inherit from BasePrompt.
3791 inherit from BasePrompt.
3788
3792
3789 * tools/release: updates for windows installer build and tag rpms
3793 * tools/release: updates for windows installer build and tag rpms
3790 with python version (since paths are fixed).
3794 with python version (since paths are fixed).
3791
3795
3792 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3796 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3793 which will become eventually obsolete. Also fixed the default
3797 which will become eventually obsolete. Also fixed the default
3794 prompt_in2 to use \D, so at least new users start with the correct
3798 prompt_in2 to use \D, so at least new users start with the correct
3795 defaults.
3799 defaults.
3796 WARNING: Users with existing ipythonrc files will need to apply
3800 WARNING: Users with existing ipythonrc files will need to apply
3797 this fix manually!
3801 this fix manually!
3798
3802
3799 * setup.py: make windows installer (.exe). This is finally the
3803 * setup.py: make windows installer (.exe). This is finally the
3800 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3804 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3801 which I hadn't included because it required Python 2.3 (or recent
3805 which I hadn't included because it required Python 2.3 (or recent
3802 distutils).
3806 distutils).
3803
3807
3804 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3808 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3805 usage of new '\D' escape.
3809 usage of new '\D' escape.
3806
3810
3807 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3811 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3808 lacks os.getuid())
3812 lacks os.getuid())
3809 (CachedOutput.set_colors): Added the ability to turn coloring
3813 (CachedOutput.set_colors): Added the ability to turn coloring
3810 on/off with @colors even for manually defined prompt colors. It
3814 on/off with @colors even for manually defined prompt colors. It
3811 uses a nasty global, but it works safely and via the generic color
3815 uses a nasty global, but it works safely and via the generic color
3812 handling mechanism.
3816 handling mechanism.
3813 (Prompt2.__init__): Introduced new escape '\D' for continuation
3817 (Prompt2.__init__): Introduced new escape '\D' for continuation
3814 prompts. It represents the counter ('\#') as dots.
3818 prompts. It represents the counter ('\#') as dots.
3815 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3819 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3816 need to update their ipythonrc files and replace '%n' with '\D' in
3820 need to update their ipythonrc files and replace '%n' with '\D' in
3817 their prompt_in2 settings everywhere. Sorry, but there's
3821 their prompt_in2 settings everywhere. Sorry, but there's
3818 otherwise no clean way to get all prompts to properly align. The
3822 otherwise no clean way to get all prompts to properly align. The
3819 ipythonrc shipped with IPython has been updated.
3823 ipythonrc shipped with IPython has been updated.
3820
3824
3821 2004-06-07 Fernando Perez <fperez@colorado.edu>
3825 2004-06-07 Fernando Perez <fperez@colorado.edu>
3822
3826
3823 * setup.py (isfile): Pass local_icons option to latex2html, so the
3827 * setup.py (isfile): Pass local_icons option to latex2html, so the
3824 resulting HTML file is self-contained. Thanks to
3828 resulting HTML file is self-contained. Thanks to
3825 dryice-AT-liu.com.cn for the tip.
3829 dryice-AT-liu.com.cn for the tip.
3826
3830
3827 * pysh.py: I created a new profile 'shell', which implements a
3831 * pysh.py: I created a new profile 'shell', which implements a
3828 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3832 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3829 system shell, nor will it become one anytime soon. It's mainly
3833 system shell, nor will it become one anytime soon. It's mainly
3830 meant to illustrate the use of the new flexible bash-like prompts.
3834 meant to illustrate the use of the new flexible bash-like prompts.
3831 I guess it could be used by hardy souls for true shell management,
3835 I guess it could be used by hardy souls for true shell management,
3832 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3836 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3833 profile. This uses the InterpreterExec extension provided by
3837 profile. This uses the InterpreterExec extension provided by
3834 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3838 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3835
3839
3836 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3840 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3837 auto-align itself with the length of the previous input prompt
3841 auto-align itself with the length of the previous input prompt
3838 (taking into account the invisible color escapes).
3842 (taking into account the invisible color escapes).
3839 (CachedOutput.__init__): Large restructuring of this class. Now
3843 (CachedOutput.__init__): Large restructuring of this class. Now
3840 all three prompts (primary1, primary2, output) are proper objects,
3844 all three prompts (primary1, primary2, output) are proper objects,
3841 managed by the 'parent' CachedOutput class. The code is still a
3845 managed by the 'parent' CachedOutput class. The code is still a
3842 bit hackish (all prompts share state via a pointer to the cache),
3846 bit hackish (all prompts share state via a pointer to the cache),
3843 but it's overall far cleaner than before.
3847 but it's overall far cleaner than before.
3844
3848
3845 * IPython/genutils.py (getoutputerror): modified to add verbose,
3849 * IPython/genutils.py (getoutputerror): modified to add verbose,
3846 debug and header options. This makes the interface of all getout*
3850 debug and header options. This makes the interface of all getout*
3847 functions uniform.
3851 functions uniform.
3848 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3852 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3849
3853
3850 * IPython/Magic.py (Magic.default_option): added a function to
3854 * IPython/Magic.py (Magic.default_option): added a function to
3851 allow registering default options for any magic command. This
3855 allow registering default options for any magic command. This
3852 makes it easy to have profiles which customize the magics globally
3856 makes it easy to have profiles which customize the magics globally
3853 for a certain use. The values set through this function are
3857 for a certain use. The values set through this function are
3854 picked up by the parse_options() method, which all magics should
3858 picked up by the parse_options() method, which all magics should
3855 use to parse their options.
3859 use to parse their options.
3856
3860
3857 * IPython/genutils.py (warn): modified the warnings framework to
3861 * IPython/genutils.py (warn): modified the warnings framework to
3858 use the Term I/O class. I'm trying to slowly unify all of
3862 use the Term I/O class. I'm trying to slowly unify all of
3859 IPython's I/O operations to pass through Term.
3863 IPython's I/O operations to pass through Term.
3860
3864
3861 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3865 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3862 the secondary prompt to correctly match the length of the primary
3866 the secondary prompt to correctly match the length of the primary
3863 one for any prompt. Now multi-line code will properly line up
3867 one for any prompt. Now multi-line code will properly line up
3864 even for path dependent prompts, such as the new ones available
3868 even for path dependent prompts, such as the new ones available
3865 via the prompt_specials.
3869 via the prompt_specials.
3866
3870
3867 2004-06-06 Fernando Perez <fperez@colorado.edu>
3871 2004-06-06 Fernando Perez <fperez@colorado.edu>
3868
3872
3869 * IPython/Prompts.py (prompt_specials): Added the ability to have
3873 * IPython/Prompts.py (prompt_specials): Added the ability to have
3870 bash-like special sequences in the prompts, which get
3874 bash-like special sequences in the prompts, which get
3871 automatically expanded. Things like hostname, current working
3875 automatically expanded. Things like hostname, current working
3872 directory and username are implemented already, but it's easy to
3876 directory and username are implemented already, but it's easy to
3873 add more in the future. Thanks to a patch by W.J. van der Laan
3877 add more in the future. Thanks to a patch by W.J. van der Laan
3874 <gnufnork-AT-hetdigitalegat.nl>
3878 <gnufnork-AT-hetdigitalegat.nl>
3875 (prompt_specials): Added color support for prompt strings, so
3879 (prompt_specials): Added color support for prompt strings, so
3876 users can define arbitrary color setups for their prompts.
3880 users can define arbitrary color setups for their prompts.
3877
3881
3878 2004-06-05 Fernando Perez <fperez@colorado.edu>
3882 2004-06-05 Fernando Perez <fperez@colorado.edu>
3879
3883
3880 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3884 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3881 code to load Gary Bishop's readline and configure it
3885 code to load Gary Bishop's readline and configure it
3882 automatically. Thanks to Gary for help on this.
3886 automatically. Thanks to Gary for help on this.
3883
3887
3884 2004-06-01 Fernando Perez <fperez@colorado.edu>
3888 2004-06-01 Fernando Perez <fperez@colorado.edu>
3885
3889
3886 * IPython/Logger.py (Logger.create_log): fix bug for logging
3890 * IPython/Logger.py (Logger.create_log): fix bug for logging
3887 with no filename (previous fix was incomplete).
3891 with no filename (previous fix was incomplete).
3888
3892
3889 2004-05-25 Fernando Perez <fperez@colorado.edu>
3893 2004-05-25 Fernando Perez <fperez@colorado.edu>
3890
3894
3891 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3895 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3892 parens would get passed to the shell.
3896 parens would get passed to the shell.
3893
3897
3894 2004-05-20 Fernando Perez <fperez@colorado.edu>
3898 2004-05-20 Fernando Perez <fperez@colorado.edu>
3895
3899
3896 * IPython/Magic.py (Magic.magic_prun): changed default profile
3900 * IPython/Magic.py (Magic.magic_prun): changed default profile
3897 sort order to 'time' (the more common profiling need).
3901 sort order to 'time' (the more common profiling need).
3898
3902
3899 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3903 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3900 so that source code shown is guaranteed in sync with the file on
3904 so that source code shown is guaranteed in sync with the file on
3901 disk (also changed in psource). Similar fix to the one for
3905 disk (also changed in psource). Similar fix to the one for
3902 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3906 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3903 <yann.ledu-AT-noos.fr>.
3907 <yann.ledu-AT-noos.fr>.
3904
3908
3905 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3909 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3906 with a single option would not be correctly parsed. Closes
3910 with a single option would not be correctly parsed. Closes
3907 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3911 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3908 introduced in 0.6.0 (on 2004-05-06).
3912 introduced in 0.6.0 (on 2004-05-06).
3909
3913
3910 2004-05-13 *** Released version 0.6.0
3914 2004-05-13 *** Released version 0.6.0
3911
3915
3912 2004-05-13 Fernando Perez <fperez@colorado.edu>
3916 2004-05-13 Fernando Perez <fperez@colorado.edu>
3913
3917
3914 * debian/: Added debian/ directory to CVS, so that debian support
3918 * debian/: Added debian/ directory to CVS, so that debian support
3915 is publicly accessible. The debian package is maintained by Jack
3919 is publicly accessible. The debian package is maintained by Jack
3916 Moffit <jack-AT-xiph.org>.
3920 Moffit <jack-AT-xiph.org>.
3917
3921
3918 * Documentation: included the notes about an ipython-based system
3922 * Documentation: included the notes about an ipython-based system
3919 shell (the hypothetical 'pysh') into the new_design.pdf document,
3923 shell (the hypothetical 'pysh') into the new_design.pdf document,
3920 so that these ideas get distributed to users along with the
3924 so that these ideas get distributed to users along with the
3921 official documentation.
3925 official documentation.
3922
3926
3923 2004-05-10 Fernando Perez <fperez@colorado.edu>
3927 2004-05-10 Fernando Perez <fperez@colorado.edu>
3924
3928
3925 * IPython/Logger.py (Logger.create_log): fix recently introduced
3929 * IPython/Logger.py (Logger.create_log): fix recently introduced
3926 bug (misindented line) where logstart would fail when not given an
3930 bug (misindented line) where logstart would fail when not given an
3927 explicit filename.
3931 explicit filename.
3928
3932
3929 2004-05-09 Fernando Perez <fperez@colorado.edu>
3933 2004-05-09 Fernando Perez <fperez@colorado.edu>
3930
3934
3931 * IPython/Magic.py (Magic.parse_options): skip system call when
3935 * IPython/Magic.py (Magic.parse_options): skip system call when
3932 there are no options to look for. Faster, cleaner for the common
3936 there are no options to look for. Faster, cleaner for the common
3933 case.
3937 case.
3934
3938
3935 * Documentation: many updates to the manual: describing Windows
3939 * Documentation: many updates to the manual: describing Windows
3936 support better, Gnuplot updates, credits, misc small stuff. Also
3940 support better, Gnuplot updates, credits, misc small stuff. Also
3937 updated the new_design doc a bit.
3941 updated the new_design doc a bit.
3938
3942
3939 2004-05-06 *** Released version 0.6.0.rc1
3943 2004-05-06 *** Released version 0.6.0.rc1
3940
3944
3941 2004-05-06 Fernando Perez <fperez@colorado.edu>
3945 2004-05-06 Fernando Perez <fperez@colorado.edu>
3942
3946
3943 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3947 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3944 operations to use the vastly more efficient list/''.join() method.
3948 operations to use the vastly more efficient list/''.join() method.
3945 (FormattedTB.text): Fix
3949 (FormattedTB.text): Fix
3946 http://www.scipy.net/roundup/ipython/issue12 - exception source
3950 http://www.scipy.net/roundup/ipython/issue12 - exception source
3947 extract not updated after reload. Thanks to Mike Salib
3951 extract not updated after reload. Thanks to Mike Salib
3948 <msalib-AT-mit.edu> for pinning the source of the problem.
3952 <msalib-AT-mit.edu> for pinning the source of the problem.
3949 Fortunately, the solution works inside ipython and doesn't require
3953 Fortunately, the solution works inside ipython and doesn't require
3950 any changes to python proper.
3954 any changes to python proper.
3951
3955
3952 * IPython/Magic.py (Magic.parse_options): Improved to process the
3956 * IPython/Magic.py (Magic.parse_options): Improved to process the
3953 argument list as a true shell would (by actually using the
3957 argument list as a true shell would (by actually using the
3954 underlying system shell). This way, all @magics automatically get
3958 underlying system shell). This way, all @magics automatically get
3955 shell expansion for variables. Thanks to a comment by Alex
3959 shell expansion for variables. Thanks to a comment by Alex
3956 Schmolck.
3960 Schmolck.
3957
3961
3958 2004-04-04 Fernando Perez <fperez@colorado.edu>
3962 2004-04-04 Fernando Perez <fperez@colorado.edu>
3959
3963
3960 * IPython/iplib.py (InteractiveShell.interact): Added a special
3964 * IPython/iplib.py (InteractiveShell.interact): Added a special
3961 trap for a debugger quit exception, which is basically impossible
3965 trap for a debugger quit exception, which is basically impossible
3962 to handle by normal mechanisms, given what pdb does to the stack.
3966 to handle by normal mechanisms, given what pdb does to the stack.
3963 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3967 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3964
3968
3965 2004-04-03 Fernando Perez <fperez@colorado.edu>
3969 2004-04-03 Fernando Perez <fperez@colorado.edu>
3966
3970
3967 * IPython/genutils.py (Term): Standardized the names of the Term
3971 * IPython/genutils.py (Term): Standardized the names of the Term
3968 class streams to cin/cout/cerr, following C++ naming conventions
3972 class streams to cin/cout/cerr, following C++ naming conventions
3969 (I can't use in/out/err because 'in' is not a valid attribute
3973 (I can't use in/out/err because 'in' is not a valid attribute
3970 name).
3974 name).
3971
3975
3972 * IPython/iplib.py (InteractiveShell.interact): don't increment
3976 * IPython/iplib.py (InteractiveShell.interact): don't increment
3973 the prompt if there's no user input. By Daniel 'Dang' Griffith
3977 the prompt if there's no user input. By Daniel 'Dang' Griffith
3974 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3978 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3975 Francois Pinard.
3979 Francois Pinard.
3976
3980
3977 2004-04-02 Fernando Perez <fperez@colorado.edu>
3981 2004-04-02 Fernando Perez <fperez@colorado.edu>
3978
3982
3979 * IPython/genutils.py (Stream.__init__): Modified to survive at
3983 * IPython/genutils.py (Stream.__init__): Modified to survive at
3980 least importing in contexts where stdin/out/err aren't true file
3984 least importing in contexts where stdin/out/err aren't true file
3981 objects, such as PyCrust (they lack fileno() and mode). However,
3985 objects, such as PyCrust (they lack fileno() and mode). However,
3982 the recovery facilities which rely on these things existing will
3986 the recovery facilities which rely on these things existing will
3983 not work.
3987 not work.
3984
3988
3985 2004-04-01 Fernando Perez <fperez@colorado.edu>
3989 2004-04-01 Fernando Perez <fperez@colorado.edu>
3986
3990
3987 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3991 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3988 use the new getoutputerror() function, so it properly
3992 use the new getoutputerror() function, so it properly
3989 distinguishes stdout/err.
3993 distinguishes stdout/err.
3990
3994
3991 * IPython/genutils.py (getoutputerror): added a function to
3995 * IPython/genutils.py (getoutputerror): added a function to
3992 capture separately the standard output and error of a command.
3996 capture separately the standard output and error of a command.
3993 After a comment from dang on the mailing lists. This code is
3997 After a comment from dang on the mailing lists. This code is
3994 basically a modified version of commands.getstatusoutput(), from
3998 basically a modified version of commands.getstatusoutput(), from
3995 the standard library.
3999 the standard library.
3996
4000
3997 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4001 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3998 '!!' as a special syntax (shorthand) to access @sx.
4002 '!!' as a special syntax (shorthand) to access @sx.
3999
4003
4000 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4004 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4001 command and return its output as a list split on '\n'.
4005 command and return its output as a list split on '\n'.
4002
4006
4003 2004-03-31 Fernando Perez <fperez@colorado.edu>
4007 2004-03-31 Fernando Perez <fperez@colorado.edu>
4004
4008
4005 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4009 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4006 method to dictionaries used as FakeModule instances if they lack
4010 method to dictionaries used as FakeModule instances if they lack
4007 it. At least pydoc in python2.3 breaks for runtime-defined
4011 it. At least pydoc in python2.3 breaks for runtime-defined
4008 functions without this hack. At some point I need to _really_
4012 functions without this hack. At some point I need to _really_
4009 understand what FakeModule is doing, because it's a gross hack.
4013 understand what FakeModule is doing, because it's a gross hack.
4010 But it solves Arnd's problem for now...
4014 But it solves Arnd's problem for now...
4011
4015
4012 2004-02-27 Fernando Perez <fperez@colorado.edu>
4016 2004-02-27 Fernando Perez <fperez@colorado.edu>
4013
4017
4014 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4018 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4015 mode would behave erratically. Also increased the number of
4019 mode would behave erratically. Also increased the number of
4016 possible logs in rotate mod to 999. Thanks to Rod Holland
4020 possible logs in rotate mod to 999. Thanks to Rod Holland
4017 <rhh@StructureLABS.com> for the report and fixes.
4021 <rhh@StructureLABS.com> for the report and fixes.
4018
4022
4019 2004-02-26 Fernando Perez <fperez@colorado.edu>
4023 2004-02-26 Fernando Perez <fperez@colorado.edu>
4020
4024
4021 * IPython/genutils.py (page): Check that the curses module really
4025 * IPython/genutils.py (page): Check that the curses module really
4022 has the initscr attribute before trying to use it. For some
4026 has the initscr attribute before trying to use it. For some
4023 reason, the Solaris curses module is missing this. I think this
4027 reason, the Solaris curses module is missing this. I think this
4024 should be considered a Solaris python bug, but I'm not sure.
4028 should be considered a Solaris python bug, but I'm not sure.
4025
4029
4026 2004-01-17 Fernando Perez <fperez@colorado.edu>
4030 2004-01-17 Fernando Perez <fperez@colorado.edu>
4027
4031
4028 * IPython/genutils.py (Stream.__init__): Changes to try to make
4032 * IPython/genutils.py (Stream.__init__): Changes to try to make
4029 ipython robust against stdin/out/err being closed by the user.
4033 ipython robust against stdin/out/err being closed by the user.
4030 This is 'user error' (and blocks a normal python session, at least
4034 This is 'user error' (and blocks a normal python session, at least
4031 the stdout case). However, Ipython should be able to survive such
4035 the stdout case). However, Ipython should be able to survive such
4032 instances of abuse as gracefully as possible. To simplify the
4036 instances of abuse as gracefully as possible. To simplify the
4033 coding and maintain compatibility with Gary Bishop's Term
4037 coding and maintain compatibility with Gary Bishop's Term
4034 contributions, I've made use of classmethods for this. I think
4038 contributions, I've made use of classmethods for this. I think
4035 this introduces a dependency on python 2.2.
4039 this introduces a dependency on python 2.2.
4036
4040
4037 2004-01-13 Fernando Perez <fperez@colorado.edu>
4041 2004-01-13 Fernando Perez <fperez@colorado.edu>
4038
4042
4039 * IPython/numutils.py (exp_safe): simplified the code a bit and
4043 * IPython/numutils.py (exp_safe): simplified the code a bit and
4040 removed the need for importing the kinds module altogether.
4044 removed the need for importing the kinds module altogether.
4041
4045
4042 2004-01-06 Fernando Perez <fperez@colorado.edu>
4046 2004-01-06 Fernando Perez <fperez@colorado.edu>
4043
4047
4044 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4048 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4045 a magic function instead, after some community feedback. No
4049 a magic function instead, after some community feedback. No
4046 special syntax will exist for it, but its name is deliberately
4050 special syntax will exist for it, but its name is deliberately
4047 very short.
4051 very short.
4048
4052
4049 2003-12-20 Fernando Perez <fperez@colorado.edu>
4053 2003-12-20 Fernando Perez <fperez@colorado.edu>
4050
4054
4051 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4055 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4052 new functionality, to automagically assign the result of a shell
4056 new functionality, to automagically assign the result of a shell
4053 command to a variable. I'll solicit some community feedback on
4057 command to a variable. I'll solicit some community feedback on
4054 this before making it permanent.
4058 this before making it permanent.
4055
4059
4056 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4060 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4057 requested about callables for which inspect couldn't obtain a
4061 requested about callables for which inspect couldn't obtain a
4058 proper argspec. Thanks to a crash report sent by Etienne
4062 proper argspec. Thanks to a crash report sent by Etienne
4059 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4063 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4060
4064
4061 2003-12-09 Fernando Perez <fperez@colorado.edu>
4065 2003-12-09 Fernando Perez <fperez@colorado.edu>
4062
4066
4063 * IPython/genutils.py (page): patch for the pager to work across
4067 * IPython/genutils.py (page): patch for the pager to work across
4064 various versions of Windows. By Gary Bishop.
4068 various versions of Windows. By Gary Bishop.
4065
4069
4066 2003-12-04 Fernando Perez <fperez@colorado.edu>
4070 2003-12-04 Fernando Perez <fperez@colorado.edu>
4067
4071
4068 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4072 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4069 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4073 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4070 While I tested this and it looks ok, there may still be corner
4074 While I tested this and it looks ok, there may still be corner
4071 cases I've missed.
4075 cases I've missed.
4072
4076
4073 2003-12-01 Fernando Perez <fperez@colorado.edu>
4077 2003-12-01 Fernando Perez <fperez@colorado.edu>
4074
4078
4075 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4079 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4076 where a line like 'p,q=1,2' would fail because the automagic
4080 where a line like 'p,q=1,2' would fail because the automagic
4077 system would be triggered for @p.
4081 system would be triggered for @p.
4078
4082
4079 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4083 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4080 cleanups, code unmodified.
4084 cleanups, code unmodified.
4081
4085
4082 * IPython/genutils.py (Term): added a class for IPython to handle
4086 * IPython/genutils.py (Term): added a class for IPython to handle
4083 output. In most cases it will just be a proxy for stdout/err, but
4087 output. In most cases it will just be a proxy for stdout/err, but
4084 having this allows modifications to be made for some platforms,
4088 having this allows modifications to be made for some platforms,
4085 such as handling color escapes under Windows. All of this code
4089 such as handling color escapes under Windows. All of this code
4086 was contributed by Gary Bishop, with minor modifications by me.
4090 was contributed by Gary Bishop, with minor modifications by me.
4087 The actual changes affect many files.
4091 The actual changes affect many files.
4088
4092
4089 2003-11-30 Fernando Perez <fperez@colorado.edu>
4093 2003-11-30 Fernando Perez <fperez@colorado.edu>
4090
4094
4091 * IPython/iplib.py (file_matches): new completion code, courtesy
4095 * IPython/iplib.py (file_matches): new completion code, courtesy
4092 of Jeff Collins. This enables filename completion again under
4096 of Jeff Collins. This enables filename completion again under
4093 python 2.3, which disabled it at the C level.
4097 python 2.3, which disabled it at the C level.
4094
4098
4095 2003-11-11 Fernando Perez <fperez@colorado.edu>
4099 2003-11-11 Fernando Perez <fperez@colorado.edu>
4096
4100
4097 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4101 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4098 for Numeric.array(map(...)), but often convenient.
4102 for Numeric.array(map(...)), but often convenient.
4099
4103
4100 2003-11-05 Fernando Perez <fperez@colorado.edu>
4104 2003-11-05 Fernando Perez <fperez@colorado.edu>
4101
4105
4102 * IPython/numutils.py (frange): Changed a call from int() to
4106 * IPython/numutils.py (frange): Changed a call from int() to
4103 int(round()) to prevent a problem reported with arange() in the
4107 int(round()) to prevent a problem reported with arange() in the
4104 numpy list.
4108 numpy list.
4105
4109
4106 2003-10-06 Fernando Perez <fperez@colorado.edu>
4110 2003-10-06 Fernando Perez <fperez@colorado.edu>
4107
4111
4108 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4112 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4109 prevent crashes if sys lacks an argv attribute (it happens with
4113 prevent crashes if sys lacks an argv attribute (it happens with
4110 embedded interpreters which build a bare-bones sys module).
4114 embedded interpreters which build a bare-bones sys module).
4111 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4115 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4112
4116
4113 2003-09-24 Fernando Perez <fperez@colorado.edu>
4117 2003-09-24 Fernando Perez <fperez@colorado.edu>
4114
4118
4115 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4119 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4116 to protect against poorly written user objects where __getattr__
4120 to protect against poorly written user objects where __getattr__
4117 raises exceptions other than AttributeError. Thanks to a bug
4121 raises exceptions other than AttributeError. Thanks to a bug
4118 report by Oliver Sander <osander-AT-gmx.de>.
4122 report by Oliver Sander <osander-AT-gmx.de>.
4119
4123
4120 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4124 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4121 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4125 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4122
4126
4123 2003-09-09 Fernando Perez <fperez@colorado.edu>
4127 2003-09-09 Fernando Perez <fperez@colorado.edu>
4124
4128
4125 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4129 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4126 unpacking a list whith a callable as first element would
4130 unpacking a list whith a callable as first element would
4127 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4131 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4128 Collins.
4132 Collins.
4129
4133
4130 2003-08-25 *** Released version 0.5.0
4134 2003-08-25 *** Released version 0.5.0
4131
4135
4132 2003-08-22 Fernando Perez <fperez@colorado.edu>
4136 2003-08-22 Fernando Perez <fperez@colorado.edu>
4133
4137
4134 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4138 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4135 improperly defined user exceptions. Thanks to feedback from Mark
4139 improperly defined user exceptions. Thanks to feedback from Mark
4136 Russell <mrussell-AT-verio.net>.
4140 Russell <mrussell-AT-verio.net>.
4137
4141
4138 2003-08-20 Fernando Perez <fperez@colorado.edu>
4142 2003-08-20 Fernando Perez <fperez@colorado.edu>
4139
4143
4140 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4144 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4141 printing so that it would print multi-line string forms starting
4145 printing so that it would print multi-line string forms starting
4142 with a new line. This way the formatting is better respected for
4146 with a new line. This way the formatting is better respected for
4143 objects which work hard to make nice string forms.
4147 objects which work hard to make nice string forms.
4144
4148
4145 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4149 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4146 autocall would overtake data access for objects with both
4150 autocall would overtake data access for objects with both
4147 __getitem__ and __call__.
4151 __getitem__ and __call__.
4148
4152
4149 2003-08-19 *** Released version 0.5.0-rc1
4153 2003-08-19 *** Released version 0.5.0-rc1
4150
4154
4151 2003-08-19 Fernando Perez <fperez@colorado.edu>
4155 2003-08-19 Fernando Perez <fperez@colorado.edu>
4152
4156
4153 * IPython/deep_reload.py (load_tail): single tiny change here
4157 * IPython/deep_reload.py (load_tail): single tiny change here
4154 seems to fix the long-standing bug of dreload() failing to work
4158 seems to fix the long-standing bug of dreload() failing to work
4155 for dotted names. But this module is pretty tricky, so I may have
4159 for dotted names. But this module is pretty tricky, so I may have
4156 missed some subtlety. Needs more testing!.
4160 missed some subtlety. Needs more testing!.
4157
4161
4158 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4162 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4159 exceptions which have badly implemented __str__ methods.
4163 exceptions which have badly implemented __str__ methods.
4160 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4164 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4161 which I've been getting reports about from Python 2.3 users. I
4165 which I've been getting reports about from Python 2.3 users. I
4162 wish I had a simple test case to reproduce the problem, so I could
4166 wish I had a simple test case to reproduce the problem, so I could
4163 either write a cleaner workaround or file a bug report if
4167 either write a cleaner workaround or file a bug report if
4164 necessary.
4168 necessary.
4165
4169
4166 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4170 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4167 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4171 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4168 a bug report by Tjabo Kloppenburg.
4172 a bug report by Tjabo Kloppenburg.
4169
4173
4170 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4174 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4171 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4175 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4172 seems rather unstable. Thanks to a bug report by Tjabo
4176 seems rather unstable. Thanks to a bug report by Tjabo
4173 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4177 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4174
4178
4175 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4179 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4176 this out soon because of the critical fixes in the inner loop for
4180 this out soon because of the critical fixes in the inner loop for
4177 generators.
4181 generators.
4178
4182
4179 * IPython/Magic.py (Magic.getargspec): removed. This (and
4183 * IPython/Magic.py (Magic.getargspec): removed. This (and
4180 _get_def) have been obsoleted by OInspect for a long time, I
4184 _get_def) have been obsoleted by OInspect for a long time, I
4181 hadn't noticed that they were dead code.
4185 hadn't noticed that they were dead code.
4182 (Magic._ofind): restored _ofind functionality for a few literals
4186 (Magic._ofind): restored _ofind functionality for a few literals
4183 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4187 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4184 for things like "hello".capitalize?, since that would require a
4188 for things like "hello".capitalize?, since that would require a
4185 potentially dangerous eval() again.
4189 potentially dangerous eval() again.
4186
4190
4187 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4191 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4188 logic a bit more to clean up the escapes handling and minimize the
4192 logic a bit more to clean up the escapes handling and minimize the
4189 use of _ofind to only necessary cases. The interactive 'feel' of
4193 use of _ofind to only necessary cases. The interactive 'feel' of
4190 IPython should have improved quite a bit with the changes in
4194 IPython should have improved quite a bit with the changes in
4191 _prefilter and _ofind (besides being far safer than before).
4195 _prefilter and _ofind (besides being far safer than before).
4192
4196
4193 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4197 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4194 obscure, never reported). Edit would fail to find the object to
4198 obscure, never reported). Edit would fail to find the object to
4195 edit under some circumstances.
4199 edit under some circumstances.
4196 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4200 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4197 which were causing double-calling of generators. Those eval calls
4201 which were causing double-calling of generators. Those eval calls
4198 were _very_ dangerous, since code with side effects could be
4202 were _very_ dangerous, since code with side effects could be
4199 triggered. As they say, 'eval is evil'... These were the
4203 triggered. As they say, 'eval is evil'... These were the
4200 nastiest evals in IPython. Besides, _ofind is now far simpler,
4204 nastiest evals in IPython. Besides, _ofind is now far simpler,
4201 and it should also be quite a bit faster. Its use of inspect is
4205 and it should also be quite a bit faster. Its use of inspect is
4202 also safer, so perhaps some of the inspect-related crashes I've
4206 also safer, so perhaps some of the inspect-related crashes I've
4203 seen lately with Python 2.3 might be taken care of. That will
4207 seen lately with Python 2.3 might be taken care of. That will
4204 need more testing.
4208 need more testing.
4205
4209
4206 2003-08-17 Fernando Perez <fperez@colorado.edu>
4210 2003-08-17 Fernando Perez <fperez@colorado.edu>
4207
4211
4208 * IPython/iplib.py (InteractiveShell._prefilter): significant
4212 * IPython/iplib.py (InteractiveShell._prefilter): significant
4209 simplifications to the logic for handling user escapes. Faster
4213 simplifications to the logic for handling user escapes. Faster
4210 and simpler code.
4214 and simpler code.
4211
4215
4212 2003-08-14 Fernando Perez <fperez@colorado.edu>
4216 2003-08-14 Fernando Perez <fperez@colorado.edu>
4213
4217
4214 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4218 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4215 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4219 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4216 but it should be quite a bit faster. And the recursive version
4220 but it should be quite a bit faster. And the recursive version
4217 generated O(log N) intermediate storage for all rank>1 arrays,
4221 generated O(log N) intermediate storage for all rank>1 arrays,
4218 even if they were contiguous.
4222 even if they were contiguous.
4219 (l1norm): Added this function.
4223 (l1norm): Added this function.
4220 (norm): Added this function for arbitrary norms (including
4224 (norm): Added this function for arbitrary norms (including
4221 l-infinity). l1 and l2 are still special cases for convenience
4225 l-infinity). l1 and l2 are still special cases for convenience
4222 and speed.
4226 and speed.
4223
4227
4224 2003-08-03 Fernando Perez <fperez@colorado.edu>
4228 2003-08-03 Fernando Perez <fperez@colorado.edu>
4225
4229
4226 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4230 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4227 exceptions, which now raise PendingDeprecationWarnings in Python
4231 exceptions, which now raise PendingDeprecationWarnings in Python
4228 2.3. There were some in Magic and some in Gnuplot2.
4232 2.3. There were some in Magic and some in Gnuplot2.
4229
4233
4230 2003-06-30 Fernando Perez <fperez@colorado.edu>
4234 2003-06-30 Fernando Perez <fperez@colorado.edu>
4231
4235
4232 * IPython/genutils.py (page): modified to call curses only for
4236 * IPython/genutils.py (page): modified to call curses only for
4233 terminals where TERM=='xterm'. After problems under many other
4237 terminals where TERM=='xterm'. After problems under many other
4234 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4238 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4235
4239
4236 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4240 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4237 would be triggered when readline was absent. This was just an old
4241 would be triggered when readline was absent. This was just an old
4238 debugging statement I'd forgotten to take out.
4242 debugging statement I'd forgotten to take out.
4239
4243
4240 2003-06-20 Fernando Perez <fperez@colorado.edu>
4244 2003-06-20 Fernando Perez <fperez@colorado.edu>
4241
4245
4242 * IPython/genutils.py (clock): modified to return only user time
4246 * IPython/genutils.py (clock): modified to return only user time
4243 (not counting system time), after a discussion on scipy. While
4247 (not counting system time), after a discussion on scipy. While
4244 system time may be a useful quantity occasionally, it may much
4248 system time may be a useful quantity occasionally, it may much
4245 more easily be skewed by occasional swapping or other similar
4249 more easily be skewed by occasional swapping or other similar
4246 activity.
4250 activity.
4247
4251
4248 2003-06-05 Fernando Perez <fperez@colorado.edu>
4252 2003-06-05 Fernando Perez <fperez@colorado.edu>
4249
4253
4250 * IPython/numutils.py (identity): new function, for building
4254 * IPython/numutils.py (identity): new function, for building
4251 arbitrary rank Kronecker deltas (mostly backwards compatible with
4255 arbitrary rank Kronecker deltas (mostly backwards compatible with
4252 Numeric.identity)
4256 Numeric.identity)
4253
4257
4254 2003-06-03 Fernando Perez <fperez@colorado.edu>
4258 2003-06-03 Fernando Perez <fperez@colorado.edu>
4255
4259
4256 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4260 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4257 arguments passed to magics with spaces, to allow trailing '\' to
4261 arguments passed to magics with spaces, to allow trailing '\' to
4258 work normally (mainly for Windows users).
4262 work normally (mainly for Windows users).
4259
4263
4260 2003-05-29 Fernando Perez <fperez@colorado.edu>
4264 2003-05-29 Fernando Perez <fperez@colorado.edu>
4261
4265
4262 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4266 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4263 instead of pydoc.help. This fixes a bizarre behavior where
4267 instead of pydoc.help. This fixes a bizarre behavior where
4264 printing '%s' % locals() would trigger the help system. Now
4268 printing '%s' % locals() would trigger the help system. Now
4265 ipython behaves like normal python does.
4269 ipython behaves like normal python does.
4266
4270
4267 Note that if one does 'from pydoc import help', the bizarre
4271 Note that if one does 'from pydoc import help', the bizarre
4268 behavior returns, but this will also happen in normal python, so
4272 behavior returns, but this will also happen in normal python, so
4269 it's not an ipython bug anymore (it has to do with how pydoc.help
4273 it's not an ipython bug anymore (it has to do with how pydoc.help
4270 is implemented).
4274 is implemented).
4271
4275
4272 2003-05-22 Fernando Perez <fperez@colorado.edu>
4276 2003-05-22 Fernando Perez <fperez@colorado.edu>
4273
4277
4274 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4278 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4275 return [] instead of None when nothing matches, also match to end
4279 return [] instead of None when nothing matches, also match to end
4276 of line. Patch by Gary Bishop.
4280 of line. Patch by Gary Bishop.
4277
4281
4278 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4282 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4279 protection as before, for files passed on the command line. This
4283 protection as before, for files passed on the command line. This
4280 prevents the CrashHandler from kicking in if user files call into
4284 prevents the CrashHandler from kicking in if user files call into
4281 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4285 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4282 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4286 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4283
4287
4284 2003-05-20 *** Released version 0.4.0
4288 2003-05-20 *** Released version 0.4.0
4285
4289
4286 2003-05-20 Fernando Perez <fperez@colorado.edu>
4290 2003-05-20 Fernando Perez <fperez@colorado.edu>
4287
4291
4288 * setup.py: added support for manpages. It's a bit hackish b/c of
4292 * setup.py: added support for manpages. It's a bit hackish b/c of
4289 a bug in the way the bdist_rpm distutils target handles gzipped
4293 a bug in the way the bdist_rpm distutils target handles gzipped
4290 manpages, but it works. After a patch by Jack.
4294 manpages, but it works. After a patch by Jack.
4291
4295
4292 2003-05-19 Fernando Perez <fperez@colorado.edu>
4296 2003-05-19 Fernando Perez <fperez@colorado.edu>
4293
4297
4294 * IPython/numutils.py: added a mockup of the kinds module, since
4298 * IPython/numutils.py: added a mockup of the kinds module, since
4295 it was recently removed from Numeric. This way, numutils will
4299 it was recently removed from Numeric. This way, numutils will
4296 work for all users even if they are missing kinds.
4300 work for all users even if they are missing kinds.
4297
4301
4298 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4302 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4299 failure, which can occur with SWIG-wrapped extensions. After a
4303 failure, which can occur with SWIG-wrapped extensions. After a
4300 crash report from Prabhu.
4304 crash report from Prabhu.
4301
4305
4302 2003-05-16 Fernando Perez <fperez@colorado.edu>
4306 2003-05-16 Fernando Perez <fperez@colorado.edu>
4303
4307
4304 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4308 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4305 protect ipython from user code which may call directly
4309 protect ipython from user code which may call directly
4306 sys.excepthook (this looks like an ipython crash to the user, even
4310 sys.excepthook (this looks like an ipython crash to the user, even
4307 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4311 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4308 This is especially important to help users of WxWindows, but may
4312 This is especially important to help users of WxWindows, but may
4309 also be useful in other cases.
4313 also be useful in other cases.
4310
4314
4311 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4315 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4312 an optional tb_offset to be specified, and to preserve exception
4316 an optional tb_offset to be specified, and to preserve exception
4313 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4317 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4314
4318
4315 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4319 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4316
4320
4317 2003-05-15 Fernando Perez <fperez@colorado.edu>
4321 2003-05-15 Fernando Perez <fperez@colorado.edu>
4318
4322
4319 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4323 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4320 installing for a new user under Windows.
4324 installing for a new user under Windows.
4321
4325
4322 2003-05-12 Fernando Perez <fperez@colorado.edu>
4326 2003-05-12 Fernando Perez <fperez@colorado.edu>
4323
4327
4324 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4328 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4325 handler for Emacs comint-based lines. Currently it doesn't do
4329 handler for Emacs comint-based lines. Currently it doesn't do
4326 much (but importantly, it doesn't update the history cache). In
4330 much (but importantly, it doesn't update the history cache). In
4327 the future it may be expanded if Alex needs more functionality
4331 the future it may be expanded if Alex needs more functionality
4328 there.
4332 there.
4329
4333
4330 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4334 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4331 info to crash reports.
4335 info to crash reports.
4332
4336
4333 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4337 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4334 just like Python's -c. Also fixed crash with invalid -color
4338 just like Python's -c. Also fixed crash with invalid -color
4335 option value at startup. Thanks to Will French
4339 option value at startup. Thanks to Will French
4336 <wfrench-AT-bestweb.net> for the bug report.
4340 <wfrench-AT-bestweb.net> for the bug report.
4337
4341
4338 2003-05-09 Fernando Perez <fperez@colorado.edu>
4342 2003-05-09 Fernando Perez <fperez@colorado.edu>
4339
4343
4340 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4344 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4341 to EvalDict (it's a mapping, after all) and simplified its code
4345 to EvalDict (it's a mapping, after all) and simplified its code
4342 quite a bit, after a nice discussion on c.l.py where Gustavo
4346 quite a bit, after a nice discussion on c.l.py where Gustavo
4343 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4347 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4344
4348
4345 2003-04-30 Fernando Perez <fperez@colorado.edu>
4349 2003-04-30 Fernando Perez <fperez@colorado.edu>
4346
4350
4347 * IPython/genutils.py (timings_out): modified it to reduce its
4351 * IPython/genutils.py (timings_out): modified it to reduce its
4348 overhead in the common reps==1 case.
4352 overhead in the common reps==1 case.
4349
4353
4350 2003-04-29 Fernando Perez <fperez@colorado.edu>
4354 2003-04-29 Fernando Perez <fperez@colorado.edu>
4351
4355
4352 * IPython/genutils.py (timings_out): Modified to use the resource
4356 * IPython/genutils.py (timings_out): Modified to use the resource
4353 module, which avoids the wraparound problems of time.clock().
4357 module, which avoids the wraparound problems of time.clock().
4354
4358
4355 2003-04-17 *** Released version 0.2.15pre4
4359 2003-04-17 *** Released version 0.2.15pre4
4356
4360
4357 2003-04-17 Fernando Perez <fperez@colorado.edu>
4361 2003-04-17 Fernando Perez <fperez@colorado.edu>
4358
4362
4359 * setup.py (scriptfiles): Split windows-specific stuff over to a
4363 * setup.py (scriptfiles): Split windows-specific stuff over to a
4360 separate file, in an attempt to have a Windows GUI installer.
4364 separate file, in an attempt to have a Windows GUI installer.
4361 That didn't work, but part of the groundwork is done.
4365 That didn't work, but part of the groundwork is done.
4362
4366
4363 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4367 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4364 indent/unindent with 4 spaces. Particularly useful in combination
4368 indent/unindent with 4 spaces. Particularly useful in combination
4365 with the new auto-indent option.
4369 with the new auto-indent option.
4366
4370
4367 2003-04-16 Fernando Perez <fperez@colorado.edu>
4371 2003-04-16 Fernando Perez <fperez@colorado.edu>
4368
4372
4369 * IPython/Magic.py: various replacements of self.rc for
4373 * IPython/Magic.py: various replacements of self.rc for
4370 self.shell.rc. A lot more remains to be done to fully disentangle
4374 self.shell.rc. A lot more remains to be done to fully disentangle
4371 this class from the main Shell class.
4375 this class from the main Shell class.
4372
4376
4373 * IPython/GnuplotRuntime.py: added checks for mouse support so
4377 * IPython/GnuplotRuntime.py: added checks for mouse support so
4374 that we don't try to enable it if the current gnuplot doesn't
4378 that we don't try to enable it if the current gnuplot doesn't
4375 really support it. Also added checks so that we don't try to
4379 really support it. Also added checks so that we don't try to
4376 enable persist under Windows (where Gnuplot doesn't recognize the
4380 enable persist under Windows (where Gnuplot doesn't recognize the
4377 option).
4381 option).
4378
4382
4379 * IPython/iplib.py (InteractiveShell.interact): Added optional
4383 * IPython/iplib.py (InteractiveShell.interact): Added optional
4380 auto-indenting code, after a patch by King C. Shu
4384 auto-indenting code, after a patch by King C. Shu
4381 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4385 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4382 get along well with pasting indented code. If I ever figure out
4386 get along well with pasting indented code. If I ever figure out
4383 how to make that part go well, it will become on by default.
4387 how to make that part go well, it will become on by default.
4384
4388
4385 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4389 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4386 crash ipython if there was an unmatched '%' in the user's prompt
4390 crash ipython if there was an unmatched '%' in the user's prompt
4387 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4391 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4388
4392
4389 * IPython/iplib.py (InteractiveShell.interact): removed the
4393 * IPython/iplib.py (InteractiveShell.interact): removed the
4390 ability to ask the user whether he wants to crash or not at the
4394 ability to ask the user whether he wants to crash or not at the
4391 'last line' exception handler. Calling functions at that point
4395 'last line' exception handler. Calling functions at that point
4392 changes the stack, and the error reports would have incorrect
4396 changes the stack, and the error reports would have incorrect
4393 tracebacks.
4397 tracebacks.
4394
4398
4395 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4399 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4396 pass through a peger a pretty-printed form of any object. After a
4400 pass through a peger a pretty-printed form of any object. After a
4397 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4401 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4398
4402
4399 2003-04-14 Fernando Perez <fperez@colorado.edu>
4403 2003-04-14 Fernando Perez <fperez@colorado.edu>
4400
4404
4401 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4405 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4402 all files in ~ would be modified at first install (instead of
4406 all files in ~ would be modified at first install (instead of
4403 ~/.ipython). This could be potentially disastrous, as the
4407 ~/.ipython). This could be potentially disastrous, as the
4404 modification (make line-endings native) could damage binary files.
4408 modification (make line-endings native) could damage binary files.
4405
4409
4406 2003-04-10 Fernando Perez <fperez@colorado.edu>
4410 2003-04-10 Fernando Perez <fperez@colorado.edu>
4407
4411
4408 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4412 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4409 handle only lines which are invalid python. This now means that
4413 handle only lines which are invalid python. This now means that
4410 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4414 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4411 for the bug report.
4415 for the bug report.
4412
4416
4413 2003-04-01 Fernando Perez <fperez@colorado.edu>
4417 2003-04-01 Fernando Perez <fperez@colorado.edu>
4414
4418
4415 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4419 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4416 where failing to set sys.last_traceback would crash pdb.pm().
4420 where failing to set sys.last_traceback would crash pdb.pm().
4417 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4421 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4418 report.
4422 report.
4419
4423
4420 2003-03-25 Fernando Perez <fperez@colorado.edu>
4424 2003-03-25 Fernando Perez <fperez@colorado.edu>
4421
4425
4422 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4426 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4423 before printing it (it had a lot of spurious blank lines at the
4427 before printing it (it had a lot of spurious blank lines at the
4424 end).
4428 end).
4425
4429
4426 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4430 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4427 output would be sent 21 times! Obviously people don't use this
4431 output would be sent 21 times! Obviously people don't use this
4428 too often, or I would have heard about it.
4432 too often, or I would have heard about it.
4429
4433
4430 2003-03-24 Fernando Perez <fperez@colorado.edu>
4434 2003-03-24 Fernando Perez <fperez@colorado.edu>
4431
4435
4432 * setup.py (scriptfiles): renamed the data_files parameter from
4436 * setup.py (scriptfiles): renamed the data_files parameter from
4433 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4437 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4434 for the patch.
4438 for the patch.
4435
4439
4436 2003-03-20 Fernando Perez <fperez@colorado.edu>
4440 2003-03-20 Fernando Perez <fperez@colorado.edu>
4437
4441
4438 * IPython/genutils.py (error): added error() and fatal()
4442 * IPython/genutils.py (error): added error() and fatal()
4439 functions.
4443 functions.
4440
4444
4441 2003-03-18 *** Released version 0.2.15pre3
4445 2003-03-18 *** Released version 0.2.15pre3
4442
4446
4443 2003-03-18 Fernando Perez <fperez@colorado.edu>
4447 2003-03-18 Fernando Perez <fperez@colorado.edu>
4444
4448
4445 * setupext/install_data_ext.py
4449 * setupext/install_data_ext.py
4446 (install_data_ext.initialize_options): Class contributed by Jack
4450 (install_data_ext.initialize_options): Class contributed by Jack
4447 Moffit for fixing the old distutils hack. He is sending this to
4451 Moffit for fixing the old distutils hack. He is sending this to
4448 the distutils folks so in the future we may not need it as a
4452 the distutils folks so in the future we may not need it as a
4449 private fix.
4453 private fix.
4450
4454
4451 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4455 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4452 changes for Debian packaging. See his patch for full details.
4456 changes for Debian packaging. See his patch for full details.
4453 The old distutils hack of making the ipythonrc* files carry a
4457 The old distutils hack of making the ipythonrc* files carry a
4454 bogus .py extension is gone, at last. Examples were moved to a
4458 bogus .py extension is gone, at last. Examples were moved to a
4455 separate subdir under doc/, and the separate executable scripts
4459 separate subdir under doc/, and the separate executable scripts
4456 now live in their own directory. Overall a great cleanup. The
4460 now live in their own directory. Overall a great cleanup. The
4457 manual was updated to use the new files, and setup.py has been
4461 manual was updated to use the new files, and setup.py has been
4458 fixed for this setup.
4462 fixed for this setup.
4459
4463
4460 * IPython/PyColorize.py (Parser.usage): made non-executable and
4464 * IPython/PyColorize.py (Parser.usage): made non-executable and
4461 created a pycolor wrapper around it to be included as a script.
4465 created a pycolor wrapper around it to be included as a script.
4462
4466
4463 2003-03-12 *** Released version 0.2.15pre2
4467 2003-03-12 *** Released version 0.2.15pre2
4464
4468
4465 2003-03-12 Fernando Perez <fperez@colorado.edu>
4469 2003-03-12 Fernando Perez <fperez@colorado.edu>
4466
4470
4467 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4471 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4468 long-standing problem with garbage characters in some terminals.
4472 long-standing problem with garbage characters in some terminals.
4469 The issue was really that the \001 and \002 escapes must _only_ be
4473 The issue was really that the \001 and \002 escapes must _only_ be
4470 passed to input prompts (which call readline), but _never_ to
4474 passed to input prompts (which call readline), but _never_ to
4471 normal text to be printed on screen. I changed ColorANSI to have
4475 normal text to be printed on screen. I changed ColorANSI to have
4472 two classes: TermColors and InputTermColors, each with the
4476 two classes: TermColors and InputTermColors, each with the
4473 appropriate escapes for input prompts or normal text. The code in
4477 appropriate escapes for input prompts or normal text. The code in
4474 Prompts.py got slightly more complicated, but this very old and
4478 Prompts.py got slightly more complicated, but this very old and
4475 annoying bug is finally fixed.
4479 annoying bug is finally fixed.
4476
4480
4477 All the credit for nailing down the real origin of this problem
4481 All the credit for nailing down the real origin of this problem
4478 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4482 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4479 *Many* thanks to him for spending quite a bit of effort on this.
4483 *Many* thanks to him for spending quite a bit of effort on this.
4480
4484
4481 2003-03-05 *** Released version 0.2.15pre1
4485 2003-03-05 *** Released version 0.2.15pre1
4482
4486
4483 2003-03-03 Fernando Perez <fperez@colorado.edu>
4487 2003-03-03 Fernando Perez <fperez@colorado.edu>
4484
4488
4485 * IPython/FakeModule.py: Moved the former _FakeModule to a
4489 * IPython/FakeModule.py: Moved the former _FakeModule to a
4486 separate file, because it's also needed by Magic (to fix a similar
4490 separate file, because it's also needed by Magic (to fix a similar
4487 pickle-related issue in @run).
4491 pickle-related issue in @run).
4488
4492
4489 2003-03-02 Fernando Perez <fperez@colorado.edu>
4493 2003-03-02 Fernando Perez <fperez@colorado.edu>
4490
4494
4491 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4495 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4492 the autocall option at runtime.
4496 the autocall option at runtime.
4493 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4497 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4494 across Magic.py to start separating Magic from InteractiveShell.
4498 across Magic.py to start separating Magic from InteractiveShell.
4495 (Magic._ofind): Fixed to return proper namespace for dotted
4499 (Magic._ofind): Fixed to return proper namespace for dotted
4496 names. Before, a dotted name would always return 'not currently
4500 names. Before, a dotted name would always return 'not currently
4497 defined', because it would find the 'parent'. s.x would be found,
4501 defined', because it would find the 'parent'. s.x would be found,
4498 but since 'x' isn't defined by itself, it would get confused.
4502 but since 'x' isn't defined by itself, it would get confused.
4499 (Magic.magic_run): Fixed pickling problems reported by Ralf
4503 (Magic.magic_run): Fixed pickling problems reported by Ralf
4500 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4504 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4501 that I'd used when Mike Heeter reported similar issues at the
4505 that I'd used when Mike Heeter reported similar issues at the
4502 top-level, but now for @run. It boils down to injecting the
4506 top-level, but now for @run. It boils down to injecting the
4503 namespace where code is being executed with something that looks
4507 namespace where code is being executed with something that looks
4504 enough like a module to fool pickle.dump(). Since a pickle stores
4508 enough like a module to fool pickle.dump(). Since a pickle stores
4505 a named reference to the importing module, we need this for
4509 a named reference to the importing module, we need this for
4506 pickles to save something sensible.
4510 pickles to save something sensible.
4507
4511
4508 * IPython/ipmaker.py (make_IPython): added an autocall option.
4512 * IPython/ipmaker.py (make_IPython): added an autocall option.
4509
4513
4510 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4514 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4511 the auto-eval code. Now autocalling is an option, and the code is
4515 the auto-eval code. Now autocalling is an option, and the code is
4512 also vastly safer. There is no more eval() involved at all.
4516 also vastly safer. There is no more eval() involved at all.
4513
4517
4514 2003-03-01 Fernando Perez <fperez@colorado.edu>
4518 2003-03-01 Fernando Perez <fperez@colorado.edu>
4515
4519
4516 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4520 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4517 dict with named keys instead of a tuple.
4521 dict with named keys instead of a tuple.
4518
4522
4519 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4523 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4520
4524
4521 * setup.py (make_shortcut): Fixed message about directories
4525 * setup.py (make_shortcut): Fixed message about directories
4522 created during Windows installation (the directories were ok, just
4526 created during Windows installation (the directories were ok, just
4523 the printed message was misleading). Thanks to Chris Liechti
4527 the printed message was misleading). Thanks to Chris Liechti
4524 <cliechti-AT-gmx.net> for the heads up.
4528 <cliechti-AT-gmx.net> for the heads up.
4525
4529
4526 2003-02-21 Fernando Perez <fperez@colorado.edu>
4530 2003-02-21 Fernando Perez <fperez@colorado.edu>
4527
4531
4528 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4532 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4529 of ValueError exception when checking for auto-execution. This
4533 of ValueError exception when checking for auto-execution. This
4530 one is raised by things like Numeric arrays arr.flat when the
4534 one is raised by things like Numeric arrays arr.flat when the
4531 array is non-contiguous.
4535 array is non-contiguous.
4532
4536
4533 2003-01-31 Fernando Perez <fperez@colorado.edu>
4537 2003-01-31 Fernando Perez <fperez@colorado.edu>
4534
4538
4535 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4539 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4536 not return any value at all (even though the command would get
4540 not return any value at all (even though the command would get
4537 executed).
4541 executed).
4538 (xsys): Flush stdout right after printing the command to ensure
4542 (xsys): Flush stdout right after printing the command to ensure
4539 proper ordering of commands and command output in the total
4543 proper ordering of commands and command output in the total
4540 output.
4544 output.
4541 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4545 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4542 system/getoutput as defaults. The old ones are kept for
4546 system/getoutput as defaults. The old ones are kept for
4543 compatibility reasons, so no code which uses this library needs
4547 compatibility reasons, so no code which uses this library needs
4544 changing.
4548 changing.
4545
4549
4546 2003-01-27 *** Released version 0.2.14
4550 2003-01-27 *** Released version 0.2.14
4547
4551
4548 2003-01-25 Fernando Perez <fperez@colorado.edu>
4552 2003-01-25 Fernando Perez <fperez@colorado.edu>
4549
4553
4550 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4554 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4551 functions defined in previous edit sessions could not be re-edited
4555 functions defined in previous edit sessions could not be re-edited
4552 (because the temp files were immediately removed). Now temp files
4556 (because the temp files were immediately removed). Now temp files
4553 are removed only at IPython's exit.
4557 are removed only at IPython's exit.
4554 (Magic.magic_run): Improved @run to perform shell-like expansions
4558 (Magic.magic_run): Improved @run to perform shell-like expansions
4555 on its arguments (~users and $VARS). With this, @run becomes more
4559 on its arguments (~users and $VARS). With this, @run becomes more
4556 like a normal command-line.
4560 like a normal command-line.
4557
4561
4558 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4562 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4559 bugs related to embedding and cleaned up that code. A fairly
4563 bugs related to embedding and cleaned up that code. A fairly
4560 important one was the impossibility to access the global namespace
4564 important one was the impossibility to access the global namespace
4561 through the embedded IPython (only local variables were visible).
4565 through the embedded IPython (only local variables were visible).
4562
4566
4563 2003-01-14 Fernando Perez <fperez@colorado.edu>
4567 2003-01-14 Fernando Perez <fperez@colorado.edu>
4564
4568
4565 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4569 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4566 auto-calling to be a bit more conservative. Now it doesn't get
4570 auto-calling to be a bit more conservative. Now it doesn't get
4567 triggered if any of '!=()<>' are in the rest of the input line, to
4571 triggered if any of '!=()<>' are in the rest of the input line, to
4568 allow comparing callables. Thanks to Alex for the heads up.
4572 allow comparing callables. Thanks to Alex for the heads up.
4569
4573
4570 2003-01-07 Fernando Perez <fperez@colorado.edu>
4574 2003-01-07 Fernando Perez <fperez@colorado.edu>
4571
4575
4572 * IPython/genutils.py (page): fixed estimation of the number of
4576 * IPython/genutils.py (page): fixed estimation of the number of
4573 lines in a string to be paged to simply count newlines. This
4577 lines in a string to be paged to simply count newlines. This
4574 prevents over-guessing due to embedded escape sequences. A better
4578 prevents over-guessing due to embedded escape sequences. A better
4575 long-term solution would involve stripping out the control chars
4579 long-term solution would involve stripping out the control chars
4576 for the count, but it's potentially so expensive I just don't
4580 for the count, but it's potentially so expensive I just don't
4577 think it's worth doing.
4581 think it's worth doing.
4578
4582
4579 2002-12-19 *** Released version 0.2.14pre50
4583 2002-12-19 *** Released version 0.2.14pre50
4580
4584
4581 2002-12-19 Fernando Perez <fperez@colorado.edu>
4585 2002-12-19 Fernando Perez <fperez@colorado.edu>
4582
4586
4583 * tools/release (version): Changed release scripts to inform
4587 * tools/release (version): Changed release scripts to inform
4584 Andrea and build a NEWS file with a list of recent changes.
4588 Andrea and build a NEWS file with a list of recent changes.
4585
4589
4586 * IPython/ColorANSI.py (__all__): changed terminal detection
4590 * IPython/ColorANSI.py (__all__): changed terminal detection
4587 code. Seems to work better for xterms without breaking
4591 code. Seems to work better for xterms without breaking
4588 konsole. Will need more testing to determine if WinXP and Mac OSX
4592 konsole. Will need more testing to determine if WinXP and Mac OSX
4589 also work ok.
4593 also work ok.
4590
4594
4591 2002-12-18 *** Released version 0.2.14pre49
4595 2002-12-18 *** Released version 0.2.14pre49
4592
4596
4593 2002-12-18 Fernando Perez <fperez@colorado.edu>
4597 2002-12-18 Fernando Perez <fperez@colorado.edu>
4594
4598
4595 * Docs: added new info about Mac OSX, from Andrea.
4599 * Docs: added new info about Mac OSX, from Andrea.
4596
4600
4597 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4601 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4598 allow direct plotting of python strings whose format is the same
4602 allow direct plotting of python strings whose format is the same
4599 of gnuplot data files.
4603 of gnuplot data files.
4600
4604
4601 2002-12-16 Fernando Perez <fperez@colorado.edu>
4605 2002-12-16 Fernando Perez <fperez@colorado.edu>
4602
4606
4603 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4607 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4604 value of exit question to be acknowledged.
4608 value of exit question to be acknowledged.
4605
4609
4606 2002-12-03 Fernando Perez <fperez@colorado.edu>
4610 2002-12-03 Fernando Perez <fperez@colorado.edu>
4607
4611
4608 * IPython/ipmaker.py: removed generators, which had been added
4612 * IPython/ipmaker.py: removed generators, which had been added
4609 by mistake in an earlier debugging run. This was causing trouble
4613 by mistake in an earlier debugging run. This was causing trouble
4610 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4614 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4611 for pointing this out.
4615 for pointing this out.
4612
4616
4613 2002-11-17 Fernando Perez <fperez@colorado.edu>
4617 2002-11-17 Fernando Perez <fperez@colorado.edu>
4614
4618
4615 * Manual: updated the Gnuplot section.
4619 * Manual: updated the Gnuplot section.
4616
4620
4617 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4621 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4618 a much better split of what goes in Runtime and what goes in
4622 a much better split of what goes in Runtime and what goes in
4619 Interactive.
4623 Interactive.
4620
4624
4621 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4625 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4622 being imported from iplib.
4626 being imported from iplib.
4623
4627
4624 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4628 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4625 for command-passing. Now the global Gnuplot instance is called
4629 for command-passing. Now the global Gnuplot instance is called
4626 'gp' instead of 'g', which was really a far too fragile and
4630 'gp' instead of 'g', which was really a far too fragile and
4627 common name.
4631 common name.
4628
4632
4629 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4633 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4630 bounding boxes generated by Gnuplot for square plots.
4634 bounding boxes generated by Gnuplot for square plots.
4631
4635
4632 * IPython/genutils.py (popkey): new function added. I should
4636 * IPython/genutils.py (popkey): new function added. I should
4633 suggest this on c.l.py as a dict method, it seems useful.
4637 suggest this on c.l.py as a dict method, it seems useful.
4634
4638
4635 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4639 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4636 to transparently handle PostScript generation. MUCH better than
4640 to transparently handle PostScript generation. MUCH better than
4637 the previous plot_eps/replot_eps (which I removed now). The code
4641 the previous plot_eps/replot_eps (which I removed now). The code
4638 is also fairly clean and well documented now (including
4642 is also fairly clean and well documented now (including
4639 docstrings).
4643 docstrings).
4640
4644
4641 2002-11-13 Fernando Perez <fperez@colorado.edu>
4645 2002-11-13 Fernando Perez <fperez@colorado.edu>
4642
4646
4643 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4647 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4644 (inconsistent with options).
4648 (inconsistent with options).
4645
4649
4646 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4650 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4647 manually disabled, I don't know why. Fixed it.
4651 manually disabled, I don't know why. Fixed it.
4648 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4652 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4649 eps output.
4653 eps output.
4650
4654
4651 2002-11-12 Fernando Perez <fperez@colorado.edu>
4655 2002-11-12 Fernando Perez <fperez@colorado.edu>
4652
4656
4653 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4657 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4654 don't propagate up to caller. Fixes crash reported by François
4658 don't propagate up to caller. Fixes crash reported by François
4655 Pinard.
4659 Pinard.
4656
4660
4657 2002-11-09 Fernando Perez <fperez@colorado.edu>
4661 2002-11-09 Fernando Perez <fperez@colorado.edu>
4658
4662
4659 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4663 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4660 history file for new users.
4664 history file for new users.
4661 (make_IPython): fixed bug where initial install would leave the
4665 (make_IPython): fixed bug where initial install would leave the
4662 user running in the .ipython dir.
4666 user running in the .ipython dir.
4663 (make_IPython): fixed bug where config dir .ipython would be
4667 (make_IPython): fixed bug where config dir .ipython would be
4664 created regardless of the given -ipythondir option. Thanks to Cory
4668 created regardless of the given -ipythondir option. Thanks to Cory
4665 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4669 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4666
4670
4667 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4671 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4668 type confirmations. Will need to use it in all of IPython's code
4672 type confirmations. Will need to use it in all of IPython's code
4669 consistently.
4673 consistently.
4670
4674
4671 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4675 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4672 context to print 31 lines instead of the default 5. This will make
4676 context to print 31 lines instead of the default 5. This will make
4673 the crash reports extremely detailed in case the problem is in
4677 the crash reports extremely detailed in case the problem is in
4674 libraries I don't have access to.
4678 libraries I don't have access to.
4675
4679
4676 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4680 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4677 line of defense' code to still crash, but giving users fair
4681 line of defense' code to still crash, but giving users fair
4678 warning. I don't want internal errors to go unreported: if there's
4682 warning. I don't want internal errors to go unreported: if there's
4679 an internal problem, IPython should crash and generate a full
4683 an internal problem, IPython should crash and generate a full
4680 report.
4684 report.
4681
4685
4682 2002-11-08 Fernando Perez <fperez@colorado.edu>
4686 2002-11-08 Fernando Perez <fperez@colorado.edu>
4683
4687
4684 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4688 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4685 otherwise uncaught exceptions which can appear if people set
4689 otherwise uncaught exceptions which can appear if people set
4686 sys.stdout to something badly broken. Thanks to a crash report
4690 sys.stdout to something badly broken. Thanks to a crash report
4687 from henni-AT-mail.brainbot.com.
4691 from henni-AT-mail.brainbot.com.
4688
4692
4689 2002-11-04 Fernando Perez <fperez@colorado.edu>
4693 2002-11-04 Fernando Perez <fperez@colorado.edu>
4690
4694
4691 * IPython/iplib.py (InteractiveShell.interact): added
4695 * IPython/iplib.py (InteractiveShell.interact): added
4692 __IPYTHON__active to the builtins. It's a flag which goes on when
4696 __IPYTHON__active to the builtins. It's a flag which goes on when
4693 the interaction starts and goes off again when it stops. This
4697 the interaction starts and goes off again when it stops. This
4694 allows embedding code to detect being inside IPython. Before this
4698 allows embedding code to detect being inside IPython. Before this
4695 was done via __IPYTHON__, but that only shows that an IPython
4699 was done via __IPYTHON__, but that only shows that an IPython
4696 instance has been created.
4700 instance has been created.
4697
4701
4698 * IPython/Magic.py (Magic.magic_env): I realized that in a
4702 * IPython/Magic.py (Magic.magic_env): I realized that in a
4699 UserDict, instance.data holds the data as a normal dict. So I
4703 UserDict, instance.data holds the data as a normal dict. So I
4700 modified @env to return os.environ.data instead of rebuilding a
4704 modified @env to return os.environ.data instead of rebuilding a
4701 dict by hand.
4705 dict by hand.
4702
4706
4703 2002-11-02 Fernando Perez <fperez@colorado.edu>
4707 2002-11-02 Fernando Perez <fperez@colorado.edu>
4704
4708
4705 * IPython/genutils.py (warn): changed so that level 1 prints no
4709 * IPython/genutils.py (warn): changed so that level 1 prints no
4706 header. Level 2 is now the default (with 'WARNING' header, as
4710 header. Level 2 is now the default (with 'WARNING' header, as
4707 before). I think I tracked all places where changes were needed in
4711 before). I think I tracked all places where changes were needed in
4708 IPython, but outside code using the old level numbering may have
4712 IPython, but outside code using the old level numbering may have
4709 broken.
4713 broken.
4710
4714
4711 * IPython/iplib.py (InteractiveShell.runcode): added this to
4715 * IPython/iplib.py (InteractiveShell.runcode): added this to
4712 handle the tracebacks in SystemExit traps correctly. The previous
4716 handle the tracebacks in SystemExit traps correctly. The previous
4713 code (through interact) was printing more of the stack than
4717 code (through interact) was printing more of the stack than
4714 necessary, showing IPython internal code to the user.
4718 necessary, showing IPython internal code to the user.
4715
4719
4716 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4720 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4717 default. Now that the default at the confirmation prompt is yes,
4721 default. Now that the default at the confirmation prompt is yes,
4718 it's not so intrusive. François' argument that ipython sessions
4722 it's not so intrusive. François' argument that ipython sessions
4719 tend to be complex enough not to lose them from an accidental C-d,
4723 tend to be complex enough not to lose them from an accidental C-d,
4720 is a valid one.
4724 is a valid one.
4721
4725
4722 * IPython/iplib.py (InteractiveShell.interact): added a
4726 * IPython/iplib.py (InteractiveShell.interact): added a
4723 showtraceback() call to the SystemExit trap, and modified the exit
4727 showtraceback() call to the SystemExit trap, and modified the exit
4724 confirmation to have yes as the default.
4728 confirmation to have yes as the default.
4725
4729
4726 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4730 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4727 this file. It's been gone from the code for a long time, this was
4731 this file. It's been gone from the code for a long time, this was
4728 simply leftover junk.
4732 simply leftover junk.
4729
4733
4730 2002-11-01 Fernando Perez <fperez@colorado.edu>
4734 2002-11-01 Fernando Perez <fperez@colorado.edu>
4731
4735
4732 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4736 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4733 added. If set, IPython now traps EOF and asks for
4737 added. If set, IPython now traps EOF and asks for
4734 confirmation. After a request by François Pinard.
4738 confirmation. After a request by François Pinard.
4735
4739
4736 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4740 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4737 of @abort, and with a new (better) mechanism for handling the
4741 of @abort, and with a new (better) mechanism for handling the
4738 exceptions.
4742 exceptions.
4739
4743
4740 2002-10-27 Fernando Perez <fperez@colorado.edu>
4744 2002-10-27 Fernando Perez <fperez@colorado.edu>
4741
4745
4742 * IPython/usage.py (__doc__): updated the --help information and
4746 * IPython/usage.py (__doc__): updated the --help information and
4743 the ipythonrc file to indicate that -log generates
4747 the ipythonrc file to indicate that -log generates
4744 ./ipython.log. Also fixed the corresponding info in @logstart.
4748 ./ipython.log. Also fixed the corresponding info in @logstart.
4745 This and several other fixes in the manuals thanks to reports by
4749 This and several other fixes in the manuals thanks to reports by
4746 François Pinard <pinard-AT-iro.umontreal.ca>.
4750 François Pinard <pinard-AT-iro.umontreal.ca>.
4747
4751
4748 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4752 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4749 refer to @logstart (instead of @log, which doesn't exist).
4753 refer to @logstart (instead of @log, which doesn't exist).
4750
4754
4751 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4755 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4752 AttributeError crash. Thanks to Christopher Armstrong
4756 AttributeError crash. Thanks to Christopher Armstrong
4753 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4757 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4754 introduced recently (in 0.2.14pre37) with the fix to the eval
4758 introduced recently (in 0.2.14pre37) with the fix to the eval
4755 problem mentioned below.
4759 problem mentioned below.
4756
4760
4757 2002-10-17 Fernando Perez <fperez@colorado.edu>
4761 2002-10-17 Fernando Perez <fperez@colorado.edu>
4758
4762
4759 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4763 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4760 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4764 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4761
4765
4762 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4766 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4763 this function to fix a problem reported by Alex Schmolck. He saw
4767 this function to fix a problem reported by Alex Schmolck. He saw
4764 it with list comprehensions and generators, which were getting
4768 it with list comprehensions and generators, which were getting
4765 called twice. The real problem was an 'eval' call in testing for
4769 called twice. The real problem was an 'eval' call in testing for
4766 automagic which was evaluating the input line silently.
4770 automagic which was evaluating the input line silently.
4767
4771
4768 This is a potentially very nasty bug, if the input has side
4772 This is a potentially very nasty bug, if the input has side
4769 effects which must not be repeated. The code is much cleaner now,
4773 effects which must not be repeated. The code is much cleaner now,
4770 without any blanket 'except' left and with a regexp test for
4774 without any blanket 'except' left and with a regexp test for
4771 actual function names.
4775 actual function names.
4772
4776
4773 But an eval remains, which I'm not fully comfortable with. I just
4777 But an eval remains, which I'm not fully comfortable with. I just
4774 don't know how to find out if an expression could be a callable in
4778 don't know how to find out if an expression could be a callable in
4775 the user's namespace without doing an eval on the string. However
4779 the user's namespace without doing an eval on the string. However
4776 that string is now much more strictly checked so that no code
4780 that string is now much more strictly checked so that no code
4777 slips by, so the eval should only happen for things that can
4781 slips by, so the eval should only happen for things that can
4778 really be only function/method names.
4782 really be only function/method names.
4779
4783
4780 2002-10-15 Fernando Perez <fperez@colorado.edu>
4784 2002-10-15 Fernando Perez <fperez@colorado.edu>
4781
4785
4782 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4786 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4783 OSX information to main manual, removed README_Mac_OSX file from
4787 OSX information to main manual, removed README_Mac_OSX file from
4784 distribution. Also updated credits for recent additions.
4788 distribution. Also updated credits for recent additions.
4785
4789
4786 2002-10-10 Fernando Perez <fperez@colorado.edu>
4790 2002-10-10 Fernando Perez <fperez@colorado.edu>
4787
4791
4788 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4792 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4789 terminal-related issues. Many thanks to Andrea Riciputi
4793 terminal-related issues. Many thanks to Andrea Riciputi
4790 <andrea.riciputi-AT-libero.it> for writing it.
4794 <andrea.riciputi-AT-libero.it> for writing it.
4791
4795
4792 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4796 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4793 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4797 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4794
4798
4795 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4799 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4796 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4800 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4797 <syver-en-AT-online.no> who both submitted patches for this problem.
4801 <syver-en-AT-online.no> who both submitted patches for this problem.
4798
4802
4799 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4803 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4800 global embedding to make sure that things don't overwrite user
4804 global embedding to make sure that things don't overwrite user
4801 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4805 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4802
4806
4803 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4807 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4804 compatibility. Thanks to Hayden Callow
4808 compatibility. Thanks to Hayden Callow
4805 <h.callow-AT-elec.canterbury.ac.nz>
4809 <h.callow-AT-elec.canterbury.ac.nz>
4806
4810
4807 2002-10-04 Fernando Perez <fperez@colorado.edu>
4811 2002-10-04 Fernando Perez <fperez@colorado.edu>
4808
4812
4809 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4813 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4810 Gnuplot.File objects.
4814 Gnuplot.File objects.
4811
4815
4812 2002-07-23 Fernando Perez <fperez@colorado.edu>
4816 2002-07-23 Fernando Perez <fperez@colorado.edu>
4813
4817
4814 * IPython/genutils.py (timing): Added timings() and timing() for
4818 * IPython/genutils.py (timing): Added timings() and timing() for
4815 quick access to the most commonly needed data, the execution
4819 quick access to the most commonly needed data, the execution
4816 times. Old timing() renamed to timings_out().
4820 times. Old timing() renamed to timings_out().
4817
4821
4818 2002-07-18 Fernando Perez <fperez@colorado.edu>
4822 2002-07-18 Fernando Perez <fperez@colorado.edu>
4819
4823
4820 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4824 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4821 bug with nested instances disrupting the parent's tab completion.
4825 bug with nested instances disrupting the parent's tab completion.
4822
4826
4823 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4827 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4824 all_completions code to begin the emacs integration.
4828 all_completions code to begin the emacs integration.
4825
4829
4826 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4830 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4827 argument to allow titling individual arrays when plotting.
4831 argument to allow titling individual arrays when plotting.
4828
4832
4829 2002-07-15 Fernando Perez <fperez@colorado.edu>
4833 2002-07-15 Fernando Perez <fperez@colorado.edu>
4830
4834
4831 * setup.py (make_shortcut): changed to retrieve the value of
4835 * setup.py (make_shortcut): changed to retrieve the value of
4832 'Program Files' directory from the registry (this value changes in
4836 'Program Files' directory from the registry (this value changes in
4833 non-english versions of Windows). Thanks to Thomas Fanslau
4837 non-english versions of Windows). Thanks to Thomas Fanslau
4834 <tfanslau-AT-gmx.de> for the report.
4838 <tfanslau-AT-gmx.de> for the report.
4835
4839
4836 2002-07-10 Fernando Perez <fperez@colorado.edu>
4840 2002-07-10 Fernando Perez <fperez@colorado.edu>
4837
4841
4838 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4842 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4839 a bug in pdb, which crashes if a line with only whitespace is
4843 a bug in pdb, which crashes if a line with only whitespace is
4840 entered. Bug report submitted to sourceforge.
4844 entered. Bug report submitted to sourceforge.
4841
4845
4842 2002-07-09 Fernando Perez <fperez@colorado.edu>
4846 2002-07-09 Fernando Perez <fperez@colorado.edu>
4843
4847
4844 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4848 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4845 reporting exceptions (it's a bug in inspect.py, I just set a
4849 reporting exceptions (it's a bug in inspect.py, I just set a
4846 workaround).
4850 workaround).
4847
4851
4848 2002-07-08 Fernando Perez <fperez@colorado.edu>
4852 2002-07-08 Fernando Perez <fperez@colorado.edu>
4849
4853
4850 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4854 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4851 __IPYTHON__ in __builtins__ to show up in user_ns.
4855 __IPYTHON__ in __builtins__ to show up in user_ns.
4852
4856
4853 2002-07-03 Fernando Perez <fperez@colorado.edu>
4857 2002-07-03 Fernando Perez <fperez@colorado.edu>
4854
4858
4855 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4859 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4856 name from @gp_set_instance to @gp_set_default.
4860 name from @gp_set_instance to @gp_set_default.
4857
4861
4858 * IPython/ipmaker.py (make_IPython): default editor value set to
4862 * IPython/ipmaker.py (make_IPython): default editor value set to
4859 '0' (a string), to match the rc file. Otherwise will crash when
4863 '0' (a string), to match the rc file. Otherwise will crash when
4860 .strip() is called on it.
4864 .strip() is called on it.
4861
4865
4862
4866
4863 2002-06-28 Fernando Perez <fperez@colorado.edu>
4867 2002-06-28 Fernando Perez <fperez@colorado.edu>
4864
4868
4865 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4869 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4866 of files in current directory when a file is executed via
4870 of files in current directory when a file is executed via
4867 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4871 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4868
4872
4869 * setup.py (manfiles): fix for rpm builds, submitted by RA
4873 * setup.py (manfiles): fix for rpm builds, submitted by RA
4870 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4874 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4871
4875
4872 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4876 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4873 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4877 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4874 string!). A. Schmolck caught this one.
4878 string!). A. Schmolck caught this one.
4875
4879
4876 2002-06-27 Fernando Perez <fperez@colorado.edu>
4880 2002-06-27 Fernando Perez <fperez@colorado.edu>
4877
4881
4878 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4882 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4879 defined files at the cmd line. __name__ wasn't being set to
4883 defined files at the cmd line. __name__ wasn't being set to
4880 __main__.
4884 __main__.
4881
4885
4882 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4886 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4883 regular lists and tuples besides Numeric arrays.
4887 regular lists and tuples besides Numeric arrays.
4884
4888
4885 * IPython/Prompts.py (CachedOutput.__call__): Added output
4889 * IPython/Prompts.py (CachedOutput.__call__): Added output
4886 supression for input ending with ';'. Similar to Mathematica and
4890 supression for input ending with ';'. Similar to Mathematica and
4887 Matlab. The _* vars and Out[] list are still updated, just like
4891 Matlab. The _* vars and Out[] list are still updated, just like
4888 Mathematica behaves.
4892 Mathematica behaves.
4889
4893
4890 2002-06-25 Fernando Perez <fperez@colorado.edu>
4894 2002-06-25 Fernando Perez <fperez@colorado.edu>
4891
4895
4892 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4896 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4893 .ini extensions for profiels under Windows.
4897 .ini extensions for profiels under Windows.
4894
4898
4895 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4899 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4896 string form. Fix contributed by Alexander Schmolck
4900 string form. Fix contributed by Alexander Schmolck
4897 <a.schmolck-AT-gmx.net>
4901 <a.schmolck-AT-gmx.net>
4898
4902
4899 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4903 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4900 pre-configured Gnuplot instance.
4904 pre-configured Gnuplot instance.
4901
4905
4902 2002-06-21 Fernando Perez <fperez@colorado.edu>
4906 2002-06-21 Fernando Perez <fperez@colorado.edu>
4903
4907
4904 * IPython/numutils.py (exp_safe): new function, works around the
4908 * IPython/numutils.py (exp_safe): new function, works around the
4905 underflow problems in Numeric.
4909 underflow problems in Numeric.
4906 (log2): New fn. Safe log in base 2: returns exact integer answer
4910 (log2): New fn. Safe log in base 2: returns exact integer answer
4907 for exact integer powers of 2.
4911 for exact integer powers of 2.
4908
4912
4909 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4913 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4910 properly.
4914 properly.
4911
4915
4912 2002-06-20 Fernando Perez <fperez@colorado.edu>
4916 2002-06-20 Fernando Perez <fperez@colorado.edu>
4913
4917
4914 * IPython/genutils.py (timing): new function like
4918 * IPython/genutils.py (timing): new function like
4915 Mathematica's. Similar to time_test, but returns more info.
4919 Mathematica's. Similar to time_test, but returns more info.
4916
4920
4917 2002-06-18 Fernando Perez <fperez@colorado.edu>
4921 2002-06-18 Fernando Perez <fperez@colorado.edu>
4918
4922
4919 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4923 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4920 according to Mike Heeter's suggestions.
4924 according to Mike Heeter's suggestions.
4921
4925
4922 2002-06-16 Fernando Perez <fperez@colorado.edu>
4926 2002-06-16 Fernando Perez <fperez@colorado.edu>
4923
4927
4924 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4928 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4925 system. GnuplotMagic is gone as a user-directory option. New files
4929 system. GnuplotMagic is gone as a user-directory option. New files
4926 make it easier to use all the gnuplot stuff both from external
4930 make it easier to use all the gnuplot stuff both from external
4927 programs as well as from IPython. Had to rewrite part of
4931 programs as well as from IPython. Had to rewrite part of
4928 hardcopy() b/c of a strange bug: often the ps files simply don't
4932 hardcopy() b/c of a strange bug: often the ps files simply don't
4929 get created, and require a repeat of the command (often several
4933 get created, and require a repeat of the command (often several
4930 times).
4934 times).
4931
4935
4932 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4936 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4933 resolve output channel at call time, so that if sys.stderr has
4937 resolve output channel at call time, so that if sys.stderr has
4934 been redirected by user this gets honored.
4938 been redirected by user this gets honored.
4935
4939
4936 2002-06-13 Fernando Perez <fperez@colorado.edu>
4940 2002-06-13 Fernando Perez <fperez@colorado.edu>
4937
4941
4938 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4942 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4939 IPShell. Kept a copy with the old names to avoid breaking people's
4943 IPShell. Kept a copy with the old names to avoid breaking people's
4940 embedded code.
4944 embedded code.
4941
4945
4942 * IPython/ipython: simplified it to the bare minimum after
4946 * IPython/ipython: simplified it to the bare minimum after
4943 Holger's suggestions. Added info about how to use it in
4947 Holger's suggestions. Added info about how to use it in
4944 PYTHONSTARTUP.
4948 PYTHONSTARTUP.
4945
4949
4946 * IPython/Shell.py (IPythonShell): changed the options passing
4950 * IPython/Shell.py (IPythonShell): changed the options passing
4947 from a string with funky %s replacements to a straight list. Maybe
4951 from a string with funky %s replacements to a straight list. Maybe
4948 a bit more typing, but it follows sys.argv conventions, so there's
4952 a bit more typing, but it follows sys.argv conventions, so there's
4949 less special-casing to remember.
4953 less special-casing to remember.
4950
4954
4951 2002-06-12 Fernando Perez <fperez@colorado.edu>
4955 2002-06-12 Fernando Perez <fperez@colorado.edu>
4952
4956
4953 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4957 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4954 command. Thanks to a suggestion by Mike Heeter.
4958 command. Thanks to a suggestion by Mike Heeter.
4955 (Magic.magic_pfile): added behavior to look at filenames if given
4959 (Magic.magic_pfile): added behavior to look at filenames if given
4956 arg is not a defined object.
4960 arg is not a defined object.
4957 (Magic.magic_save): New @save function to save code snippets. Also
4961 (Magic.magic_save): New @save function to save code snippets. Also
4958 a Mike Heeter idea.
4962 a Mike Heeter idea.
4959
4963
4960 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4964 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4961 plot() and replot(). Much more convenient now, especially for
4965 plot() and replot(). Much more convenient now, especially for
4962 interactive use.
4966 interactive use.
4963
4967
4964 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4968 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4965 filenames.
4969 filenames.
4966
4970
4967 2002-06-02 Fernando Perez <fperez@colorado.edu>
4971 2002-06-02 Fernando Perez <fperez@colorado.edu>
4968
4972
4969 * IPython/Struct.py (Struct.__init__): modified to admit
4973 * IPython/Struct.py (Struct.__init__): modified to admit
4970 initialization via another struct.
4974 initialization via another struct.
4971
4975
4972 * IPython/genutils.py (SystemExec.__init__): New stateful
4976 * IPython/genutils.py (SystemExec.__init__): New stateful
4973 interface to xsys and bq. Useful for writing system scripts.
4977 interface to xsys and bq. Useful for writing system scripts.
4974
4978
4975 2002-05-30 Fernando Perez <fperez@colorado.edu>
4979 2002-05-30 Fernando Perez <fperez@colorado.edu>
4976
4980
4977 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4981 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4978 documents. This will make the user download smaller (it's getting
4982 documents. This will make the user download smaller (it's getting
4979 too big).
4983 too big).
4980
4984
4981 2002-05-29 Fernando Perez <fperez@colorado.edu>
4985 2002-05-29 Fernando Perez <fperez@colorado.edu>
4982
4986
4983 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4987 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4984 fix problems with shelve and pickle. Seems to work, but I don't
4988 fix problems with shelve and pickle. Seems to work, but I don't
4985 know if corner cases break it. Thanks to Mike Heeter
4989 know if corner cases break it. Thanks to Mike Heeter
4986 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4990 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4987
4991
4988 2002-05-24 Fernando Perez <fperez@colorado.edu>
4992 2002-05-24 Fernando Perez <fperez@colorado.edu>
4989
4993
4990 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4994 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4991 macros having broken.
4995 macros having broken.
4992
4996
4993 2002-05-21 Fernando Perez <fperez@colorado.edu>
4997 2002-05-21 Fernando Perez <fperez@colorado.edu>
4994
4998
4995 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4999 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4996 introduced logging bug: all history before logging started was
5000 introduced logging bug: all history before logging started was
4997 being written one character per line! This came from the redesign
5001 being written one character per line! This came from the redesign
4998 of the input history as a special list which slices to strings,
5002 of the input history as a special list which slices to strings,
4999 not to lists.
5003 not to lists.
5000
5004
5001 2002-05-20 Fernando Perez <fperez@colorado.edu>
5005 2002-05-20 Fernando Perez <fperez@colorado.edu>
5002
5006
5003 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5007 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5004 be an attribute of all classes in this module. The design of these
5008 be an attribute of all classes in this module. The design of these
5005 classes needs some serious overhauling.
5009 classes needs some serious overhauling.
5006
5010
5007 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5011 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5008 which was ignoring '_' in option names.
5012 which was ignoring '_' in option names.
5009
5013
5010 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5014 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5011 'Verbose_novars' to 'Context' and made it the new default. It's a
5015 'Verbose_novars' to 'Context' and made it the new default. It's a
5012 bit more readable and also safer than verbose.
5016 bit more readable and also safer than verbose.
5013
5017
5014 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5018 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5015 triple-quoted strings.
5019 triple-quoted strings.
5016
5020
5017 * IPython/OInspect.py (__all__): new module exposing the object
5021 * IPython/OInspect.py (__all__): new module exposing the object
5018 introspection facilities. Now the corresponding magics are dummy
5022 introspection facilities. Now the corresponding magics are dummy
5019 wrappers around this. Having this module will make it much easier
5023 wrappers around this. Having this module will make it much easier
5020 to put these functions into our modified pdb.
5024 to put these functions into our modified pdb.
5021 This new object inspector system uses the new colorizing module,
5025 This new object inspector system uses the new colorizing module,
5022 so source code and other things are nicely syntax highlighted.
5026 so source code and other things are nicely syntax highlighted.
5023
5027
5024 2002-05-18 Fernando Perez <fperez@colorado.edu>
5028 2002-05-18 Fernando Perez <fperez@colorado.edu>
5025
5029
5026 * IPython/ColorANSI.py: Split the coloring tools into a separate
5030 * IPython/ColorANSI.py: Split the coloring tools into a separate
5027 module so I can use them in other code easier (they were part of
5031 module so I can use them in other code easier (they were part of
5028 ultraTB).
5032 ultraTB).
5029
5033
5030 2002-05-17 Fernando Perez <fperez@colorado.edu>
5034 2002-05-17 Fernando Perez <fperez@colorado.edu>
5031
5035
5032 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5036 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5033 fixed it to set the global 'g' also to the called instance, as
5037 fixed it to set the global 'g' also to the called instance, as
5034 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5038 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5035 user's 'g' variables).
5039 user's 'g' variables).
5036
5040
5037 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5041 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5038 global variables (aliases to _ih,_oh) so that users which expect
5042 global variables (aliases to _ih,_oh) so that users which expect
5039 In[5] or Out[7] to work aren't unpleasantly surprised.
5043 In[5] or Out[7] to work aren't unpleasantly surprised.
5040 (InputList.__getslice__): new class to allow executing slices of
5044 (InputList.__getslice__): new class to allow executing slices of
5041 input history directly. Very simple class, complements the use of
5045 input history directly. Very simple class, complements the use of
5042 macros.
5046 macros.
5043
5047
5044 2002-05-16 Fernando Perez <fperez@colorado.edu>
5048 2002-05-16 Fernando Perez <fperez@colorado.edu>
5045
5049
5046 * setup.py (docdirbase): make doc directory be just doc/IPython
5050 * setup.py (docdirbase): make doc directory be just doc/IPython
5047 without version numbers, it will reduce clutter for users.
5051 without version numbers, it will reduce clutter for users.
5048
5052
5049 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5053 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5050 execfile call to prevent possible memory leak. See for details:
5054 execfile call to prevent possible memory leak. See for details:
5051 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5055 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5052
5056
5053 2002-05-15 Fernando Perez <fperez@colorado.edu>
5057 2002-05-15 Fernando Perez <fperez@colorado.edu>
5054
5058
5055 * IPython/Magic.py (Magic.magic_psource): made the object
5059 * IPython/Magic.py (Magic.magic_psource): made the object
5056 introspection names be more standard: pdoc, pdef, pfile and
5060 introspection names be more standard: pdoc, pdef, pfile and
5057 psource. They all print/page their output, and it makes
5061 psource. They all print/page their output, and it makes
5058 remembering them easier. Kept old names for compatibility as
5062 remembering them easier. Kept old names for compatibility as
5059 aliases.
5063 aliases.
5060
5064
5061 2002-05-14 Fernando Perez <fperez@colorado.edu>
5065 2002-05-14 Fernando Perez <fperez@colorado.edu>
5062
5066
5063 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5067 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5064 what the mouse problem was. The trick is to use gnuplot with temp
5068 what the mouse problem was. The trick is to use gnuplot with temp
5065 files and NOT with pipes (for data communication), because having
5069 files and NOT with pipes (for data communication), because having
5066 both pipes and the mouse on is bad news.
5070 both pipes and the mouse on is bad news.
5067
5071
5068 2002-05-13 Fernando Perez <fperez@colorado.edu>
5072 2002-05-13 Fernando Perez <fperez@colorado.edu>
5069
5073
5070 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5074 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5071 bug. Information would be reported about builtins even when
5075 bug. Information would be reported about builtins even when
5072 user-defined functions overrode them.
5076 user-defined functions overrode them.
5073
5077
5074 2002-05-11 Fernando Perez <fperez@colorado.edu>
5078 2002-05-11 Fernando Perez <fperez@colorado.edu>
5075
5079
5076 * IPython/__init__.py (__all__): removed FlexCompleter from
5080 * IPython/__init__.py (__all__): removed FlexCompleter from
5077 __all__ so that things don't fail in platforms without readline.
5081 __all__ so that things don't fail in platforms without readline.
5078
5082
5079 2002-05-10 Fernando Perez <fperez@colorado.edu>
5083 2002-05-10 Fernando Perez <fperez@colorado.edu>
5080
5084
5081 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5085 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5082 it requires Numeric, effectively making Numeric a dependency for
5086 it requires Numeric, effectively making Numeric a dependency for
5083 IPython.
5087 IPython.
5084
5088
5085 * Released 0.2.13
5089 * Released 0.2.13
5086
5090
5087 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5091 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5088 profiler interface. Now all the major options from the profiler
5092 profiler interface. Now all the major options from the profiler
5089 module are directly supported in IPython, both for single
5093 module are directly supported in IPython, both for single
5090 expressions (@prun) and for full programs (@run -p).
5094 expressions (@prun) and for full programs (@run -p).
5091
5095
5092 2002-05-09 Fernando Perez <fperez@colorado.edu>
5096 2002-05-09 Fernando Perez <fperez@colorado.edu>
5093
5097
5094 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5098 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5095 magic properly formatted for screen.
5099 magic properly formatted for screen.
5096
5100
5097 * setup.py (make_shortcut): Changed things to put pdf version in
5101 * setup.py (make_shortcut): Changed things to put pdf version in
5098 doc/ instead of doc/manual (had to change lyxport a bit).
5102 doc/ instead of doc/manual (had to change lyxport a bit).
5099
5103
5100 * IPython/Magic.py (Profile.string_stats): made profile runs go
5104 * IPython/Magic.py (Profile.string_stats): made profile runs go
5101 through pager (they are long and a pager allows searching, saving,
5105 through pager (they are long and a pager allows searching, saving,
5102 etc.)
5106 etc.)
5103
5107
5104 2002-05-08 Fernando Perez <fperez@colorado.edu>
5108 2002-05-08 Fernando Perez <fperez@colorado.edu>
5105
5109
5106 * Released 0.2.12
5110 * Released 0.2.12
5107
5111
5108 2002-05-06 Fernando Perez <fperez@colorado.edu>
5112 2002-05-06 Fernando Perez <fperez@colorado.edu>
5109
5113
5110 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5114 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5111 introduced); 'hist n1 n2' was broken.
5115 introduced); 'hist n1 n2' was broken.
5112 (Magic.magic_pdb): added optional on/off arguments to @pdb
5116 (Magic.magic_pdb): added optional on/off arguments to @pdb
5113 (Magic.magic_run): added option -i to @run, which executes code in
5117 (Magic.magic_run): added option -i to @run, which executes code in
5114 the IPython namespace instead of a clean one. Also added @irun as
5118 the IPython namespace instead of a clean one. Also added @irun as
5115 an alias to @run -i.
5119 an alias to @run -i.
5116
5120
5117 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5121 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5118 fixed (it didn't really do anything, the namespaces were wrong).
5122 fixed (it didn't really do anything, the namespaces were wrong).
5119
5123
5120 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5124 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5121
5125
5122 * IPython/__init__.py (__all__): Fixed package namespace, now
5126 * IPython/__init__.py (__all__): Fixed package namespace, now
5123 'import IPython' does give access to IPython.<all> as
5127 'import IPython' does give access to IPython.<all> as
5124 expected. Also renamed __release__ to Release.
5128 expected. Also renamed __release__ to Release.
5125
5129
5126 * IPython/Debugger.py (__license__): created new Pdb class which
5130 * IPython/Debugger.py (__license__): created new Pdb class which
5127 functions like a drop-in for the normal pdb.Pdb but does NOT
5131 functions like a drop-in for the normal pdb.Pdb but does NOT
5128 import readline by default. This way it doesn't muck up IPython's
5132 import readline by default. This way it doesn't muck up IPython's
5129 readline handling, and now tab-completion finally works in the
5133 readline handling, and now tab-completion finally works in the
5130 debugger -- sort of. It completes things globally visible, but the
5134 debugger -- sort of. It completes things globally visible, but the
5131 completer doesn't track the stack as pdb walks it. That's a bit
5135 completer doesn't track the stack as pdb walks it. That's a bit
5132 tricky, and I'll have to implement it later.
5136 tricky, and I'll have to implement it later.
5133
5137
5134 2002-05-05 Fernando Perez <fperez@colorado.edu>
5138 2002-05-05 Fernando Perez <fperez@colorado.edu>
5135
5139
5136 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5140 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5137 magic docstrings when printed via ? (explicit \'s were being
5141 magic docstrings when printed via ? (explicit \'s were being
5138 printed).
5142 printed).
5139
5143
5140 * IPython/ipmaker.py (make_IPython): fixed namespace
5144 * IPython/ipmaker.py (make_IPython): fixed namespace
5141 identification bug. Now variables loaded via logs or command-line
5145 identification bug. Now variables loaded via logs or command-line
5142 files are recognized in the interactive namespace by @who.
5146 files are recognized in the interactive namespace by @who.
5143
5147
5144 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5148 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5145 log replay system stemming from the string form of Structs.
5149 log replay system stemming from the string form of Structs.
5146
5150
5147 * IPython/Magic.py (Macro.__init__): improved macros to properly
5151 * IPython/Magic.py (Macro.__init__): improved macros to properly
5148 handle magic commands in them.
5152 handle magic commands in them.
5149 (Magic.magic_logstart): usernames are now expanded so 'logstart
5153 (Magic.magic_logstart): usernames are now expanded so 'logstart
5150 ~/mylog' now works.
5154 ~/mylog' now works.
5151
5155
5152 * IPython/iplib.py (complete): fixed bug where paths starting with
5156 * IPython/iplib.py (complete): fixed bug where paths starting with
5153 '/' would be completed as magic names.
5157 '/' would be completed as magic names.
5154
5158
5155 2002-05-04 Fernando Perez <fperez@colorado.edu>
5159 2002-05-04 Fernando Perez <fperez@colorado.edu>
5156
5160
5157 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5161 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5158 allow running full programs under the profiler's control.
5162 allow running full programs under the profiler's control.
5159
5163
5160 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5164 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5161 mode to report exceptions verbosely but without formatting
5165 mode to report exceptions verbosely but without formatting
5162 variables. This addresses the issue of ipython 'freezing' (it's
5166 variables. This addresses the issue of ipython 'freezing' (it's
5163 not frozen, but caught in an expensive formatting loop) when huge
5167 not frozen, but caught in an expensive formatting loop) when huge
5164 variables are in the context of an exception.
5168 variables are in the context of an exception.
5165 (VerboseTB.text): Added '--->' markers at line where exception was
5169 (VerboseTB.text): Added '--->' markers at line where exception was
5166 triggered. Much clearer to read, especially in NoColor modes.
5170 triggered. Much clearer to read, especially in NoColor modes.
5167
5171
5168 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5172 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5169 implemented in reverse when changing to the new parse_options().
5173 implemented in reverse when changing to the new parse_options().
5170
5174
5171 2002-05-03 Fernando Perez <fperez@colorado.edu>
5175 2002-05-03 Fernando Perez <fperez@colorado.edu>
5172
5176
5173 * IPython/Magic.py (Magic.parse_options): new function so that
5177 * IPython/Magic.py (Magic.parse_options): new function so that
5174 magics can parse options easier.
5178 magics can parse options easier.
5175 (Magic.magic_prun): new function similar to profile.run(),
5179 (Magic.magic_prun): new function similar to profile.run(),
5176 suggested by Chris Hart.
5180 suggested by Chris Hart.
5177 (Magic.magic_cd): fixed behavior so that it only changes if
5181 (Magic.magic_cd): fixed behavior so that it only changes if
5178 directory actually is in history.
5182 directory actually is in history.
5179
5183
5180 * IPython/usage.py (__doc__): added information about potential
5184 * IPython/usage.py (__doc__): added information about potential
5181 slowness of Verbose exception mode when there are huge data
5185 slowness of Verbose exception mode when there are huge data
5182 structures to be formatted (thanks to Archie Paulson).
5186 structures to be formatted (thanks to Archie Paulson).
5183
5187
5184 * IPython/ipmaker.py (make_IPython): Changed default logging
5188 * IPython/ipmaker.py (make_IPython): Changed default logging
5185 (when simply called with -log) to use curr_dir/ipython.log in
5189 (when simply called with -log) to use curr_dir/ipython.log in
5186 rotate mode. Fixed crash which was occuring with -log before
5190 rotate mode. Fixed crash which was occuring with -log before
5187 (thanks to Jim Boyle).
5191 (thanks to Jim Boyle).
5188
5192
5189 2002-05-01 Fernando Perez <fperez@colorado.edu>
5193 2002-05-01 Fernando Perez <fperez@colorado.edu>
5190
5194
5191 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5195 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5192 was nasty -- though somewhat of a corner case).
5196 was nasty -- though somewhat of a corner case).
5193
5197
5194 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5198 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5195 text (was a bug).
5199 text (was a bug).
5196
5200
5197 2002-04-30 Fernando Perez <fperez@colorado.edu>
5201 2002-04-30 Fernando Perez <fperez@colorado.edu>
5198
5202
5199 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5203 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5200 a print after ^D or ^C from the user so that the In[] prompt
5204 a print after ^D or ^C from the user so that the In[] prompt
5201 doesn't over-run the gnuplot one.
5205 doesn't over-run the gnuplot one.
5202
5206
5203 2002-04-29 Fernando Perez <fperez@colorado.edu>
5207 2002-04-29 Fernando Perez <fperez@colorado.edu>
5204
5208
5205 * Released 0.2.10
5209 * Released 0.2.10
5206
5210
5207 * IPython/__release__.py (version): get date dynamically.
5211 * IPython/__release__.py (version): get date dynamically.
5208
5212
5209 * Misc. documentation updates thanks to Arnd's comments. Also ran
5213 * Misc. documentation updates thanks to Arnd's comments. Also ran
5210 a full spellcheck on the manual (hadn't been done in a while).
5214 a full spellcheck on the manual (hadn't been done in a while).
5211
5215
5212 2002-04-27 Fernando Perez <fperez@colorado.edu>
5216 2002-04-27 Fernando Perez <fperez@colorado.edu>
5213
5217
5214 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5218 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5215 starting a log in mid-session would reset the input history list.
5219 starting a log in mid-session would reset the input history list.
5216
5220
5217 2002-04-26 Fernando Perez <fperez@colorado.edu>
5221 2002-04-26 Fernando Perez <fperez@colorado.edu>
5218
5222
5219 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5223 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5220 all files were being included in an update. Now anything in
5224 all files were being included in an update. Now anything in
5221 UserConfig that matches [A-Za-z]*.py will go (this excludes
5225 UserConfig that matches [A-Za-z]*.py will go (this excludes
5222 __init__.py)
5226 __init__.py)
5223
5227
5224 2002-04-25 Fernando Perez <fperez@colorado.edu>
5228 2002-04-25 Fernando Perez <fperez@colorado.edu>
5225
5229
5226 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5230 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5227 to __builtins__ so that any form of embedded or imported code can
5231 to __builtins__ so that any form of embedded or imported code can
5228 test for being inside IPython.
5232 test for being inside IPython.
5229
5233
5230 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5234 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5231 changed to GnuplotMagic because it's now an importable module,
5235 changed to GnuplotMagic because it's now an importable module,
5232 this makes the name follow that of the standard Gnuplot module.
5236 this makes the name follow that of the standard Gnuplot module.
5233 GnuplotMagic can now be loaded at any time in mid-session.
5237 GnuplotMagic can now be loaded at any time in mid-session.
5234
5238
5235 2002-04-24 Fernando Perez <fperez@colorado.edu>
5239 2002-04-24 Fernando Perez <fperez@colorado.edu>
5236
5240
5237 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5241 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5238 the globals (IPython has its own namespace) and the
5242 the globals (IPython has its own namespace) and the
5239 PhysicalQuantity stuff is much better anyway.
5243 PhysicalQuantity stuff is much better anyway.
5240
5244
5241 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5245 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5242 embedding example to standard user directory for
5246 embedding example to standard user directory for
5243 distribution. Also put it in the manual.
5247 distribution. Also put it in the manual.
5244
5248
5245 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5249 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5246 instance as first argument (so it doesn't rely on some obscure
5250 instance as first argument (so it doesn't rely on some obscure
5247 hidden global).
5251 hidden global).
5248
5252
5249 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5253 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5250 delimiters. While it prevents ().TAB from working, it allows
5254 delimiters. While it prevents ().TAB from working, it allows
5251 completions in open (... expressions. This is by far a more common
5255 completions in open (... expressions. This is by far a more common
5252 case.
5256 case.
5253
5257
5254 2002-04-23 Fernando Perez <fperez@colorado.edu>
5258 2002-04-23 Fernando Perez <fperez@colorado.edu>
5255
5259
5256 * IPython/Extensions/InterpreterPasteInput.py: new
5260 * IPython/Extensions/InterpreterPasteInput.py: new
5257 syntax-processing module for pasting lines with >>> or ... at the
5261 syntax-processing module for pasting lines with >>> or ... at the
5258 start.
5262 start.
5259
5263
5260 * IPython/Extensions/PhysicalQ_Interactive.py
5264 * IPython/Extensions/PhysicalQ_Interactive.py
5261 (PhysicalQuantityInteractive.__int__): fixed to work with either
5265 (PhysicalQuantityInteractive.__int__): fixed to work with either
5262 Numeric or math.
5266 Numeric or math.
5263
5267
5264 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5268 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5265 provided profiles. Now we have:
5269 provided profiles. Now we have:
5266 -math -> math module as * and cmath with its own namespace.
5270 -math -> math module as * and cmath with its own namespace.
5267 -numeric -> Numeric as *, plus gnuplot & grace
5271 -numeric -> Numeric as *, plus gnuplot & grace
5268 -physics -> same as before
5272 -physics -> same as before
5269
5273
5270 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5274 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5271 user-defined magics wouldn't be found by @magic if they were
5275 user-defined magics wouldn't be found by @magic if they were
5272 defined as class methods. Also cleaned up the namespace search
5276 defined as class methods. Also cleaned up the namespace search
5273 logic and the string building (to use %s instead of many repeated
5277 logic and the string building (to use %s instead of many repeated
5274 string adds).
5278 string adds).
5275
5279
5276 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5280 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5277 of user-defined magics to operate with class methods (cleaner, in
5281 of user-defined magics to operate with class methods (cleaner, in
5278 line with the gnuplot code).
5282 line with the gnuplot code).
5279
5283
5280 2002-04-22 Fernando Perez <fperez@colorado.edu>
5284 2002-04-22 Fernando Perez <fperez@colorado.edu>
5281
5285
5282 * setup.py: updated dependency list so that manual is updated when
5286 * setup.py: updated dependency list so that manual is updated when
5283 all included files change.
5287 all included files change.
5284
5288
5285 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5289 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5286 the delimiter removal option (the fix is ugly right now).
5290 the delimiter removal option (the fix is ugly right now).
5287
5291
5288 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5292 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5289 all of the math profile (quicker loading, no conflict between
5293 all of the math profile (quicker loading, no conflict between
5290 g-9.8 and g-gnuplot).
5294 g-9.8 and g-gnuplot).
5291
5295
5292 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5296 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5293 name of post-mortem files to IPython_crash_report.txt.
5297 name of post-mortem files to IPython_crash_report.txt.
5294
5298
5295 * Cleanup/update of the docs. Added all the new readline info and
5299 * Cleanup/update of the docs. Added all the new readline info and
5296 formatted all lists as 'real lists'.
5300 formatted all lists as 'real lists'.
5297
5301
5298 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5302 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5299 tab-completion options, since the full readline parse_and_bind is
5303 tab-completion options, since the full readline parse_and_bind is
5300 now accessible.
5304 now accessible.
5301
5305
5302 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5306 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5303 handling of readline options. Now users can specify any string to
5307 handling of readline options. Now users can specify any string to
5304 be passed to parse_and_bind(), as well as the delimiters to be
5308 be passed to parse_and_bind(), as well as the delimiters to be
5305 removed.
5309 removed.
5306 (InteractiveShell.__init__): Added __name__ to the global
5310 (InteractiveShell.__init__): Added __name__ to the global
5307 namespace so that things like Itpl which rely on its existence
5311 namespace so that things like Itpl which rely on its existence
5308 don't crash.
5312 don't crash.
5309 (InteractiveShell._prefilter): Defined the default with a _ so
5313 (InteractiveShell._prefilter): Defined the default with a _ so
5310 that prefilter() is easier to override, while the default one
5314 that prefilter() is easier to override, while the default one
5311 remains available.
5315 remains available.
5312
5316
5313 2002-04-18 Fernando Perez <fperez@colorado.edu>
5317 2002-04-18 Fernando Perez <fperez@colorado.edu>
5314
5318
5315 * Added information about pdb in the docs.
5319 * Added information about pdb in the docs.
5316
5320
5317 2002-04-17 Fernando Perez <fperez@colorado.edu>
5321 2002-04-17 Fernando Perez <fperez@colorado.edu>
5318
5322
5319 * IPython/ipmaker.py (make_IPython): added rc_override option to
5323 * IPython/ipmaker.py (make_IPython): added rc_override option to
5320 allow passing config options at creation time which may override
5324 allow passing config options at creation time which may override
5321 anything set in the config files or command line. This is
5325 anything set in the config files or command line. This is
5322 particularly useful for configuring embedded instances.
5326 particularly useful for configuring embedded instances.
5323
5327
5324 2002-04-15 Fernando Perez <fperez@colorado.edu>
5328 2002-04-15 Fernando Perez <fperez@colorado.edu>
5325
5329
5326 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5330 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5327 crash embedded instances because of the input cache falling out of
5331 crash embedded instances because of the input cache falling out of
5328 sync with the output counter.
5332 sync with the output counter.
5329
5333
5330 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5334 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5331 mode which calls pdb after an uncaught exception in IPython itself.
5335 mode which calls pdb after an uncaught exception in IPython itself.
5332
5336
5333 2002-04-14 Fernando Perez <fperez@colorado.edu>
5337 2002-04-14 Fernando Perez <fperez@colorado.edu>
5334
5338
5335 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5339 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5336 readline, fix it back after each call.
5340 readline, fix it back after each call.
5337
5341
5338 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5342 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5339 method to force all access via __call__(), which guarantees that
5343 method to force all access via __call__(), which guarantees that
5340 traceback references are properly deleted.
5344 traceback references are properly deleted.
5341
5345
5342 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5346 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5343 improve printing when pprint is in use.
5347 improve printing when pprint is in use.
5344
5348
5345 2002-04-13 Fernando Perez <fperez@colorado.edu>
5349 2002-04-13 Fernando Perez <fperez@colorado.edu>
5346
5350
5347 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5351 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5348 exceptions aren't caught anymore. If the user triggers one, he
5352 exceptions aren't caught anymore. If the user triggers one, he
5349 should know why he's doing it and it should go all the way up,
5353 should know why he's doing it and it should go all the way up,
5350 just like any other exception. So now @abort will fully kill the
5354 just like any other exception. So now @abort will fully kill the
5351 embedded interpreter and the embedding code (unless that happens
5355 embedded interpreter and the embedding code (unless that happens
5352 to catch SystemExit).
5356 to catch SystemExit).
5353
5357
5354 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5358 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5355 and a debugger() method to invoke the interactive pdb debugger
5359 and a debugger() method to invoke the interactive pdb debugger
5356 after printing exception information. Also added the corresponding
5360 after printing exception information. Also added the corresponding
5357 -pdb option and @pdb magic to control this feature, and updated
5361 -pdb option and @pdb magic to control this feature, and updated
5358 the docs. After a suggestion from Christopher Hart
5362 the docs. After a suggestion from Christopher Hart
5359 (hart-AT-caltech.edu).
5363 (hart-AT-caltech.edu).
5360
5364
5361 2002-04-12 Fernando Perez <fperez@colorado.edu>
5365 2002-04-12 Fernando Perez <fperez@colorado.edu>
5362
5366
5363 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5367 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5364 the exception handlers defined by the user (not the CrashHandler)
5368 the exception handlers defined by the user (not the CrashHandler)
5365 so that user exceptions don't trigger an ipython bug report.
5369 so that user exceptions don't trigger an ipython bug report.
5366
5370
5367 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5371 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5368 configurable (it should have always been so).
5372 configurable (it should have always been so).
5369
5373
5370 2002-03-26 Fernando Perez <fperez@colorado.edu>
5374 2002-03-26 Fernando Perez <fperez@colorado.edu>
5371
5375
5372 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5376 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5373 and there to fix embedding namespace issues. This should all be
5377 and there to fix embedding namespace issues. This should all be
5374 done in a more elegant way.
5378 done in a more elegant way.
5375
5379
5376 2002-03-25 Fernando Perez <fperez@colorado.edu>
5380 2002-03-25 Fernando Perez <fperez@colorado.edu>
5377
5381
5378 * IPython/genutils.py (get_home_dir): Try to make it work under
5382 * IPython/genutils.py (get_home_dir): Try to make it work under
5379 win9x also.
5383 win9x also.
5380
5384
5381 2002-03-20 Fernando Perez <fperez@colorado.edu>
5385 2002-03-20 Fernando Perez <fperez@colorado.edu>
5382
5386
5383 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5387 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5384 sys.displayhook untouched upon __init__.
5388 sys.displayhook untouched upon __init__.
5385
5389
5386 2002-03-19 Fernando Perez <fperez@colorado.edu>
5390 2002-03-19 Fernando Perez <fperez@colorado.edu>
5387
5391
5388 * Released 0.2.9 (for embedding bug, basically).
5392 * Released 0.2.9 (for embedding bug, basically).
5389
5393
5390 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5394 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5391 exceptions so that enclosing shell's state can be restored.
5395 exceptions so that enclosing shell's state can be restored.
5392
5396
5393 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5397 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5394 naming conventions in the .ipython/ dir.
5398 naming conventions in the .ipython/ dir.
5395
5399
5396 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5400 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5397 from delimiters list so filenames with - in them get expanded.
5401 from delimiters list so filenames with - in them get expanded.
5398
5402
5399 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5403 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5400 sys.displayhook not being properly restored after an embedded call.
5404 sys.displayhook not being properly restored after an embedded call.
5401
5405
5402 2002-03-18 Fernando Perez <fperez@colorado.edu>
5406 2002-03-18 Fernando Perez <fperez@colorado.edu>
5403
5407
5404 * Released 0.2.8
5408 * Released 0.2.8
5405
5409
5406 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5410 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5407 some files weren't being included in a -upgrade.
5411 some files weren't being included in a -upgrade.
5408 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5412 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5409 on' so that the first tab completes.
5413 on' so that the first tab completes.
5410 (InteractiveShell.handle_magic): fixed bug with spaces around
5414 (InteractiveShell.handle_magic): fixed bug with spaces around
5411 quotes breaking many magic commands.
5415 quotes breaking many magic commands.
5412
5416
5413 * setup.py: added note about ignoring the syntax error messages at
5417 * setup.py: added note about ignoring the syntax error messages at
5414 installation.
5418 installation.
5415
5419
5416 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5420 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5417 streamlining the gnuplot interface, now there's only one magic @gp.
5421 streamlining the gnuplot interface, now there's only one magic @gp.
5418
5422
5419 2002-03-17 Fernando Perez <fperez@colorado.edu>
5423 2002-03-17 Fernando Perez <fperez@colorado.edu>
5420
5424
5421 * IPython/UserConfig/magic_gnuplot.py: new name for the
5425 * IPython/UserConfig/magic_gnuplot.py: new name for the
5422 example-magic_pm.py file. Much enhanced system, now with a shell
5426 example-magic_pm.py file. Much enhanced system, now with a shell
5423 for communicating directly with gnuplot, one command at a time.
5427 for communicating directly with gnuplot, one command at a time.
5424
5428
5425 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5429 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5426 setting __name__=='__main__'.
5430 setting __name__=='__main__'.
5427
5431
5428 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5432 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5429 mini-shell for accessing gnuplot from inside ipython. Should
5433 mini-shell for accessing gnuplot from inside ipython. Should
5430 extend it later for grace access too. Inspired by Arnd's
5434 extend it later for grace access too. Inspired by Arnd's
5431 suggestion.
5435 suggestion.
5432
5436
5433 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5437 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5434 calling magic functions with () in their arguments. Thanks to Arnd
5438 calling magic functions with () in their arguments. Thanks to Arnd
5435 Baecker for pointing this to me.
5439 Baecker for pointing this to me.
5436
5440
5437 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5441 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5438 infinitely for integer or complex arrays (only worked with floats).
5442 infinitely for integer or complex arrays (only worked with floats).
5439
5443
5440 2002-03-16 Fernando Perez <fperez@colorado.edu>
5444 2002-03-16 Fernando Perez <fperez@colorado.edu>
5441
5445
5442 * setup.py: Merged setup and setup_windows into a single script
5446 * setup.py: Merged setup and setup_windows into a single script
5443 which properly handles things for windows users.
5447 which properly handles things for windows users.
5444
5448
5445 2002-03-15 Fernando Perez <fperez@colorado.edu>
5449 2002-03-15 Fernando Perez <fperez@colorado.edu>
5446
5450
5447 * Big change to the manual: now the magics are all automatically
5451 * Big change to the manual: now the magics are all automatically
5448 documented. This information is generated from their docstrings
5452 documented. This information is generated from their docstrings
5449 and put in a latex file included by the manual lyx file. This way
5453 and put in a latex file included by the manual lyx file. This way
5450 we get always up to date information for the magics. The manual
5454 we get always up to date information for the magics. The manual
5451 now also has proper version information, also auto-synced.
5455 now also has proper version information, also auto-synced.
5452
5456
5453 For this to work, an undocumented --magic_docstrings option was added.
5457 For this to work, an undocumented --magic_docstrings option was added.
5454
5458
5455 2002-03-13 Fernando Perez <fperez@colorado.edu>
5459 2002-03-13 Fernando Perez <fperez@colorado.edu>
5456
5460
5457 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5461 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5458 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5462 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5459
5463
5460 2002-03-12 Fernando Perez <fperez@colorado.edu>
5464 2002-03-12 Fernando Perez <fperez@colorado.edu>
5461
5465
5462 * IPython/ultraTB.py (TermColors): changed color escapes again to
5466 * IPython/ultraTB.py (TermColors): changed color escapes again to
5463 fix the (old, reintroduced) line-wrapping bug. Basically, if
5467 fix the (old, reintroduced) line-wrapping bug. Basically, if
5464 \001..\002 aren't given in the color escapes, lines get wrapped
5468 \001..\002 aren't given in the color escapes, lines get wrapped
5465 weirdly. But giving those screws up old xterms and emacs terms. So
5469 weirdly. But giving those screws up old xterms and emacs terms. So
5466 I added some logic for emacs terms to be ok, but I can't identify old
5470 I added some logic for emacs terms to be ok, but I can't identify old
5467 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5471 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5468
5472
5469 2002-03-10 Fernando Perez <fperez@colorado.edu>
5473 2002-03-10 Fernando Perez <fperez@colorado.edu>
5470
5474
5471 * IPython/usage.py (__doc__): Various documentation cleanups and
5475 * IPython/usage.py (__doc__): Various documentation cleanups and
5472 updates, both in usage docstrings and in the manual.
5476 updates, both in usage docstrings and in the manual.
5473
5477
5474 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5478 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5475 handling of caching. Set minimum acceptabe value for having a
5479 handling of caching. Set minimum acceptabe value for having a
5476 cache at 20 values.
5480 cache at 20 values.
5477
5481
5478 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5482 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5479 install_first_time function to a method, renamed it and added an
5483 install_first_time function to a method, renamed it and added an
5480 'upgrade' mode. Now people can update their config directory with
5484 'upgrade' mode. Now people can update their config directory with
5481 a simple command line switch (-upgrade, also new).
5485 a simple command line switch (-upgrade, also new).
5482
5486
5483 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5487 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5484 @file (convenient for automagic users under Python >= 2.2).
5488 @file (convenient for automagic users under Python >= 2.2).
5485 Removed @files (it seemed more like a plural than an abbrev. of
5489 Removed @files (it seemed more like a plural than an abbrev. of
5486 'file show').
5490 'file show').
5487
5491
5488 * IPython/iplib.py (install_first_time): Fixed crash if there were
5492 * IPython/iplib.py (install_first_time): Fixed crash if there were
5489 backup files ('~') in .ipython/ install directory.
5493 backup files ('~') in .ipython/ install directory.
5490
5494
5491 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5495 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5492 system. Things look fine, but these changes are fairly
5496 system. Things look fine, but these changes are fairly
5493 intrusive. Test them for a few days.
5497 intrusive. Test them for a few days.
5494
5498
5495 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5499 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5496 the prompts system. Now all in/out prompt strings are user
5500 the prompts system. Now all in/out prompt strings are user
5497 controllable. This is particularly useful for embedding, as one
5501 controllable. This is particularly useful for embedding, as one
5498 can tag embedded instances with particular prompts.
5502 can tag embedded instances with particular prompts.
5499
5503
5500 Also removed global use of sys.ps1/2, which now allows nested
5504 Also removed global use of sys.ps1/2, which now allows nested
5501 embeddings without any problems. Added command-line options for
5505 embeddings without any problems. Added command-line options for
5502 the prompt strings.
5506 the prompt strings.
5503
5507
5504 2002-03-08 Fernando Perez <fperez@colorado.edu>
5508 2002-03-08 Fernando Perez <fperez@colorado.edu>
5505
5509
5506 * IPython/UserConfig/example-embed-short.py (ipshell): added
5510 * IPython/UserConfig/example-embed-short.py (ipshell): added
5507 example file with the bare minimum code for embedding.
5511 example file with the bare minimum code for embedding.
5508
5512
5509 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5513 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5510 functionality for the embeddable shell to be activated/deactivated
5514 functionality for the embeddable shell to be activated/deactivated
5511 either globally or at each call.
5515 either globally or at each call.
5512
5516
5513 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5517 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5514 rewriting the prompt with '--->' for auto-inputs with proper
5518 rewriting the prompt with '--->' for auto-inputs with proper
5515 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5519 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5516 this is handled by the prompts class itself, as it should.
5520 this is handled by the prompts class itself, as it should.
5517
5521
5518 2002-03-05 Fernando Perez <fperez@colorado.edu>
5522 2002-03-05 Fernando Perez <fperez@colorado.edu>
5519
5523
5520 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5524 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5521 @logstart to avoid name clashes with the math log function.
5525 @logstart to avoid name clashes with the math log function.
5522
5526
5523 * Big updates to X/Emacs section of the manual.
5527 * Big updates to X/Emacs section of the manual.
5524
5528
5525 * Removed ipython_emacs. Milan explained to me how to pass
5529 * Removed ipython_emacs. Milan explained to me how to pass
5526 arguments to ipython through Emacs. Some day I'm going to end up
5530 arguments to ipython through Emacs. Some day I'm going to end up
5527 learning some lisp...
5531 learning some lisp...
5528
5532
5529 2002-03-04 Fernando Perez <fperez@colorado.edu>
5533 2002-03-04 Fernando Perez <fperez@colorado.edu>
5530
5534
5531 * IPython/ipython_emacs: Created script to be used as the
5535 * IPython/ipython_emacs: Created script to be used as the
5532 py-python-command Emacs variable so we can pass IPython
5536 py-python-command Emacs variable so we can pass IPython
5533 parameters. I can't figure out how to tell Emacs directly to pass
5537 parameters. I can't figure out how to tell Emacs directly to pass
5534 parameters to IPython, so a dummy shell script will do it.
5538 parameters to IPython, so a dummy shell script will do it.
5535
5539
5536 Other enhancements made for things to work better under Emacs'
5540 Other enhancements made for things to work better under Emacs'
5537 various types of terminals. Many thanks to Milan Zamazal
5541 various types of terminals. Many thanks to Milan Zamazal
5538 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5542 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5539
5543
5540 2002-03-01 Fernando Perez <fperez@colorado.edu>
5544 2002-03-01 Fernando Perez <fperez@colorado.edu>
5541
5545
5542 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5546 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5543 that loading of readline is now optional. This gives better
5547 that loading of readline is now optional. This gives better
5544 control to emacs users.
5548 control to emacs users.
5545
5549
5546 * IPython/ultraTB.py (__date__): Modified color escape sequences
5550 * IPython/ultraTB.py (__date__): Modified color escape sequences
5547 and now things work fine under xterm and in Emacs' term buffers
5551 and now things work fine under xterm and in Emacs' term buffers
5548 (though not shell ones). Well, in emacs you get colors, but all
5552 (though not shell ones). Well, in emacs you get colors, but all
5549 seem to be 'light' colors (no difference between dark and light
5553 seem to be 'light' colors (no difference between dark and light
5550 ones). But the garbage chars are gone, and also in xterms. It
5554 ones). But the garbage chars are gone, and also in xterms. It
5551 seems that now I'm using 'cleaner' ansi sequences.
5555 seems that now I'm using 'cleaner' ansi sequences.
5552
5556
5553 2002-02-21 Fernando Perez <fperez@colorado.edu>
5557 2002-02-21 Fernando Perez <fperez@colorado.edu>
5554
5558
5555 * Released 0.2.7 (mainly to publish the scoping fix).
5559 * Released 0.2.7 (mainly to publish the scoping fix).
5556
5560
5557 * IPython/Logger.py (Logger.logstate): added. A corresponding
5561 * IPython/Logger.py (Logger.logstate): added. A corresponding
5558 @logstate magic was created.
5562 @logstate magic was created.
5559
5563
5560 * IPython/Magic.py: fixed nested scoping problem under Python
5564 * IPython/Magic.py: fixed nested scoping problem under Python
5561 2.1.x (automagic wasn't working).
5565 2.1.x (automagic wasn't working).
5562
5566
5563 2002-02-20 Fernando Perez <fperez@colorado.edu>
5567 2002-02-20 Fernando Perez <fperez@colorado.edu>
5564
5568
5565 * Released 0.2.6.
5569 * Released 0.2.6.
5566
5570
5567 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5571 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5568 option so that logs can come out without any headers at all.
5572 option so that logs can come out without any headers at all.
5569
5573
5570 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5574 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5571 SciPy.
5575 SciPy.
5572
5576
5573 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5577 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5574 that embedded IPython calls don't require vars() to be explicitly
5578 that embedded IPython calls don't require vars() to be explicitly
5575 passed. Now they are extracted from the caller's frame (code
5579 passed. Now they are extracted from the caller's frame (code
5576 snatched from Eric Jones' weave). Added better documentation to
5580 snatched from Eric Jones' weave). Added better documentation to
5577 the section on embedding and the example file.
5581 the section on embedding and the example file.
5578
5582
5579 * IPython/genutils.py (page): Changed so that under emacs, it just
5583 * IPython/genutils.py (page): Changed so that under emacs, it just
5580 prints the string. You can then page up and down in the emacs
5584 prints the string. You can then page up and down in the emacs
5581 buffer itself. This is how the builtin help() works.
5585 buffer itself. This is how the builtin help() works.
5582
5586
5583 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5587 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5584 macro scoping: macros need to be executed in the user's namespace
5588 macro scoping: macros need to be executed in the user's namespace
5585 to work as if they had been typed by the user.
5589 to work as if they had been typed by the user.
5586
5590
5587 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5591 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5588 execute automatically (no need to type 'exec...'). They then
5592 execute automatically (no need to type 'exec...'). They then
5589 behave like 'true macros'. The printing system was also modified
5593 behave like 'true macros'. The printing system was also modified
5590 for this to work.
5594 for this to work.
5591
5595
5592 2002-02-19 Fernando Perez <fperez@colorado.edu>
5596 2002-02-19 Fernando Perez <fperez@colorado.edu>
5593
5597
5594 * IPython/genutils.py (page_file): new function for paging files
5598 * IPython/genutils.py (page_file): new function for paging files
5595 in an OS-independent way. Also necessary for file viewing to work
5599 in an OS-independent way. Also necessary for file viewing to work
5596 well inside Emacs buffers.
5600 well inside Emacs buffers.
5597 (page): Added checks for being in an emacs buffer.
5601 (page): Added checks for being in an emacs buffer.
5598 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5602 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5599 same bug in iplib.
5603 same bug in iplib.
5600
5604
5601 2002-02-18 Fernando Perez <fperez@colorado.edu>
5605 2002-02-18 Fernando Perez <fperez@colorado.edu>
5602
5606
5603 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5607 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5604 of readline so that IPython can work inside an Emacs buffer.
5608 of readline so that IPython can work inside an Emacs buffer.
5605
5609
5606 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5610 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5607 method signatures (they weren't really bugs, but it looks cleaner
5611 method signatures (they weren't really bugs, but it looks cleaner
5608 and keeps PyChecker happy).
5612 and keeps PyChecker happy).
5609
5613
5610 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5614 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5611 for implementing various user-defined hooks. Currently only
5615 for implementing various user-defined hooks. Currently only
5612 display is done.
5616 display is done.
5613
5617
5614 * IPython/Prompts.py (CachedOutput._display): changed display
5618 * IPython/Prompts.py (CachedOutput._display): changed display
5615 functions so that they can be dynamically changed by users easily.
5619 functions so that they can be dynamically changed by users easily.
5616
5620
5617 * IPython/Extensions/numeric_formats.py (num_display): added an
5621 * IPython/Extensions/numeric_formats.py (num_display): added an
5618 extension for printing NumPy arrays in flexible manners. It
5622 extension for printing NumPy arrays in flexible manners. It
5619 doesn't do anything yet, but all the structure is in
5623 doesn't do anything yet, but all the structure is in
5620 place. Ultimately the plan is to implement output format control
5624 place. Ultimately the plan is to implement output format control
5621 like in Octave.
5625 like in Octave.
5622
5626
5623 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5627 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5624 methods are found at run-time by all the automatic machinery.
5628 methods are found at run-time by all the automatic machinery.
5625
5629
5626 2002-02-17 Fernando Perez <fperez@colorado.edu>
5630 2002-02-17 Fernando Perez <fperez@colorado.edu>
5627
5631
5628 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5632 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5629 whole file a little.
5633 whole file a little.
5630
5634
5631 * ToDo: closed this document. Now there's a new_design.lyx
5635 * ToDo: closed this document. Now there's a new_design.lyx
5632 document for all new ideas. Added making a pdf of it for the
5636 document for all new ideas. Added making a pdf of it for the
5633 end-user distro.
5637 end-user distro.
5634
5638
5635 * IPython/Logger.py (Logger.switch_log): Created this to replace
5639 * IPython/Logger.py (Logger.switch_log): Created this to replace
5636 logon() and logoff(). It also fixes a nasty crash reported by
5640 logon() and logoff(). It also fixes a nasty crash reported by
5637 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5641 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5638
5642
5639 * IPython/iplib.py (complete): got auto-completion to work with
5643 * IPython/iplib.py (complete): got auto-completion to work with
5640 automagic (I had wanted this for a long time).
5644 automagic (I had wanted this for a long time).
5641
5645
5642 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5646 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5643 to @file, since file() is now a builtin and clashes with automagic
5647 to @file, since file() is now a builtin and clashes with automagic
5644 for @file.
5648 for @file.
5645
5649
5646 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5650 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5647 of this was previously in iplib, which had grown to more than 2000
5651 of this was previously in iplib, which had grown to more than 2000
5648 lines, way too long. No new functionality, but it makes managing
5652 lines, way too long. No new functionality, but it makes managing
5649 the code a bit easier.
5653 the code a bit easier.
5650
5654
5651 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5655 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5652 information to crash reports.
5656 information to crash reports.
5653
5657
5654 2002-02-12 Fernando Perez <fperez@colorado.edu>
5658 2002-02-12 Fernando Perez <fperez@colorado.edu>
5655
5659
5656 * Released 0.2.5.
5660 * Released 0.2.5.
5657
5661
5658 2002-02-11 Fernando Perez <fperez@colorado.edu>
5662 2002-02-11 Fernando Perez <fperez@colorado.edu>
5659
5663
5660 * Wrote a relatively complete Windows installer. It puts
5664 * Wrote a relatively complete Windows installer. It puts
5661 everything in place, creates Start Menu entries and fixes the
5665 everything in place, creates Start Menu entries and fixes the
5662 color issues. Nothing fancy, but it works.
5666 color issues. Nothing fancy, but it works.
5663
5667
5664 2002-02-10 Fernando Perez <fperez@colorado.edu>
5668 2002-02-10 Fernando Perez <fperez@colorado.edu>
5665
5669
5666 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5670 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5667 os.path.expanduser() call so that we can type @run ~/myfile.py and
5671 os.path.expanduser() call so that we can type @run ~/myfile.py and
5668 have thigs work as expected.
5672 have thigs work as expected.
5669
5673
5670 * IPython/genutils.py (page): fixed exception handling so things
5674 * IPython/genutils.py (page): fixed exception handling so things
5671 work both in Unix and Windows correctly. Quitting a pager triggers
5675 work both in Unix and Windows correctly. Quitting a pager triggers
5672 an IOError/broken pipe in Unix, and in windows not finding a pager
5676 an IOError/broken pipe in Unix, and in windows not finding a pager
5673 is also an IOError, so I had to actually look at the return value
5677 is also an IOError, so I had to actually look at the return value
5674 of the exception, not just the exception itself. Should be ok now.
5678 of the exception, not just the exception itself. Should be ok now.
5675
5679
5676 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5680 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5677 modified to allow case-insensitive color scheme changes.
5681 modified to allow case-insensitive color scheme changes.
5678
5682
5679 2002-02-09 Fernando Perez <fperez@colorado.edu>
5683 2002-02-09 Fernando Perez <fperez@colorado.edu>
5680
5684
5681 * IPython/genutils.py (native_line_ends): new function to leave
5685 * IPython/genutils.py (native_line_ends): new function to leave
5682 user config files with os-native line-endings.
5686 user config files with os-native line-endings.
5683
5687
5684 * README and manual updates.
5688 * README and manual updates.
5685
5689
5686 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5690 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5687 instead of StringType to catch Unicode strings.
5691 instead of StringType to catch Unicode strings.
5688
5692
5689 * IPython/genutils.py (filefind): fixed bug for paths with
5693 * IPython/genutils.py (filefind): fixed bug for paths with
5690 embedded spaces (very common in Windows).
5694 embedded spaces (very common in Windows).
5691
5695
5692 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5696 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5693 files under Windows, so that they get automatically associated
5697 files under Windows, so that they get automatically associated
5694 with a text editor. Windows makes it a pain to handle
5698 with a text editor. Windows makes it a pain to handle
5695 extension-less files.
5699 extension-less files.
5696
5700
5697 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5701 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5698 warning about readline only occur for Posix. In Windows there's no
5702 warning about readline only occur for Posix. In Windows there's no
5699 way to get readline, so why bother with the warning.
5703 way to get readline, so why bother with the warning.
5700
5704
5701 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5705 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5702 for __str__ instead of dir(self), since dir() changed in 2.2.
5706 for __str__ instead of dir(self), since dir() changed in 2.2.
5703
5707
5704 * Ported to Windows! Tested on XP, I suspect it should work fine
5708 * Ported to Windows! Tested on XP, I suspect it should work fine
5705 on NT/2000, but I don't think it will work on 98 et al. That
5709 on NT/2000, but I don't think it will work on 98 et al. That
5706 series of Windows is such a piece of junk anyway that I won't try
5710 series of Windows is such a piece of junk anyway that I won't try
5707 porting it there. The XP port was straightforward, showed a few
5711 porting it there. The XP port was straightforward, showed a few
5708 bugs here and there (fixed all), in particular some string
5712 bugs here and there (fixed all), in particular some string
5709 handling stuff which required considering Unicode strings (which
5713 handling stuff which required considering Unicode strings (which
5710 Windows uses). This is good, but hasn't been too tested :) No
5714 Windows uses). This is good, but hasn't been too tested :) No
5711 fancy installer yet, I'll put a note in the manual so people at
5715 fancy installer yet, I'll put a note in the manual so people at
5712 least make manually a shortcut.
5716 least make manually a shortcut.
5713
5717
5714 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5718 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5715 into a single one, "colors". This now controls both prompt and
5719 into a single one, "colors". This now controls both prompt and
5716 exception color schemes, and can be changed both at startup
5720 exception color schemes, and can be changed both at startup
5717 (either via command-line switches or via ipythonrc files) and at
5721 (either via command-line switches or via ipythonrc files) and at
5718 runtime, with @colors.
5722 runtime, with @colors.
5719 (Magic.magic_run): renamed @prun to @run and removed the old
5723 (Magic.magic_run): renamed @prun to @run and removed the old
5720 @run. The two were too similar to warrant keeping both.
5724 @run. The two were too similar to warrant keeping both.
5721
5725
5722 2002-02-03 Fernando Perez <fperez@colorado.edu>
5726 2002-02-03 Fernando Perez <fperez@colorado.edu>
5723
5727
5724 * IPython/iplib.py (install_first_time): Added comment on how to
5728 * IPython/iplib.py (install_first_time): Added comment on how to
5725 configure the color options for first-time users. Put a <return>
5729 configure the color options for first-time users. Put a <return>
5726 request at the end so that small-terminal users get a chance to
5730 request at the end so that small-terminal users get a chance to
5727 read the startup info.
5731 read the startup info.
5728
5732
5729 2002-01-23 Fernando Perez <fperez@colorado.edu>
5733 2002-01-23 Fernando Perez <fperez@colorado.edu>
5730
5734
5731 * IPython/iplib.py (CachedOutput.update): Changed output memory
5735 * IPython/iplib.py (CachedOutput.update): Changed output memory
5732 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5736 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5733 input history we still use _i. Did this b/c these variable are
5737 input history we still use _i. Did this b/c these variable are
5734 very commonly used in interactive work, so the less we need to
5738 very commonly used in interactive work, so the less we need to
5735 type the better off we are.
5739 type the better off we are.
5736 (Magic.magic_prun): updated @prun to better handle the namespaces
5740 (Magic.magic_prun): updated @prun to better handle the namespaces
5737 the file will run in, including a fix for __name__ not being set
5741 the file will run in, including a fix for __name__ not being set
5738 before.
5742 before.
5739
5743
5740 2002-01-20 Fernando Perez <fperez@colorado.edu>
5744 2002-01-20 Fernando Perez <fperez@colorado.edu>
5741
5745
5742 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5746 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5743 extra garbage for Python 2.2. Need to look more carefully into
5747 extra garbage for Python 2.2. Need to look more carefully into
5744 this later.
5748 this later.
5745
5749
5746 2002-01-19 Fernando Perez <fperez@colorado.edu>
5750 2002-01-19 Fernando Perez <fperez@colorado.edu>
5747
5751
5748 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5752 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5749 display SyntaxError exceptions properly formatted when they occur
5753 display SyntaxError exceptions properly formatted when they occur
5750 (they can be triggered by imported code).
5754 (they can be triggered by imported code).
5751
5755
5752 2002-01-18 Fernando Perez <fperez@colorado.edu>
5756 2002-01-18 Fernando Perez <fperez@colorado.edu>
5753
5757
5754 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5758 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5755 SyntaxError exceptions are reported nicely formatted, instead of
5759 SyntaxError exceptions are reported nicely formatted, instead of
5756 spitting out only offset information as before.
5760 spitting out only offset information as before.
5757 (Magic.magic_prun): Added the @prun function for executing
5761 (Magic.magic_prun): Added the @prun function for executing
5758 programs with command line args inside IPython.
5762 programs with command line args inside IPython.
5759
5763
5760 2002-01-16 Fernando Perez <fperez@colorado.edu>
5764 2002-01-16 Fernando Perez <fperez@colorado.edu>
5761
5765
5762 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5766 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5763 to *not* include the last item given in a range. This brings their
5767 to *not* include the last item given in a range. This brings their
5764 behavior in line with Python's slicing:
5768 behavior in line with Python's slicing:
5765 a[n1:n2] -> a[n1]...a[n2-1]
5769 a[n1:n2] -> a[n1]...a[n2-1]
5766 It may be a bit less convenient, but I prefer to stick to Python's
5770 It may be a bit less convenient, but I prefer to stick to Python's
5767 conventions *everywhere*, so users never have to wonder.
5771 conventions *everywhere*, so users never have to wonder.
5768 (Magic.magic_macro): Added @macro function to ease the creation of
5772 (Magic.magic_macro): Added @macro function to ease the creation of
5769 macros.
5773 macros.
5770
5774
5771 2002-01-05 Fernando Perez <fperez@colorado.edu>
5775 2002-01-05 Fernando Perez <fperez@colorado.edu>
5772
5776
5773 * Released 0.2.4.
5777 * Released 0.2.4.
5774
5778
5775 * IPython/iplib.py (Magic.magic_pdef):
5779 * IPython/iplib.py (Magic.magic_pdef):
5776 (InteractiveShell.safe_execfile): report magic lines and error
5780 (InteractiveShell.safe_execfile): report magic lines and error
5777 lines without line numbers so one can easily copy/paste them for
5781 lines without line numbers so one can easily copy/paste them for
5778 re-execution.
5782 re-execution.
5779
5783
5780 * Updated manual with recent changes.
5784 * Updated manual with recent changes.
5781
5785
5782 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5786 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5783 docstring printing when class? is called. Very handy for knowing
5787 docstring printing when class? is called. Very handy for knowing
5784 how to create class instances (as long as __init__ is well
5788 how to create class instances (as long as __init__ is well
5785 documented, of course :)
5789 documented, of course :)
5786 (Magic.magic_doc): print both class and constructor docstrings.
5790 (Magic.magic_doc): print both class and constructor docstrings.
5787 (Magic.magic_pdef): give constructor info if passed a class and
5791 (Magic.magic_pdef): give constructor info if passed a class and
5788 __call__ info for callable object instances.
5792 __call__ info for callable object instances.
5789
5793
5790 2002-01-04 Fernando Perez <fperez@colorado.edu>
5794 2002-01-04 Fernando Perez <fperez@colorado.edu>
5791
5795
5792 * Made deep_reload() off by default. It doesn't always work
5796 * Made deep_reload() off by default. It doesn't always work
5793 exactly as intended, so it's probably safer to have it off. It's
5797 exactly as intended, so it's probably safer to have it off. It's
5794 still available as dreload() anyway, so nothing is lost.
5798 still available as dreload() anyway, so nothing is lost.
5795
5799
5796 2002-01-02 Fernando Perez <fperez@colorado.edu>
5800 2002-01-02 Fernando Perez <fperez@colorado.edu>
5797
5801
5798 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5802 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5799 so I wanted an updated release).
5803 so I wanted an updated release).
5800
5804
5801 2001-12-27 Fernando Perez <fperez@colorado.edu>
5805 2001-12-27 Fernando Perez <fperez@colorado.edu>
5802
5806
5803 * IPython/iplib.py (InteractiveShell.interact): Added the original
5807 * IPython/iplib.py (InteractiveShell.interact): Added the original
5804 code from 'code.py' for this module in order to change the
5808 code from 'code.py' for this module in order to change the
5805 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5809 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5806 the history cache would break when the user hit Ctrl-C, and
5810 the history cache would break when the user hit Ctrl-C, and
5807 interact() offers no way to add any hooks to it.
5811 interact() offers no way to add any hooks to it.
5808
5812
5809 2001-12-23 Fernando Perez <fperez@colorado.edu>
5813 2001-12-23 Fernando Perez <fperez@colorado.edu>
5810
5814
5811 * setup.py: added check for 'MANIFEST' before trying to remove
5815 * setup.py: added check for 'MANIFEST' before trying to remove
5812 it. Thanks to Sean Reifschneider.
5816 it. Thanks to Sean Reifschneider.
5813
5817
5814 2001-12-22 Fernando Perez <fperez@colorado.edu>
5818 2001-12-22 Fernando Perez <fperez@colorado.edu>
5815
5819
5816 * Released 0.2.2.
5820 * Released 0.2.2.
5817
5821
5818 * Finished (reasonably) writing the manual. Later will add the
5822 * Finished (reasonably) writing the manual. Later will add the
5819 python-standard navigation stylesheets, but for the time being
5823 python-standard navigation stylesheets, but for the time being
5820 it's fairly complete. Distribution will include html and pdf
5824 it's fairly complete. Distribution will include html and pdf
5821 versions.
5825 versions.
5822
5826
5823 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5827 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5824 (MayaVi author).
5828 (MayaVi author).
5825
5829
5826 2001-12-21 Fernando Perez <fperez@colorado.edu>
5830 2001-12-21 Fernando Perez <fperez@colorado.edu>
5827
5831
5828 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5832 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5829 good public release, I think (with the manual and the distutils
5833 good public release, I think (with the manual and the distutils
5830 installer). The manual can use some work, but that can go
5834 installer). The manual can use some work, but that can go
5831 slowly. Otherwise I think it's quite nice for end users. Next
5835 slowly. Otherwise I think it's quite nice for end users. Next
5832 summer, rewrite the guts of it...
5836 summer, rewrite the guts of it...
5833
5837
5834 * Changed format of ipythonrc files to use whitespace as the
5838 * Changed format of ipythonrc files to use whitespace as the
5835 separator instead of an explicit '='. Cleaner.
5839 separator instead of an explicit '='. Cleaner.
5836
5840
5837 2001-12-20 Fernando Perez <fperez@colorado.edu>
5841 2001-12-20 Fernando Perez <fperez@colorado.edu>
5838
5842
5839 * Started a manual in LyX. For now it's just a quick merge of the
5843 * Started a manual in LyX. For now it's just a quick merge of the
5840 various internal docstrings and READMEs. Later it may grow into a
5844 various internal docstrings and READMEs. Later it may grow into a
5841 nice, full-blown manual.
5845 nice, full-blown manual.
5842
5846
5843 * Set up a distutils based installer. Installation should now be
5847 * Set up a distutils based installer. Installation should now be
5844 trivially simple for end-users.
5848 trivially simple for end-users.
5845
5849
5846 2001-12-11 Fernando Perez <fperez@colorado.edu>
5850 2001-12-11 Fernando Perez <fperez@colorado.edu>
5847
5851
5848 * Released 0.2.0. First public release, announced it at
5852 * Released 0.2.0. First public release, announced it at
5849 comp.lang.python. From now on, just bugfixes...
5853 comp.lang.python. From now on, just bugfixes...
5850
5854
5851 * Went through all the files, set copyright/license notices and
5855 * Went through all the files, set copyright/license notices and
5852 cleaned up things. Ready for release.
5856 cleaned up things. Ready for release.
5853
5857
5854 2001-12-10 Fernando Perez <fperez@colorado.edu>
5858 2001-12-10 Fernando Perez <fperez@colorado.edu>
5855
5859
5856 * Changed the first-time installer not to use tarfiles. It's more
5860 * Changed the first-time installer not to use tarfiles. It's more
5857 robust now and less unix-dependent. Also makes it easier for
5861 robust now and less unix-dependent. Also makes it easier for
5858 people to later upgrade versions.
5862 people to later upgrade versions.
5859
5863
5860 * Changed @exit to @abort to reflect the fact that it's pretty
5864 * Changed @exit to @abort to reflect the fact that it's pretty
5861 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5865 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5862 becomes significant only when IPyhton is embedded: in that case,
5866 becomes significant only when IPyhton is embedded: in that case,
5863 C-D closes IPython only, but @abort kills the enclosing program
5867 C-D closes IPython only, but @abort kills the enclosing program
5864 too (unless it had called IPython inside a try catching
5868 too (unless it had called IPython inside a try catching
5865 SystemExit).
5869 SystemExit).
5866
5870
5867 * Created Shell module which exposes the actuall IPython Shell
5871 * Created Shell module which exposes the actuall IPython Shell
5868 classes, currently the normal and the embeddable one. This at
5872 classes, currently the normal and the embeddable one. This at
5869 least offers a stable interface we won't need to change when
5873 least offers a stable interface we won't need to change when
5870 (later) the internals are rewritten. That rewrite will be confined
5874 (later) the internals are rewritten. That rewrite will be confined
5871 to iplib and ipmaker, but the Shell interface should remain as is.
5875 to iplib and ipmaker, but the Shell interface should remain as is.
5872
5876
5873 * Added embed module which offers an embeddable IPShell object,
5877 * Added embed module which offers an embeddable IPShell object,
5874 useful to fire up IPython *inside* a running program. Great for
5878 useful to fire up IPython *inside* a running program. Great for
5875 debugging or dynamical data analysis.
5879 debugging or dynamical data analysis.
5876
5880
5877 2001-12-08 Fernando Perez <fperez@colorado.edu>
5881 2001-12-08 Fernando Perez <fperez@colorado.edu>
5878
5882
5879 * Fixed small bug preventing seeing info from methods of defined
5883 * Fixed small bug preventing seeing info from methods of defined
5880 objects (incorrect namespace in _ofind()).
5884 objects (incorrect namespace in _ofind()).
5881
5885
5882 * Documentation cleanup. Moved the main usage docstrings to a
5886 * Documentation cleanup. Moved the main usage docstrings to a
5883 separate file, usage.py (cleaner to maintain, and hopefully in the
5887 separate file, usage.py (cleaner to maintain, and hopefully in the
5884 future some perlpod-like way of producing interactive, man and
5888 future some perlpod-like way of producing interactive, man and
5885 html docs out of it will be found).
5889 html docs out of it will be found).
5886
5890
5887 * Added @profile to see your profile at any time.
5891 * Added @profile to see your profile at any time.
5888
5892
5889 * Added @p as an alias for 'print'. It's especially convenient if
5893 * Added @p as an alias for 'print'. It's especially convenient if
5890 using automagic ('p x' prints x).
5894 using automagic ('p x' prints x).
5891
5895
5892 * Small cleanups and fixes after a pychecker run.
5896 * Small cleanups and fixes after a pychecker run.
5893
5897
5894 * Changed the @cd command to handle @cd - and @cd -<n> for
5898 * Changed the @cd command to handle @cd - and @cd -<n> for
5895 visiting any directory in _dh.
5899 visiting any directory in _dh.
5896
5900
5897 * Introduced _dh, a history of visited directories. @dhist prints
5901 * Introduced _dh, a history of visited directories. @dhist prints
5898 it out with numbers.
5902 it out with numbers.
5899
5903
5900 2001-12-07 Fernando Perez <fperez@colorado.edu>
5904 2001-12-07 Fernando Perez <fperez@colorado.edu>
5901
5905
5902 * Released 0.1.22
5906 * Released 0.1.22
5903
5907
5904 * Made initialization a bit more robust against invalid color
5908 * Made initialization a bit more robust against invalid color
5905 options in user input (exit, not traceback-crash).
5909 options in user input (exit, not traceback-crash).
5906
5910
5907 * Changed the bug crash reporter to write the report only in the
5911 * Changed the bug crash reporter to write the report only in the
5908 user's .ipython directory. That way IPython won't litter people's
5912 user's .ipython directory. That way IPython won't litter people's
5909 hard disks with crash files all over the place. Also print on
5913 hard disks with crash files all over the place. Also print on
5910 screen the necessary mail command.
5914 screen the necessary mail command.
5911
5915
5912 * With the new ultraTB, implemented LightBG color scheme for light
5916 * With the new ultraTB, implemented LightBG color scheme for light
5913 background terminals. A lot of people like white backgrounds, so I
5917 background terminals. A lot of people like white backgrounds, so I
5914 guess we should at least give them something readable.
5918 guess we should at least give them something readable.
5915
5919
5916 2001-12-06 Fernando Perez <fperez@colorado.edu>
5920 2001-12-06 Fernando Perez <fperez@colorado.edu>
5917
5921
5918 * Modified the structure of ultraTB. Now there's a proper class
5922 * Modified the structure of ultraTB. Now there's a proper class
5919 for tables of color schemes which allow adding schemes easily and
5923 for tables of color schemes which allow adding schemes easily and
5920 switching the active scheme without creating a new instance every
5924 switching the active scheme without creating a new instance every
5921 time (which was ridiculous). The syntax for creating new schemes
5925 time (which was ridiculous). The syntax for creating new schemes
5922 is also cleaner. I think ultraTB is finally done, with a clean
5926 is also cleaner. I think ultraTB is finally done, with a clean
5923 class structure. Names are also much cleaner (now there's proper
5927 class structure. Names are also much cleaner (now there's proper
5924 color tables, no need for every variable to also have 'color' in
5928 color tables, no need for every variable to also have 'color' in
5925 its name).
5929 its name).
5926
5930
5927 * Broke down genutils into separate files. Now genutils only
5931 * Broke down genutils into separate files. Now genutils only
5928 contains utility functions, and classes have been moved to their
5932 contains utility functions, and classes have been moved to their
5929 own files (they had enough independent functionality to warrant
5933 own files (they had enough independent functionality to warrant
5930 it): ConfigLoader, OutputTrap, Struct.
5934 it): ConfigLoader, OutputTrap, Struct.
5931
5935
5932 2001-12-05 Fernando Perez <fperez@colorado.edu>
5936 2001-12-05 Fernando Perez <fperez@colorado.edu>
5933
5937
5934 * IPython turns 21! Released version 0.1.21, as a candidate for
5938 * IPython turns 21! Released version 0.1.21, as a candidate for
5935 public consumption. If all goes well, release in a few days.
5939 public consumption. If all goes well, release in a few days.
5936
5940
5937 * Fixed path bug (files in Extensions/ directory wouldn't be found
5941 * Fixed path bug (files in Extensions/ directory wouldn't be found
5938 unless IPython/ was explicitly in sys.path).
5942 unless IPython/ was explicitly in sys.path).
5939
5943
5940 * Extended the FlexCompleter class as MagicCompleter to allow
5944 * Extended the FlexCompleter class as MagicCompleter to allow
5941 completion of @-starting lines.
5945 completion of @-starting lines.
5942
5946
5943 * Created __release__.py file as a central repository for release
5947 * Created __release__.py file as a central repository for release
5944 info that other files can read from.
5948 info that other files can read from.
5945
5949
5946 * Fixed small bug in logging: when logging was turned on in
5950 * Fixed small bug in logging: when logging was turned on in
5947 mid-session, old lines with special meanings (!@?) were being
5951 mid-session, old lines with special meanings (!@?) were being
5948 logged without the prepended comment, which is necessary since
5952 logged without the prepended comment, which is necessary since
5949 they are not truly valid python syntax. This should make session
5953 they are not truly valid python syntax. This should make session
5950 restores produce less errors.
5954 restores produce less errors.
5951
5955
5952 * The namespace cleanup forced me to make a FlexCompleter class
5956 * The namespace cleanup forced me to make a FlexCompleter class
5953 which is nothing but a ripoff of rlcompleter, but with selectable
5957 which is nothing but a ripoff of rlcompleter, but with selectable
5954 namespace (rlcompleter only works in __main__.__dict__). I'll try
5958 namespace (rlcompleter only works in __main__.__dict__). I'll try
5955 to submit a note to the authors to see if this change can be
5959 to submit a note to the authors to see if this change can be
5956 incorporated in future rlcompleter releases (Dec.6: done)
5960 incorporated in future rlcompleter releases (Dec.6: done)
5957
5961
5958 * More fixes to namespace handling. It was a mess! Now all
5962 * More fixes to namespace handling. It was a mess! Now all
5959 explicit references to __main__.__dict__ are gone (except when
5963 explicit references to __main__.__dict__ are gone (except when
5960 really needed) and everything is handled through the namespace
5964 really needed) and everything is handled through the namespace
5961 dicts in the IPython instance. We seem to be getting somewhere
5965 dicts in the IPython instance. We seem to be getting somewhere
5962 with this, finally...
5966 with this, finally...
5963
5967
5964 * Small documentation updates.
5968 * Small documentation updates.
5965
5969
5966 * Created the Extensions directory under IPython (with an
5970 * Created the Extensions directory under IPython (with an
5967 __init__.py). Put the PhysicalQ stuff there. This directory should
5971 __init__.py). Put the PhysicalQ stuff there. This directory should
5968 be used for all special-purpose extensions.
5972 be used for all special-purpose extensions.
5969
5973
5970 * File renaming:
5974 * File renaming:
5971 ipythonlib --> ipmaker
5975 ipythonlib --> ipmaker
5972 ipplib --> iplib
5976 ipplib --> iplib
5973 This makes a bit more sense in terms of what these files actually do.
5977 This makes a bit more sense in terms of what these files actually do.
5974
5978
5975 * Moved all the classes and functions in ipythonlib to ipplib, so
5979 * Moved all the classes and functions in ipythonlib to ipplib, so
5976 now ipythonlib only has make_IPython(). This will ease up its
5980 now ipythonlib only has make_IPython(). This will ease up its
5977 splitting in smaller functional chunks later.
5981 splitting in smaller functional chunks later.
5978
5982
5979 * Cleaned up (done, I think) output of @whos. Better column
5983 * Cleaned up (done, I think) output of @whos. Better column
5980 formatting, and now shows str(var) for as much as it can, which is
5984 formatting, and now shows str(var) for as much as it can, which is
5981 typically what one gets with a 'print var'.
5985 typically what one gets with a 'print var'.
5982
5986
5983 2001-12-04 Fernando Perez <fperez@colorado.edu>
5987 2001-12-04 Fernando Perez <fperez@colorado.edu>
5984
5988
5985 * Fixed namespace problems. Now builtin/IPyhton/user names get
5989 * Fixed namespace problems. Now builtin/IPyhton/user names get
5986 properly reported in their namespace. Internal namespace handling
5990 properly reported in their namespace. Internal namespace handling
5987 is finally getting decent (not perfect yet, but much better than
5991 is finally getting decent (not perfect yet, but much better than
5988 the ad-hoc mess we had).
5992 the ad-hoc mess we had).
5989
5993
5990 * Removed -exit option. If people just want to run a python
5994 * Removed -exit option. If people just want to run a python
5991 script, that's what the normal interpreter is for. Less
5995 script, that's what the normal interpreter is for. Less
5992 unnecessary options, less chances for bugs.
5996 unnecessary options, less chances for bugs.
5993
5997
5994 * Added a crash handler which generates a complete post-mortem if
5998 * Added a crash handler which generates a complete post-mortem if
5995 IPython crashes. This will help a lot in tracking bugs down the
5999 IPython crashes. This will help a lot in tracking bugs down the
5996 road.
6000 road.
5997
6001
5998 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6002 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5999 which were boud to functions being reassigned would bypass the
6003 which were boud to functions being reassigned would bypass the
6000 logger, breaking the sync of _il with the prompt counter. This
6004 logger, breaking the sync of _il with the prompt counter. This
6001 would then crash IPython later when a new line was logged.
6005 would then crash IPython later when a new line was logged.
6002
6006
6003 2001-12-02 Fernando Perez <fperez@colorado.edu>
6007 2001-12-02 Fernando Perez <fperez@colorado.edu>
6004
6008
6005 * Made IPython a package. This means people don't have to clutter
6009 * Made IPython a package. This means people don't have to clutter
6006 their sys.path with yet another directory. Changed the INSTALL
6010 their sys.path with yet another directory. Changed the INSTALL
6007 file accordingly.
6011 file accordingly.
6008
6012
6009 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6013 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6010 sorts its output (so @who shows it sorted) and @whos formats the
6014 sorts its output (so @who shows it sorted) and @whos formats the
6011 table according to the width of the first column. Nicer, easier to
6015 table according to the width of the first column. Nicer, easier to
6012 read. Todo: write a generic table_format() which takes a list of
6016 read. Todo: write a generic table_format() which takes a list of
6013 lists and prints it nicely formatted, with optional row/column
6017 lists and prints it nicely formatted, with optional row/column
6014 separators and proper padding and justification.
6018 separators and proper padding and justification.
6015
6019
6016 * Released 0.1.20
6020 * Released 0.1.20
6017
6021
6018 * Fixed bug in @log which would reverse the inputcache list (a
6022 * Fixed bug in @log which would reverse the inputcache list (a
6019 copy operation was missing).
6023 copy operation was missing).
6020
6024
6021 * Code cleanup. @config was changed to use page(). Better, since
6025 * Code cleanup. @config was changed to use page(). Better, since
6022 its output is always quite long.
6026 its output is always quite long.
6023
6027
6024 * Itpl is back as a dependency. I was having too many problems
6028 * Itpl is back as a dependency. I was having too many problems
6025 getting the parametric aliases to work reliably, and it's just
6029 getting the parametric aliases to work reliably, and it's just
6026 easier to code weird string operations with it than playing %()s
6030 easier to code weird string operations with it than playing %()s
6027 games. It's only ~6k, so I don't think it's too big a deal.
6031 games. It's only ~6k, so I don't think it's too big a deal.
6028
6032
6029 * Found (and fixed) a very nasty bug with history. !lines weren't
6033 * Found (and fixed) a very nasty bug with history. !lines weren't
6030 getting cached, and the out of sync caches would crash
6034 getting cached, and the out of sync caches would crash
6031 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6035 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6032 division of labor a bit better. Bug fixed, cleaner structure.
6036 division of labor a bit better. Bug fixed, cleaner structure.
6033
6037
6034 2001-12-01 Fernando Perez <fperez@colorado.edu>
6038 2001-12-01 Fernando Perez <fperez@colorado.edu>
6035
6039
6036 * Released 0.1.19
6040 * Released 0.1.19
6037
6041
6038 * Added option -n to @hist to prevent line number printing. Much
6042 * Added option -n to @hist to prevent line number printing. Much
6039 easier to copy/paste code this way.
6043 easier to copy/paste code this way.
6040
6044
6041 * Created global _il to hold the input list. Allows easy
6045 * Created global _il to hold the input list. Allows easy
6042 re-execution of blocks of code by slicing it (inspired by Janko's
6046 re-execution of blocks of code by slicing it (inspired by Janko's
6043 comment on 'macros').
6047 comment on 'macros').
6044
6048
6045 * Small fixes and doc updates.
6049 * Small fixes and doc updates.
6046
6050
6047 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6051 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6048 much too fragile with automagic. Handles properly multi-line
6052 much too fragile with automagic. Handles properly multi-line
6049 statements and takes parameters.
6053 statements and takes parameters.
6050
6054
6051 2001-11-30 Fernando Perez <fperez@colorado.edu>
6055 2001-11-30 Fernando Perez <fperez@colorado.edu>
6052
6056
6053 * Version 0.1.18 released.
6057 * Version 0.1.18 released.
6054
6058
6055 * Fixed nasty namespace bug in initial module imports.
6059 * Fixed nasty namespace bug in initial module imports.
6056
6060
6057 * Added copyright/license notes to all code files (except
6061 * Added copyright/license notes to all code files (except
6058 DPyGetOpt). For the time being, LGPL. That could change.
6062 DPyGetOpt). For the time being, LGPL. That could change.
6059
6063
6060 * Rewrote a much nicer README, updated INSTALL, cleaned up
6064 * Rewrote a much nicer README, updated INSTALL, cleaned up
6061 ipythonrc-* samples.
6065 ipythonrc-* samples.
6062
6066
6063 * Overall code/documentation cleanup. Basically ready for
6067 * Overall code/documentation cleanup. Basically ready for
6064 release. Only remaining thing: licence decision (LGPL?).
6068 release. Only remaining thing: licence decision (LGPL?).
6065
6069
6066 * Converted load_config to a class, ConfigLoader. Now recursion
6070 * Converted load_config to a class, ConfigLoader. Now recursion
6067 control is better organized. Doesn't include the same file twice.
6071 control is better organized. Doesn't include the same file twice.
6068
6072
6069 2001-11-29 Fernando Perez <fperez@colorado.edu>
6073 2001-11-29 Fernando Perez <fperez@colorado.edu>
6070
6074
6071 * Got input history working. Changed output history variables from
6075 * Got input history working. Changed output history variables from
6072 _p to _o so that _i is for input and _o for output. Just cleaner
6076 _p to _o so that _i is for input and _o for output. Just cleaner
6073 convention.
6077 convention.
6074
6078
6075 * Implemented parametric aliases. This pretty much allows the
6079 * Implemented parametric aliases. This pretty much allows the
6076 alias system to offer full-blown shell convenience, I think.
6080 alias system to offer full-blown shell convenience, I think.
6077
6081
6078 * Version 0.1.17 released, 0.1.18 opened.
6082 * Version 0.1.17 released, 0.1.18 opened.
6079
6083
6080 * dot_ipython/ipythonrc (alias): added documentation.
6084 * dot_ipython/ipythonrc (alias): added documentation.
6081 (xcolor): Fixed small bug (xcolors -> xcolor)
6085 (xcolor): Fixed small bug (xcolors -> xcolor)
6082
6086
6083 * Changed the alias system. Now alias is a magic command to define
6087 * Changed the alias system. Now alias is a magic command to define
6084 aliases just like the shell. Rationale: the builtin magics should
6088 aliases just like the shell. Rationale: the builtin magics should
6085 be there for things deeply connected to IPython's
6089 be there for things deeply connected to IPython's
6086 architecture. And this is a much lighter system for what I think
6090 architecture. And this is a much lighter system for what I think
6087 is the really important feature: allowing users to define quickly
6091 is the really important feature: allowing users to define quickly
6088 magics that will do shell things for them, so they can customize
6092 magics that will do shell things for them, so they can customize
6089 IPython easily to match their work habits. If someone is really
6093 IPython easily to match their work habits. If someone is really
6090 desperate to have another name for a builtin alias, they can
6094 desperate to have another name for a builtin alias, they can
6091 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6095 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6092 works.
6096 works.
6093
6097
6094 2001-11-28 Fernando Perez <fperez@colorado.edu>
6098 2001-11-28 Fernando Perez <fperez@colorado.edu>
6095
6099
6096 * Changed @file so that it opens the source file at the proper
6100 * Changed @file so that it opens the source file at the proper
6097 line. Since it uses less, if your EDITOR environment is
6101 line. Since it uses less, if your EDITOR environment is
6098 configured, typing v will immediately open your editor of choice
6102 configured, typing v will immediately open your editor of choice
6099 right at the line where the object is defined. Not as quick as
6103 right at the line where the object is defined. Not as quick as
6100 having a direct @edit command, but for all intents and purposes it
6104 having a direct @edit command, but for all intents and purposes it
6101 works. And I don't have to worry about writing @edit to deal with
6105 works. And I don't have to worry about writing @edit to deal with
6102 all the editors, less does that.
6106 all the editors, less does that.
6103
6107
6104 * Version 0.1.16 released, 0.1.17 opened.
6108 * Version 0.1.16 released, 0.1.17 opened.
6105
6109
6106 * Fixed some nasty bugs in the page/page_dumb combo that could
6110 * Fixed some nasty bugs in the page/page_dumb combo that could
6107 crash IPython.
6111 crash IPython.
6108
6112
6109 2001-11-27 Fernando Perez <fperez@colorado.edu>
6113 2001-11-27 Fernando Perez <fperez@colorado.edu>
6110
6114
6111 * Version 0.1.15 released, 0.1.16 opened.
6115 * Version 0.1.15 released, 0.1.16 opened.
6112
6116
6113 * Finally got ? and ?? to work for undefined things: now it's
6117 * Finally got ? and ?? to work for undefined things: now it's
6114 possible to type {}.get? and get information about the get method
6118 possible to type {}.get? and get information about the get method
6115 of dicts, or os.path? even if only os is defined (so technically
6119 of dicts, or os.path? even if only os is defined (so technically
6116 os.path isn't). Works at any level. For example, after import os,
6120 os.path isn't). Works at any level. For example, after import os,
6117 os?, os.path?, os.path.abspath? all work. This is great, took some
6121 os?, os.path?, os.path.abspath? all work. This is great, took some
6118 work in _ofind.
6122 work in _ofind.
6119
6123
6120 * Fixed more bugs with logging. The sanest way to do it was to add
6124 * Fixed more bugs with logging. The sanest way to do it was to add
6121 to @log a 'mode' parameter. Killed two in one shot (this mode
6125 to @log a 'mode' parameter. Killed two in one shot (this mode
6122 option was a request of Janko's). I think it's finally clean
6126 option was a request of Janko's). I think it's finally clean
6123 (famous last words).
6127 (famous last words).
6124
6128
6125 * Added a page_dumb() pager which does a decent job of paging on
6129 * Added a page_dumb() pager which does a decent job of paging on
6126 screen, if better things (like less) aren't available. One less
6130 screen, if better things (like less) aren't available. One less
6127 unix dependency (someday maybe somebody will port this to
6131 unix dependency (someday maybe somebody will port this to
6128 windows).
6132 windows).
6129
6133
6130 * Fixed problem in magic_log: would lock of logging out if log
6134 * Fixed problem in magic_log: would lock of logging out if log
6131 creation failed (because it would still think it had succeeded).
6135 creation failed (because it would still think it had succeeded).
6132
6136
6133 * Improved the page() function using curses to auto-detect screen
6137 * Improved the page() function using curses to auto-detect screen
6134 size. Now it can make a much better decision on whether to print
6138 size. Now it can make a much better decision on whether to print
6135 or page a string. Option screen_length was modified: a value 0
6139 or page a string. Option screen_length was modified: a value 0
6136 means auto-detect, and that's the default now.
6140 means auto-detect, and that's the default now.
6137
6141
6138 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6142 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6139 go out. I'll test it for a few days, then talk to Janko about
6143 go out. I'll test it for a few days, then talk to Janko about
6140 licences and announce it.
6144 licences and announce it.
6141
6145
6142 * Fixed the length of the auto-generated ---> prompt which appears
6146 * Fixed the length of the auto-generated ---> prompt which appears
6143 for auto-parens and auto-quotes. Getting this right isn't trivial,
6147 for auto-parens and auto-quotes. Getting this right isn't trivial,
6144 with all the color escapes, different prompt types and optional
6148 with all the color escapes, different prompt types and optional
6145 separators. But it seems to be working in all the combinations.
6149 separators. But it seems to be working in all the combinations.
6146
6150
6147 2001-11-26 Fernando Perez <fperez@colorado.edu>
6151 2001-11-26 Fernando Perez <fperez@colorado.edu>
6148
6152
6149 * Wrote a regexp filter to get option types from the option names
6153 * Wrote a regexp filter to get option types from the option names
6150 string. This eliminates the need to manually keep two duplicate
6154 string. This eliminates the need to manually keep two duplicate
6151 lists.
6155 lists.
6152
6156
6153 * Removed the unneeded check_option_names. Now options are handled
6157 * Removed the unneeded check_option_names. Now options are handled
6154 in a much saner manner and it's easy to visually check that things
6158 in a much saner manner and it's easy to visually check that things
6155 are ok.
6159 are ok.
6156
6160
6157 * Updated version numbers on all files I modified to carry a
6161 * Updated version numbers on all files I modified to carry a
6158 notice so Janko and Nathan have clear version markers.
6162 notice so Janko and Nathan have clear version markers.
6159
6163
6160 * Updated docstring for ultraTB with my changes. I should send
6164 * Updated docstring for ultraTB with my changes. I should send
6161 this to Nathan.
6165 this to Nathan.
6162
6166
6163 * Lots of small fixes. Ran everything through pychecker again.
6167 * Lots of small fixes. Ran everything through pychecker again.
6164
6168
6165 * Made loading of deep_reload an cmd line option. If it's not too
6169 * Made loading of deep_reload an cmd line option. If it's not too
6166 kosher, now people can just disable it. With -nodeep_reload it's
6170 kosher, now people can just disable it. With -nodeep_reload it's
6167 still available as dreload(), it just won't overwrite reload().
6171 still available as dreload(), it just won't overwrite reload().
6168
6172
6169 * Moved many options to the no| form (-opt and -noopt
6173 * Moved many options to the no| form (-opt and -noopt
6170 accepted). Cleaner.
6174 accepted). Cleaner.
6171
6175
6172 * Changed magic_log so that if called with no parameters, it uses
6176 * Changed magic_log so that if called with no parameters, it uses
6173 'rotate' mode. That way auto-generated logs aren't automatically
6177 'rotate' mode. That way auto-generated logs aren't automatically
6174 over-written. For normal logs, now a backup is made if it exists
6178 over-written. For normal logs, now a backup is made if it exists
6175 (only 1 level of backups). A new 'backup' mode was added to the
6179 (only 1 level of backups). A new 'backup' mode was added to the
6176 Logger class to support this. This was a request by Janko.
6180 Logger class to support this. This was a request by Janko.
6177
6181
6178 * Added @logoff/@logon to stop/restart an active log.
6182 * Added @logoff/@logon to stop/restart an active log.
6179
6183
6180 * Fixed a lot of bugs in log saving/replay. It was pretty
6184 * Fixed a lot of bugs in log saving/replay. It was pretty
6181 broken. Now special lines (!@,/) appear properly in the command
6185 broken. Now special lines (!@,/) appear properly in the command
6182 history after a log replay.
6186 history after a log replay.
6183
6187
6184 * Tried and failed to implement full session saving via pickle. My
6188 * Tried and failed to implement full session saving via pickle. My
6185 idea was to pickle __main__.__dict__, but modules can't be
6189 idea was to pickle __main__.__dict__, but modules can't be
6186 pickled. This would be a better alternative to replaying logs, but
6190 pickled. This would be a better alternative to replaying logs, but
6187 seems quite tricky to get to work. Changed -session to be called
6191 seems quite tricky to get to work. Changed -session to be called
6188 -logplay, which more accurately reflects what it does. And if we
6192 -logplay, which more accurately reflects what it does. And if we
6189 ever get real session saving working, -session is now available.
6193 ever get real session saving working, -session is now available.
6190
6194
6191 * Implemented color schemes for prompts also. As for tracebacks,
6195 * Implemented color schemes for prompts also. As for tracebacks,
6192 currently only NoColor and Linux are supported. But now the
6196 currently only NoColor and Linux are supported. But now the
6193 infrastructure is in place, based on a generic ColorScheme
6197 infrastructure is in place, based on a generic ColorScheme
6194 class. So writing and activating new schemes both for the prompts
6198 class. So writing and activating new schemes both for the prompts
6195 and the tracebacks should be straightforward.
6199 and the tracebacks should be straightforward.
6196
6200
6197 * Version 0.1.13 released, 0.1.14 opened.
6201 * Version 0.1.13 released, 0.1.14 opened.
6198
6202
6199 * Changed handling of options for output cache. Now counter is
6203 * Changed handling of options for output cache. Now counter is
6200 hardwired starting at 1 and one specifies the maximum number of
6204 hardwired starting at 1 and one specifies the maximum number of
6201 entries *in the outcache* (not the max prompt counter). This is
6205 entries *in the outcache* (not the max prompt counter). This is
6202 much better, since many statements won't increase the cache
6206 much better, since many statements won't increase the cache
6203 count. It also eliminated some confusing options, now there's only
6207 count. It also eliminated some confusing options, now there's only
6204 one: cache_size.
6208 one: cache_size.
6205
6209
6206 * Added 'alias' magic function and magic_alias option in the
6210 * Added 'alias' magic function and magic_alias option in the
6207 ipythonrc file. Now the user can easily define whatever names he
6211 ipythonrc file. Now the user can easily define whatever names he
6208 wants for the magic functions without having to play weird
6212 wants for the magic functions without having to play weird
6209 namespace games. This gives IPython a real shell-like feel.
6213 namespace games. This gives IPython a real shell-like feel.
6210
6214
6211 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6215 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6212 @ or not).
6216 @ or not).
6213
6217
6214 This was one of the last remaining 'visible' bugs (that I know
6218 This was one of the last remaining 'visible' bugs (that I know
6215 of). I think if I can clean up the session loading so it works
6219 of). I think if I can clean up the session loading so it works
6216 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6220 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6217 about licensing).
6221 about licensing).
6218
6222
6219 2001-11-25 Fernando Perez <fperez@colorado.edu>
6223 2001-11-25 Fernando Perez <fperez@colorado.edu>
6220
6224
6221 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6225 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6222 there's a cleaner distinction between what ? and ?? show.
6226 there's a cleaner distinction between what ? and ?? show.
6223
6227
6224 * Added screen_length option. Now the user can define his own
6228 * Added screen_length option. Now the user can define his own
6225 screen size for page() operations.
6229 screen size for page() operations.
6226
6230
6227 * Implemented magic shell-like functions with automatic code
6231 * Implemented magic shell-like functions with automatic code
6228 generation. Now adding another function is just a matter of adding
6232 generation. Now adding another function is just a matter of adding
6229 an entry to a dict, and the function is dynamically generated at
6233 an entry to a dict, and the function is dynamically generated at
6230 run-time. Python has some really cool features!
6234 run-time. Python has some really cool features!
6231
6235
6232 * Renamed many options to cleanup conventions a little. Now all
6236 * Renamed many options to cleanup conventions a little. Now all
6233 are lowercase, and only underscores where needed. Also in the code
6237 are lowercase, and only underscores where needed. Also in the code
6234 option name tables are clearer.
6238 option name tables are clearer.
6235
6239
6236 * Changed prompts a little. Now input is 'In [n]:' instead of
6240 * Changed prompts a little. Now input is 'In [n]:' instead of
6237 'In[n]:='. This allows it the numbers to be aligned with the
6241 'In[n]:='. This allows it the numbers to be aligned with the
6238 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6242 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6239 Python (it was a Mathematica thing). The '...' continuation prompt
6243 Python (it was a Mathematica thing). The '...' continuation prompt
6240 was also changed a little to align better.
6244 was also changed a little to align better.
6241
6245
6242 * Fixed bug when flushing output cache. Not all _p<n> variables
6246 * Fixed bug when flushing output cache. Not all _p<n> variables
6243 exist, so their deletion needs to be wrapped in a try:
6247 exist, so their deletion needs to be wrapped in a try:
6244
6248
6245 * Figured out how to properly use inspect.formatargspec() (it
6249 * Figured out how to properly use inspect.formatargspec() (it
6246 requires the args preceded by *). So I removed all the code from
6250 requires the args preceded by *). So I removed all the code from
6247 _get_pdef in Magic, which was just replicating that.
6251 _get_pdef in Magic, which was just replicating that.
6248
6252
6249 * Added test to prefilter to allow redefining magic function names
6253 * Added test to prefilter to allow redefining magic function names
6250 as variables. This is ok, since the @ form is always available,
6254 as variables. This is ok, since the @ form is always available,
6251 but whe should allow the user to define a variable called 'ls' if
6255 but whe should allow the user to define a variable called 'ls' if
6252 he needs it.
6256 he needs it.
6253
6257
6254 * Moved the ToDo information from README into a separate ToDo.
6258 * Moved the ToDo information from README into a separate ToDo.
6255
6259
6256 * General code cleanup and small bugfixes. I think it's close to a
6260 * General code cleanup and small bugfixes. I think it's close to a
6257 state where it can be released, obviously with a big 'beta'
6261 state where it can be released, obviously with a big 'beta'
6258 warning on it.
6262 warning on it.
6259
6263
6260 * Got the magic function split to work. Now all magics are defined
6264 * Got the magic function split to work. Now all magics are defined
6261 in a separate class. It just organizes things a bit, and now
6265 in a separate class. It just organizes things a bit, and now
6262 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6266 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6263 was too long).
6267 was too long).
6264
6268
6265 * Changed @clear to @reset to avoid potential confusions with
6269 * Changed @clear to @reset to avoid potential confusions with
6266 the shell command clear. Also renamed @cl to @clear, which does
6270 the shell command clear. Also renamed @cl to @clear, which does
6267 exactly what people expect it to from their shell experience.
6271 exactly what people expect it to from their shell experience.
6268
6272
6269 Added a check to the @reset command (since it's so
6273 Added a check to the @reset command (since it's so
6270 destructive, it's probably a good idea to ask for confirmation).
6274 destructive, it's probably a good idea to ask for confirmation).
6271 But now reset only works for full namespace resetting. Since the
6275 But now reset only works for full namespace resetting. Since the
6272 del keyword is already there for deleting a few specific
6276 del keyword is already there for deleting a few specific
6273 variables, I don't see the point of having a redundant magic
6277 variables, I don't see the point of having a redundant magic
6274 function for the same task.
6278 function for the same task.
6275
6279
6276 2001-11-24 Fernando Perez <fperez@colorado.edu>
6280 2001-11-24 Fernando Perez <fperez@colorado.edu>
6277
6281
6278 * Updated the builtin docs (esp. the ? ones).
6282 * Updated the builtin docs (esp. the ? ones).
6279
6283
6280 * Ran all the code through pychecker. Not terribly impressed with
6284 * Ran all the code through pychecker. Not terribly impressed with
6281 it: lots of spurious warnings and didn't really find anything of
6285 it: lots of spurious warnings and didn't really find anything of
6282 substance (just a few modules being imported and not used).
6286 substance (just a few modules being imported and not used).
6283
6287
6284 * Implemented the new ultraTB functionality into IPython. New
6288 * Implemented the new ultraTB functionality into IPython. New
6285 option: xcolors. This chooses color scheme. xmode now only selects
6289 option: xcolors. This chooses color scheme. xmode now only selects
6286 between Plain and Verbose. Better orthogonality.
6290 between Plain and Verbose. Better orthogonality.
6287
6291
6288 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6292 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6289 mode and color scheme for the exception handlers. Now it's
6293 mode and color scheme for the exception handlers. Now it's
6290 possible to have the verbose traceback with no coloring.
6294 possible to have the verbose traceback with no coloring.
6291
6295
6292 2001-11-23 Fernando Perez <fperez@colorado.edu>
6296 2001-11-23 Fernando Perez <fperez@colorado.edu>
6293
6297
6294 * Version 0.1.12 released, 0.1.13 opened.
6298 * Version 0.1.12 released, 0.1.13 opened.
6295
6299
6296 * Removed option to set auto-quote and auto-paren escapes by
6300 * Removed option to set auto-quote and auto-paren escapes by
6297 user. The chances of breaking valid syntax are just too high. If
6301 user. The chances of breaking valid syntax are just too high. If
6298 someone *really* wants, they can always dig into the code.
6302 someone *really* wants, they can always dig into the code.
6299
6303
6300 * Made prompt separators configurable.
6304 * Made prompt separators configurable.
6301
6305
6302 2001-11-22 Fernando Perez <fperez@colorado.edu>
6306 2001-11-22 Fernando Perez <fperez@colorado.edu>
6303
6307
6304 * Small bugfixes in many places.
6308 * Small bugfixes in many places.
6305
6309
6306 * Removed the MyCompleter class from ipplib. It seemed redundant
6310 * Removed the MyCompleter class from ipplib. It seemed redundant
6307 with the C-p,C-n history search functionality. Less code to
6311 with the C-p,C-n history search functionality. Less code to
6308 maintain.
6312 maintain.
6309
6313
6310 * Moved all the original ipython.py code into ipythonlib.py. Right
6314 * Moved all the original ipython.py code into ipythonlib.py. Right
6311 now it's just one big dump into a function called make_IPython, so
6315 now it's just one big dump into a function called make_IPython, so
6312 no real modularity has been gained. But at least it makes the
6316 no real modularity has been gained. But at least it makes the
6313 wrapper script tiny, and since ipythonlib is a module, it gets
6317 wrapper script tiny, and since ipythonlib is a module, it gets
6314 compiled and startup is much faster.
6318 compiled and startup is much faster.
6315
6319
6316 This is a reasobably 'deep' change, so we should test it for a
6320 This is a reasobably 'deep' change, so we should test it for a
6317 while without messing too much more with the code.
6321 while without messing too much more with the code.
6318
6322
6319 2001-11-21 Fernando Perez <fperez@colorado.edu>
6323 2001-11-21 Fernando Perez <fperez@colorado.edu>
6320
6324
6321 * Version 0.1.11 released, 0.1.12 opened for further work.
6325 * Version 0.1.11 released, 0.1.12 opened for further work.
6322
6326
6323 * Removed dependency on Itpl. It was only needed in one place. It
6327 * Removed dependency on Itpl. It was only needed in one place. It
6324 would be nice if this became part of python, though. It makes life
6328 would be nice if this became part of python, though. It makes life
6325 *a lot* easier in some cases.
6329 *a lot* easier in some cases.
6326
6330
6327 * Simplified the prefilter code a bit. Now all handlers are
6331 * Simplified the prefilter code a bit. Now all handlers are
6328 expected to explicitly return a value (at least a blank string).
6332 expected to explicitly return a value (at least a blank string).
6329
6333
6330 * Heavy edits in ipplib. Removed the help system altogether. Now
6334 * Heavy edits in ipplib. Removed the help system altogether. Now
6331 obj?/?? is used for inspecting objects, a magic @doc prints
6335 obj?/?? is used for inspecting objects, a magic @doc prints
6332 docstrings, and full-blown Python help is accessed via the 'help'
6336 docstrings, and full-blown Python help is accessed via the 'help'
6333 keyword. This cleans up a lot of code (less to maintain) and does
6337 keyword. This cleans up a lot of code (less to maintain) and does
6334 the job. Since 'help' is now a standard Python component, might as
6338 the job. Since 'help' is now a standard Python component, might as
6335 well use it and remove duplicate functionality.
6339 well use it and remove duplicate functionality.
6336
6340
6337 Also removed the option to use ipplib as a standalone program. By
6341 Also removed the option to use ipplib as a standalone program. By
6338 now it's too dependent on other parts of IPython to function alone.
6342 now it's too dependent on other parts of IPython to function alone.
6339
6343
6340 * Fixed bug in genutils.pager. It would crash if the pager was
6344 * Fixed bug in genutils.pager. It would crash if the pager was
6341 exited immediately after opening (broken pipe).
6345 exited immediately after opening (broken pipe).
6342
6346
6343 * Trimmed down the VerboseTB reporting a little. The header is
6347 * Trimmed down the VerboseTB reporting a little. The header is
6344 much shorter now and the repeated exception arguments at the end
6348 much shorter now and the repeated exception arguments at the end
6345 have been removed. For interactive use the old header seemed a bit
6349 have been removed. For interactive use the old header seemed a bit
6346 excessive.
6350 excessive.
6347
6351
6348 * Fixed small bug in output of @whos for variables with multi-word
6352 * Fixed small bug in output of @whos for variables with multi-word
6349 types (only first word was displayed).
6353 types (only first word was displayed).
6350
6354
6351 2001-11-17 Fernando Perez <fperez@colorado.edu>
6355 2001-11-17 Fernando Perez <fperez@colorado.edu>
6352
6356
6353 * Version 0.1.10 released, 0.1.11 opened for further work.
6357 * Version 0.1.10 released, 0.1.11 opened for further work.
6354
6358
6355 * Modified dirs and friends. dirs now *returns* the stack (not
6359 * Modified dirs and friends. dirs now *returns* the stack (not
6356 prints), so one can manipulate it as a variable. Convenient to
6360 prints), so one can manipulate it as a variable. Convenient to
6357 travel along many directories.
6361 travel along many directories.
6358
6362
6359 * Fixed bug in magic_pdef: would only work with functions with
6363 * Fixed bug in magic_pdef: would only work with functions with
6360 arguments with default values.
6364 arguments with default values.
6361
6365
6362 2001-11-14 Fernando Perez <fperez@colorado.edu>
6366 2001-11-14 Fernando Perez <fperez@colorado.edu>
6363
6367
6364 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6368 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6365 example with IPython. Various other minor fixes and cleanups.
6369 example with IPython. Various other minor fixes and cleanups.
6366
6370
6367 * Version 0.1.9 released, 0.1.10 opened for further work.
6371 * Version 0.1.9 released, 0.1.10 opened for further work.
6368
6372
6369 * Added sys.path to the list of directories searched in the
6373 * Added sys.path to the list of directories searched in the
6370 execfile= option. It used to be the current directory and the
6374 execfile= option. It used to be the current directory and the
6371 user's IPYTHONDIR only.
6375 user's IPYTHONDIR only.
6372
6376
6373 2001-11-13 Fernando Perez <fperez@colorado.edu>
6377 2001-11-13 Fernando Perez <fperez@colorado.edu>
6374
6378
6375 * Reinstated the raw_input/prefilter separation that Janko had
6379 * Reinstated the raw_input/prefilter separation that Janko had
6376 initially. This gives a more convenient setup for extending the
6380 initially. This gives a more convenient setup for extending the
6377 pre-processor from the outside: raw_input always gets a string,
6381 pre-processor from the outside: raw_input always gets a string,
6378 and prefilter has to process it. We can then redefine prefilter
6382 and prefilter has to process it. We can then redefine prefilter
6379 from the outside and implement extensions for special
6383 from the outside and implement extensions for special
6380 purposes.
6384 purposes.
6381
6385
6382 Today I got one for inputting PhysicalQuantity objects
6386 Today I got one for inputting PhysicalQuantity objects
6383 (from Scientific) without needing any function calls at
6387 (from Scientific) without needing any function calls at
6384 all. Extremely convenient, and it's all done as a user-level
6388 all. Extremely convenient, and it's all done as a user-level
6385 extension (no IPython code was touched). Now instead of:
6389 extension (no IPython code was touched). Now instead of:
6386 a = PhysicalQuantity(4.2,'m/s**2')
6390 a = PhysicalQuantity(4.2,'m/s**2')
6387 one can simply say
6391 one can simply say
6388 a = 4.2 m/s**2
6392 a = 4.2 m/s**2
6389 or even
6393 or even
6390 a = 4.2 m/s^2
6394 a = 4.2 m/s^2
6391
6395
6392 I use this, but it's also a proof of concept: IPython really is
6396 I use this, but it's also a proof of concept: IPython really is
6393 fully user-extensible, even at the level of the parsing of the
6397 fully user-extensible, even at the level of the parsing of the
6394 command line. It's not trivial, but it's perfectly doable.
6398 command line. It's not trivial, but it's perfectly doable.
6395
6399
6396 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6400 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6397 the problem of modules being loaded in the inverse order in which
6401 the problem of modules being loaded in the inverse order in which
6398 they were defined in
6402 they were defined in
6399
6403
6400 * Version 0.1.8 released, 0.1.9 opened for further work.
6404 * Version 0.1.8 released, 0.1.9 opened for further work.
6401
6405
6402 * Added magics pdef, source and file. They respectively show the
6406 * Added magics pdef, source and file. They respectively show the
6403 definition line ('prototype' in C), source code and full python
6407 definition line ('prototype' in C), source code and full python
6404 file for any callable object. The object inspector oinfo uses
6408 file for any callable object. The object inspector oinfo uses
6405 these to show the same information.
6409 these to show the same information.
6406
6410
6407 * Version 0.1.7 released, 0.1.8 opened for further work.
6411 * Version 0.1.7 released, 0.1.8 opened for further work.
6408
6412
6409 * Separated all the magic functions into a class called Magic. The
6413 * Separated all the magic functions into a class called Magic. The
6410 InteractiveShell class was becoming too big for Xemacs to handle
6414 InteractiveShell class was becoming too big for Xemacs to handle
6411 (de-indenting a line would lock it up for 10 seconds while it
6415 (de-indenting a line would lock it up for 10 seconds while it
6412 backtracked on the whole class!)
6416 backtracked on the whole class!)
6413
6417
6414 FIXME: didn't work. It can be done, but right now namespaces are
6418 FIXME: didn't work. It can be done, but right now namespaces are
6415 all messed up. Do it later (reverted it for now, so at least
6419 all messed up. Do it later (reverted it for now, so at least
6416 everything works as before).
6420 everything works as before).
6417
6421
6418 * Got the object introspection system (magic_oinfo) working! I
6422 * Got the object introspection system (magic_oinfo) working! I
6419 think this is pretty much ready for release to Janko, so he can
6423 think this is pretty much ready for release to Janko, so he can
6420 test it for a while and then announce it. Pretty much 100% of what
6424 test it for a while and then announce it. Pretty much 100% of what
6421 I wanted for the 'phase 1' release is ready. Happy, tired.
6425 I wanted for the 'phase 1' release is ready. Happy, tired.
6422
6426
6423 2001-11-12 Fernando Perez <fperez@colorado.edu>
6427 2001-11-12 Fernando Perez <fperez@colorado.edu>
6424
6428
6425 * Version 0.1.6 released, 0.1.7 opened for further work.
6429 * Version 0.1.6 released, 0.1.7 opened for further work.
6426
6430
6427 * Fixed bug in printing: it used to test for truth before
6431 * Fixed bug in printing: it used to test for truth before
6428 printing, so 0 wouldn't print. Now checks for None.
6432 printing, so 0 wouldn't print. Now checks for None.
6429
6433
6430 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6434 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6431 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6435 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6432 reaches by hand into the outputcache. Think of a better way to do
6436 reaches by hand into the outputcache. Think of a better way to do
6433 this later.
6437 this later.
6434
6438
6435 * Various small fixes thanks to Nathan's comments.
6439 * Various small fixes thanks to Nathan's comments.
6436
6440
6437 * Changed magic_pprint to magic_Pprint. This way it doesn't
6441 * Changed magic_pprint to magic_Pprint. This way it doesn't
6438 collide with pprint() and the name is consistent with the command
6442 collide with pprint() and the name is consistent with the command
6439 line option.
6443 line option.
6440
6444
6441 * Changed prompt counter behavior to be fully like
6445 * Changed prompt counter behavior to be fully like
6442 Mathematica's. That is, even input that doesn't return a result
6446 Mathematica's. That is, even input that doesn't return a result
6443 raises the prompt counter. The old behavior was kind of confusing
6447 raises the prompt counter. The old behavior was kind of confusing
6444 (getting the same prompt number several times if the operation
6448 (getting the same prompt number several times if the operation
6445 didn't return a result).
6449 didn't return a result).
6446
6450
6447 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6451 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6448
6452
6449 * Fixed -Classic mode (wasn't working anymore).
6453 * Fixed -Classic mode (wasn't working anymore).
6450
6454
6451 * Added colored prompts using Nathan's new code. Colors are
6455 * Added colored prompts using Nathan's new code. Colors are
6452 currently hardwired, they can be user-configurable. For
6456 currently hardwired, they can be user-configurable. For
6453 developers, they can be chosen in file ipythonlib.py, at the
6457 developers, they can be chosen in file ipythonlib.py, at the
6454 beginning of the CachedOutput class def.
6458 beginning of the CachedOutput class def.
6455
6459
6456 2001-11-11 Fernando Perez <fperez@colorado.edu>
6460 2001-11-11 Fernando Perez <fperez@colorado.edu>
6457
6461
6458 * Version 0.1.5 released, 0.1.6 opened for further work.
6462 * Version 0.1.5 released, 0.1.6 opened for further work.
6459
6463
6460 * Changed magic_env to *return* the environment as a dict (not to
6464 * Changed magic_env to *return* the environment as a dict (not to
6461 print it). This way it prints, but it can also be processed.
6465 print it). This way it prints, but it can also be processed.
6462
6466
6463 * Added Verbose exception reporting to interactive
6467 * Added Verbose exception reporting to interactive
6464 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6468 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6465 traceback. Had to make some changes to the ultraTB file. This is
6469 traceback. Had to make some changes to the ultraTB file. This is
6466 probably the last 'big' thing in my mental todo list. This ties
6470 probably the last 'big' thing in my mental todo list. This ties
6467 in with the next entry:
6471 in with the next entry:
6468
6472
6469 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6473 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6470 has to specify is Plain, Color or Verbose for all exception
6474 has to specify is Plain, Color or Verbose for all exception
6471 handling.
6475 handling.
6472
6476
6473 * Removed ShellServices option. All this can really be done via
6477 * Removed ShellServices option. All this can really be done via
6474 the magic system. It's easier to extend, cleaner and has automatic
6478 the magic system. It's easier to extend, cleaner and has automatic
6475 namespace protection and documentation.
6479 namespace protection and documentation.
6476
6480
6477 2001-11-09 Fernando Perez <fperez@colorado.edu>
6481 2001-11-09 Fernando Perez <fperez@colorado.edu>
6478
6482
6479 * Fixed bug in output cache flushing (missing parameter to
6483 * Fixed bug in output cache flushing (missing parameter to
6480 __init__). Other small bugs fixed (found using pychecker).
6484 __init__). Other small bugs fixed (found using pychecker).
6481
6485
6482 * Version 0.1.4 opened for bugfixing.
6486 * Version 0.1.4 opened for bugfixing.
6483
6487
6484 2001-11-07 Fernando Perez <fperez@colorado.edu>
6488 2001-11-07 Fernando Perez <fperez@colorado.edu>
6485
6489
6486 * Version 0.1.3 released, mainly because of the raw_input bug.
6490 * Version 0.1.3 released, mainly because of the raw_input bug.
6487
6491
6488 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6492 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6489 and when testing for whether things were callable, a call could
6493 and when testing for whether things were callable, a call could
6490 actually be made to certain functions. They would get called again
6494 actually be made to certain functions. They would get called again
6491 once 'really' executed, with a resulting double call. A disaster
6495 once 'really' executed, with a resulting double call. A disaster
6492 in many cases (list.reverse() would never work!).
6496 in many cases (list.reverse() would never work!).
6493
6497
6494 * Removed prefilter() function, moved its code to raw_input (which
6498 * Removed prefilter() function, moved its code to raw_input (which
6495 after all was just a near-empty caller for prefilter). This saves
6499 after all was just a near-empty caller for prefilter). This saves
6496 a function call on every prompt, and simplifies the class a tiny bit.
6500 a function call on every prompt, and simplifies the class a tiny bit.
6497
6501
6498 * Fix _ip to __ip name in magic example file.
6502 * Fix _ip to __ip name in magic example file.
6499
6503
6500 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6504 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6501 work with non-gnu versions of tar.
6505 work with non-gnu versions of tar.
6502
6506
6503 2001-11-06 Fernando Perez <fperez@colorado.edu>
6507 2001-11-06 Fernando Perez <fperez@colorado.edu>
6504
6508
6505 * Version 0.1.2. Just to keep track of the recent changes.
6509 * Version 0.1.2. Just to keep track of the recent changes.
6506
6510
6507 * Fixed nasty bug in output prompt routine. It used to check 'if
6511 * Fixed nasty bug in output prompt routine. It used to check 'if
6508 arg != None...'. Problem is, this fails if arg implements a
6512 arg != None...'. Problem is, this fails if arg implements a
6509 special comparison (__cmp__) which disallows comparing to
6513 special comparison (__cmp__) which disallows comparing to
6510 None. Found it when trying to use the PhysicalQuantity module from
6514 None. Found it when trying to use the PhysicalQuantity module from
6511 ScientificPython.
6515 ScientificPython.
6512
6516
6513 2001-11-05 Fernando Perez <fperez@colorado.edu>
6517 2001-11-05 Fernando Perez <fperez@colorado.edu>
6514
6518
6515 * Also added dirs. Now the pushd/popd/dirs family functions
6519 * Also added dirs. Now the pushd/popd/dirs family functions
6516 basically like the shell, with the added convenience of going home
6520 basically like the shell, with the added convenience of going home
6517 when called with no args.
6521 when called with no args.
6518
6522
6519 * pushd/popd slightly modified to mimic shell behavior more
6523 * pushd/popd slightly modified to mimic shell behavior more
6520 closely.
6524 closely.
6521
6525
6522 * Added env,pushd,popd from ShellServices as magic functions. I
6526 * Added env,pushd,popd from ShellServices as magic functions. I
6523 think the cleanest will be to port all desired functions from
6527 think the cleanest will be to port all desired functions from
6524 ShellServices as magics and remove ShellServices altogether. This
6528 ShellServices as magics and remove ShellServices altogether. This
6525 will provide a single, clean way of adding functionality
6529 will provide a single, clean way of adding functionality
6526 (shell-type or otherwise) to IP.
6530 (shell-type or otherwise) to IP.
6527
6531
6528 2001-11-04 Fernando Perez <fperez@colorado.edu>
6532 2001-11-04 Fernando Perez <fperez@colorado.edu>
6529
6533
6530 * Added .ipython/ directory to sys.path. This way users can keep
6534 * Added .ipython/ directory to sys.path. This way users can keep
6531 customizations there and access them via import.
6535 customizations there and access them via import.
6532
6536
6533 2001-11-03 Fernando Perez <fperez@colorado.edu>
6537 2001-11-03 Fernando Perez <fperez@colorado.edu>
6534
6538
6535 * Opened version 0.1.1 for new changes.
6539 * Opened version 0.1.1 for new changes.
6536
6540
6537 * Changed version number to 0.1.0: first 'public' release, sent to
6541 * Changed version number to 0.1.0: first 'public' release, sent to
6538 Nathan and Janko.
6542 Nathan and Janko.
6539
6543
6540 * Lots of small fixes and tweaks.
6544 * Lots of small fixes and tweaks.
6541
6545
6542 * Minor changes to whos format. Now strings are shown, snipped if
6546 * Minor changes to whos format. Now strings are shown, snipped if
6543 too long.
6547 too long.
6544
6548
6545 * Changed ShellServices to work on __main__ so they show up in @who
6549 * Changed ShellServices to work on __main__ so they show up in @who
6546
6550
6547 * Help also works with ? at the end of a line:
6551 * Help also works with ? at the end of a line:
6548 ?sin and sin?
6552 ?sin and sin?
6549 both produce the same effect. This is nice, as often I use the
6553 both produce the same effect. This is nice, as often I use the
6550 tab-complete to find the name of a method, but I used to then have
6554 tab-complete to find the name of a method, but I used to then have
6551 to go to the beginning of the line to put a ? if I wanted more
6555 to go to the beginning of the line to put a ? if I wanted more
6552 info. Now I can just add the ? and hit return. Convenient.
6556 info. Now I can just add the ? and hit return. Convenient.
6553
6557
6554 2001-11-02 Fernando Perez <fperez@colorado.edu>
6558 2001-11-02 Fernando Perez <fperez@colorado.edu>
6555
6559
6556 * Python version check (>=2.1) added.
6560 * Python version check (>=2.1) added.
6557
6561
6558 * Added LazyPython documentation. At this point the docs are quite
6562 * Added LazyPython documentation. At this point the docs are quite
6559 a mess. A cleanup is in order.
6563 a mess. A cleanup is in order.
6560
6564
6561 * Auto-installer created. For some bizarre reason, the zipfiles
6565 * Auto-installer created. For some bizarre reason, the zipfiles
6562 module isn't working on my system. So I made a tar version
6566 module isn't working on my system. So I made a tar version
6563 (hopefully the command line options in various systems won't kill
6567 (hopefully the command line options in various systems won't kill
6564 me).
6568 me).
6565
6569
6566 * Fixes to Struct in genutils. Now all dictionary-like methods are
6570 * Fixes to Struct in genutils. Now all dictionary-like methods are
6567 protected (reasonably).
6571 protected (reasonably).
6568
6572
6569 * Added pager function to genutils and changed ? to print usage
6573 * Added pager function to genutils and changed ? to print usage
6570 note through it (it was too long).
6574 note through it (it was too long).
6571
6575
6572 * Added the LazyPython functionality. Works great! I changed the
6576 * Added the LazyPython functionality. Works great! I changed the
6573 auto-quote escape to ';', it's on home row and next to '. But
6577 auto-quote escape to ';', it's on home row and next to '. But
6574 both auto-quote and auto-paren (still /) escapes are command-line
6578 both auto-quote and auto-paren (still /) escapes are command-line
6575 parameters.
6579 parameters.
6576
6580
6577
6581
6578 2001-11-01 Fernando Perez <fperez@colorado.edu>
6582 2001-11-01 Fernando Perez <fperez@colorado.edu>
6579
6583
6580 * Version changed to 0.0.7. Fairly large change: configuration now
6584 * Version changed to 0.0.7. Fairly large change: configuration now
6581 is all stored in a directory, by default .ipython. There, all
6585 is all stored in a directory, by default .ipython. There, all
6582 config files have normal looking names (not .names)
6586 config files have normal looking names (not .names)
6583
6587
6584 * Version 0.0.6 Released first to Lucas and Archie as a test
6588 * Version 0.0.6 Released first to Lucas and Archie as a test
6585 run. Since it's the first 'semi-public' release, change version to
6589 run. Since it's the first 'semi-public' release, change version to
6586 > 0.0.6 for any changes now.
6590 > 0.0.6 for any changes now.
6587
6591
6588 * Stuff I had put in the ipplib.py changelog:
6592 * Stuff I had put in the ipplib.py changelog:
6589
6593
6590 Changes to InteractiveShell:
6594 Changes to InteractiveShell:
6591
6595
6592 - Made the usage message a parameter.
6596 - Made the usage message a parameter.
6593
6597
6594 - Require the name of the shell variable to be given. It's a bit
6598 - Require the name of the shell variable to be given. It's a bit
6595 of a hack, but allows the name 'shell' not to be hardwired in the
6599 of a hack, but allows the name 'shell' not to be hardwired in the
6596 magic (@) handler, which is problematic b/c it requires
6600 magic (@) handler, which is problematic b/c it requires
6597 polluting the global namespace with 'shell'. This in turn is
6601 polluting the global namespace with 'shell'. This in turn is
6598 fragile: if a user redefines a variable called shell, things
6602 fragile: if a user redefines a variable called shell, things
6599 break.
6603 break.
6600
6604
6601 - magic @: all functions available through @ need to be defined
6605 - magic @: all functions available through @ need to be defined
6602 as magic_<name>, even though they can be called simply as
6606 as magic_<name>, even though they can be called simply as
6603 @<name>. This allows the special command @magic to gather
6607 @<name>. This allows the special command @magic to gather
6604 information automatically about all existing magic functions,
6608 information automatically about all existing magic functions,
6605 even if they are run-time user extensions, by parsing the shell
6609 even if they are run-time user extensions, by parsing the shell
6606 instance __dict__ looking for special magic_ names.
6610 instance __dict__ looking for special magic_ names.
6607
6611
6608 - mainloop: added *two* local namespace parameters. This allows
6612 - mainloop: added *two* local namespace parameters. This allows
6609 the class to differentiate between parameters which were there
6613 the class to differentiate between parameters which were there
6610 before and after command line initialization was processed. This
6614 before and after command line initialization was processed. This
6611 way, later @who can show things loaded at startup by the
6615 way, later @who can show things loaded at startup by the
6612 user. This trick was necessary to make session saving/reloading
6616 user. This trick was necessary to make session saving/reloading
6613 really work: ideally after saving/exiting/reloading a session,
6617 really work: ideally after saving/exiting/reloading a session,
6614 *everything* should look the same, including the output of @who. I
6618 *everything* should look the same, including the output of @who. I
6615 was only able to make this work with this double namespace
6619 was only able to make this work with this double namespace
6616 trick.
6620 trick.
6617
6621
6618 - added a header to the logfile which allows (almost) full
6622 - added a header to the logfile which allows (almost) full
6619 session restoring.
6623 session restoring.
6620
6624
6621 - prepend lines beginning with @ or !, with a and log
6625 - prepend lines beginning with @ or !, with a and log
6622 them. Why? !lines: may be useful to know what you did @lines:
6626 them. Why? !lines: may be useful to know what you did @lines:
6623 they may affect session state. So when restoring a session, at
6627 they may affect session state. So when restoring a session, at
6624 least inform the user of their presence. I couldn't quite get
6628 least inform the user of their presence. I couldn't quite get
6625 them to properly re-execute, but at least the user is warned.
6629 them to properly re-execute, but at least the user is warned.
6626
6630
6627 * Started ChangeLog.
6631 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now