##// END OF EJS Templates
use history_saving_wrapper to store/restore readline history
vivainio -
Show More
@@ -1,22 +1,15 b''
1 import pydb
1 import pydb
2 import IPython.ipapi
2 import IPython.ipapi
3 from IPython.genutils import arg_split
3 from IPython.genutils import arg_split
4 ip = IPython.ipapi.get()
4 ip = IPython.ipapi.get()
5
5
6 def call_pydb(self, args):
6 def call_pydb(self, args):
7 argl = arg_split(args)
7 argl = arg_split(args)
8 # print argl # dbg
8 # print argl # dbg
9 if ip.IP.has_readline:
9 ip.IP.history_saving_wrapper( lambda : pydb.runl(*argl) )()
10 ip.IP.savehist()
11 try:
12 pydb.runl(*argl)
13 finally:
14
15 if ip.IP.has_readline:
16 ip.IP.readline.read_history_file(self.shell.histfile)
17
10
18 ip.expose_magic("pydb",call_pydb)
11 ip.expose_magic("pydb",call_pydb)
19
12
20
13
21
14
22 No newline at end of file
15
@@ -1,2462 +1,2480 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 1859 2006-11-02 06:39:54Z vivainio $
9 $Id: iplib.py 1868 2006-11-02 15:29:10Z 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 OInspect,PyColorize,ultraTB
64 from IPython import 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 # dict of things NOT to alias (keywords, builtins and some magics)
358 # dict of things NOT to alias (keywords, builtins and some magics)
359 no_alias = {}
359 no_alias = {}
360 no_alias_magics = ['cd','popd','pushd','dhist','alias','unalias']
360 no_alias_magics = ['cd','popd','pushd','dhist','alias','unalias']
361 for key in keyword.kwlist + no_alias_magics:
361 for key in keyword.kwlist + no_alias_magics:
362 no_alias[key] = 1
362 no_alias[key] = 1
363 no_alias.update(__builtin__.__dict__)
363 no_alias.update(__builtin__.__dict__)
364 self.no_alias = no_alias
364 self.no_alias = no_alias
365
365
366 # make global variables for user access to these
366 # make global variables for user access to these
367 self.user_ns['_ih'] = self.input_hist
367 self.user_ns['_ih'] = self.input_hist
368 self.user_ns['_oh'] = self.output_hist
368 self.user_ns['_oh'] = self.output_hist
369 self.user_ns['_dh'] = self.dir_hist
369 self.user_ns['_dh'] = self.dir_hist
370
370
371 # user aliases to input and output histories
371 # user aliases to input and output histories
372 self.user_ns['In'] = self.input_hist
372 self.user_ns['In'] = self.input_hist
373 self.user_ns['Out'] = self.output_hist
373 self.user_ns['Out'] = self.output_hist
374
374
375 # Object variable to store code object waiting execution. This is
375 # Object variable to store code object waiting execution. This is
376 # used mainly by the multithreaded shells, but it can come in handy in
376 # used mainly by the multithreaded shells, but it can come in handy in
377 # other situations. No need to use a Queue here, since it's a single
377 # other situations. No need to use a Queue here, since it's a single
378 # item which gets cleared once run.
378 # item which gets cleared once run.
379 self.code_to_run = None
379 self.code_to_run = None
380
380
381 # escapes for automatic behavior on the command line
381 # escapes for automatic behavior on the command line
382 self.ESC_SHELL = '!'
382 self.ESC_SHELL = '!'
383 self.ESC_HELP = '?'
383 self.ESC_HELP = '?'
384 self.ESC_MAGIC = '%'
384 self.ESC_MAGIC = '%'
385 self.ESC_QUOTE = ','
385 self.ESC_QUOTE = ','
386 self.ESC_QUOTE2 = ';'
386 self.ESC_QUOTE2 = ';'
387 self.ESC_PAREN = '/'
387 self.ESC_PAREN = '/'
388
388
389 # And their associated handlers
389 # And their associated handlers
390 self.esc_handlers = {self.ESC_PAREN : self.handle_auto,
390 self.esc_handlers = {self.ESC_PAREN : self.handle_auto,
391 self.ESC_QUOTE : self.handle_auto,
391 self.ESC_QUOTE : self.handle_auto,
392 self.ESC_QUOTE2 : self.handle_auto,
392 self.ESC_QUOTE2 : self.handle_auto,
393 self.ESC_MAGIC : self.handle_magic,
393 self.ESC_MAGIC : self.handle_magic,
394 self.ESC_HELP : self.handle_help,
394 self.ESC_HELP : self.handle_help,
395 self.ESC_SHELL : self.handle_shell_escape,
395 self.ESC_SHELL : self.handle_shell_escape,
396 }
396 }
397
397
398 # class initializations
398 # class initializations
399 Magic.__init__(self,self)
399 Magic.__init__(self,self)
400
400
401 # Python source parser/formatter for syntax highlighting
401 # Python source parser/formatter for syntax highlighting
402 pyformat = PyColorize.Parser().format
402 pyformat = PyColorize.Parser().format
403 self.pycolorize = lambda src: pyformat(src,'str',self.rc['colors'])
403 self.pycolorize = lambda src: pyformat(src,'str',self.rc['colors'])
404
404
405 # hooks holds pointers used for user-side customizations
405 # hooks holds pointers used for user-side customizations
406 self.hooks = Struct()
406 self.hooks = Struct()
407
407
408 self.strdispatchers = {}
408 self.strdispatchers = {}
409
409
410 # Set all default hooks, defined in the IPython.hooks module.
410 # Set all default hooks, defined in the IPython.hooks module.
411 hooks = IPython.hooks
411 hooks = IPython.hooks
412 for hook_name in hooks.__all__:
412 for hook_name in hooks.__all__:
413 # default hooks have priority 100, i.e. low; user hooks should have 0-100 priority
413 # default hooks have priority 100, i.e. low; user hooks should have 0-100 priority
414 self.set_hook(hook_name,getattr(hooks,hook_name), 100)
414 self.set_hook(hook_name,getattr(hooks,hook_name), 100)
415 #print "bound hook",hook_name
415 #print "bound hook",hook_name
416
416
417 # Flag to mark unconditional exit
417 # Flag to mark unconditional exit
418 self.exit_now = False
418 self.exit_now = False
419
419
420 self.usage_min = """\
420 self.usage_min = """\
421 An enhanced console for Python.
421 An enhanced console for Python.
422 Some of its features are:
422 Some of its features are:
423 - Readline support if the readline library is present.
423 - Readline support if the readline library is present.
424 - Tab completion in the local namespace.
424 - Tab completion in the local namespace.
425 - Logging of input, see command-line options.
425 - Logging of input, see command-line options.
426 - System shell escape via ! , eg !ls.
426 - System shell escape via ! , eg !ls.
427 - Magic commands, starting with a % (like %ls, %pwd, %cd, etc.)
427 - Magic commands, starting with a % (like %ls, %pwd, %cd, etc.)
428 - Keeps track of locally defined variables via %who, %whos.
428 - Keeps track of locally defined variables via %who, %whos.
429 - Show object information with a ? eg ?x or x? (use ?? for more info).
429 - Show object information with a ? eg ?x or x? (use ?? for more info).
430 """
430 """
431 if usage: self.usage = usage
431 if usage: self.usage = usage
432 else: self.usage = self.usage_min
432 else: self.usage = self.usage_min
433
433
434 # Storage
434 # Storage
435 self.rc = rc # This will hold all configuration information
435 self.rc = rc # This will hold all configuration information
436 self.pager = 'less'
436 self.pager = 'less'
437 # temporary files used for various purposes. Deleted at exit.
437 # temporary files used for various purposes. Deleted at exit.
438 self.tempfiles = []
438 self.tempfiles = []
439
439
440 # Keep track of readline usage (later set by init_readline)
440 # Keep track of readline usage (later set by init_readline)
441 self.has_readline = False
441 self.has_readline = False
442
442
443 # template for logfile headers. It gets resolved at runtime by the
443 # template for logfile headers. It gets resolved at runtime by the
444 # logstart method.
444 # logstart method.
445 self.loghead_tpl = \
445 self.loghead_tpl = \
446 """#log# Automatic Logger file. *** THIS MUST BE THE FIRST LINE ***
446 """#log# Automatic Logger file. *** THIS MUST BE THE FIRST LINE ***
447 #log# DO NOT CHANGE THIS LINE OR THE TWO BELOW
447 #log# DO NOT CHANGE THIS LINE OR THE TWO BELOW
448 #log# opts = %s
448 #log# opts = %s
449 #log# args = %s
449 #log# args = %s
450 #log# It is safe to make manual edits below here.
450 #log# It is safe to make manual edits below here.
451 #log#-----------------------------------------------------------------------
451 #log#-----------------------------------------------------------------------
452 """
452 """
453 # for pushd/popd management
453 # for pushd/popd management
454 try:
454 try:
455 self.home_dir = get_home_dir()
455 self.home_dir = get_home_dir()
456 except HomeDirError,msg:
456 except HomeDirError,msg:
457 fatal(msg)
457 fatal(msg)
458
458
459 self.dir_stack = [os.getcwd().replace(self.home_dir,'~')]
459 self.dir_stack = [os.getcwd().replace(self.home_dir,'~')]
460
460
461 # Functions to call the underlying shell.
461 # Functions to call the underlying shell.
462
462
463 # utility to expand user variables via Itpl
463 # utility to expand user variables via Itpl
464 self.var_expand = lambda cmd: str(ItplNS(cmd.replace('#','\#'),
464 self.var_expand = lambda cmd: str(ItplNS(cmd.replace('#','\#'),
465 self.user_ns))
465 self.user_ns))
466 # The first is similar to os.system, but it doesn't return a value,
466 # The first is similar to os.system, but it doesn't return a value,
467 # and it allows interpolation of variables in the user's namespace.
467 # and it allows interpolation of variables in the user's namespace.
468 self.system = lambda cmd: shell(self.var_expand(cmd),
468 self.system = lambda cmd: shell(self.var_expand(cmd),
469 header='IPython system call: ',
469 header='IPython system call: ',
470 verbose=self.rc.system_verbose)
470 verbose=self.rc.system_verbose)
471 # These are for getoutput and getoutputerror:
471 # These are for getoutput and getoutputerror:
472 self.getoutput = lambda cmd: \
472 self.getoutput = lambda cmd: \
473 getoutput(self.var_expand(cmd),
473 getoutput(self.var_expand(cmd),
474 header='IPython system call: ',
474 header='IPython system call: ',
475 verbose=self.rc.system_verbose)
475 verbose=self.rc.system_verbose)
476 self.getoutputerror = lambda cmd: \
476 self.getoutputerror = lambda cmd: \
477 getoutputerror(self.var_expand(cmd),
477 getoutputerror(self.var_expand(cmd),
478 header='IPython system call: ',
478 header='IPython system call: ',
479 verbose=self.rc.system_verbose)
479 verbose=self.rc.system_verbose)
480
480
481 # RegExp for splitting line contents into pre-char//first
481 # RegExp for splitting line contents into pre-char//first
482 # word-method//rest. For clarity, each group in on one line.
482 # word-method//rest. For clarity, each group in on one line.
483
483
484 # WARNING: update the regexp if the above escapes are changed, as they
484 # WARNING: update the regexp if the above escapes are changed, as they
485 # are hardwired in.
485 # are hardwired in.
486
486
487 # Don't get carried away with trying to make the autocalling catch too
487 # Don't get carried away with trying to make the autocalling catch too
488 # much: it's better to be conservative rather than to trigger hidden
488 # much: it's better to be conservative rather than to trigger hidden
489 # evals() somewhere and end up causing side effects.
489 # evals() somewhere and end up causing side effects.
490
490
491 self.line_split = re.compile(r'^([\s*,;/])'
491 self.line_split = re.compile(r'^([\s*,;/])'
492 r'([\?\w\.]+\w*\s*)'
492 r'([\?\w\.]+\w*\s*)'
493 r'(\(?.*$)')
493 r'(\(?.*$)')
494
494
495 # Original re, keep around for a while in case changes break something
495 # Original re, keep around for a while in case changes break something
496 #self.line_split = re.compile(r'(^[\s*!\?%,/]?)'
496 #self.line_split = re.compile(r'(^[\s*!\?%,/]?)'
497 # r'(\s*[\?\w\.]+\w*\s*)'
497 # r'(\s*[\?\w\.]+\w*\s*)'
498 # r'(\(?.*$)')
498 # r'(\(?.*$)')
499
499
500 # RegExp to identify potential function names
500 # RegExp to identify potential function names
501 self.re_fun_name = re.compile(r'[a-zA-Z_]([a-zA-Z0-9_.]*) *$')
501 self.re_fun_name = re.compile(r'[a-zA-Z_]([a-zA-Z0-9_.]*) *$')
502
502
503 # RegExp to exclude strings with this start from autocalling. In
503 # RegExp to exclude strings with this start from autocalling. In
504 # particular, all binary operators should be excluded, so that if foo
504 # particular, all binary operators should be excluded, so that if foo
505 # is callable, foo OP bar doesn't become foo(OP bar), which is
505 # is callable, foo OP bar doesn't become foo(OP bar), which is
506 # invalid. The characters '!=()' don't need to be checked for, as the
506 # invalid. The characters '!=()' don't need to be checked for, as the
507 # _prefilter routine explicitely does so, to catch direct calls and
507 # _prefilter routine explicitely does so, to catch direct calls and
508 # rebindings of existing names.
508 # rebindings of existing names.
509
509
510 # Warning: the '-' HAS TO BE AT THE END of the first group, otherwise
510 # Warning: the '-' HAS TO BE AT THE END of the first group, otherwise
511 # it affects the rest of the group in square brackets.
511 # it affects the rest of the group in square brackets.
512 self.re_exclude_auto = re.compile(r'^[<>,&^\|\*/\+-]'
512 self.re_exclude_auto = re.compile(r'^[<>,&^\|\*/\+-]'
513 '|^is |^not |^in |^and |^or ')
513 '|^is |^not |^in |^and |^or ')
514
514
515 # try to catch also methods for stuff in lists/tuples/dicts: off
515 # try to catch also methods for stuff in lists/tuples/dicts: off
516 # (experimental). For this to work, the line_split regexp would need
516 # (experimental). For this to work, the line_split regexp would need
517 # to be modified so it wouldn't break things at '['. That line is
517 # to be modified so it wouldn't break things at '['. That line is
518 # nasty enough that I shouldn't change it until I can test it _well_.
518 # nasty enough that I shouldn't change it until I can test it _well_.
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 # keep track of where we started running (mainly for crash post-mortem)
521 # keep track of where we started running (mainly for crash post-mortem)
522 self.starting_dir = os.getcwd()
522 self.starting_dir = os.getcwd()
523
523
524 # Various switches which can be set
524 # Various switches which can be set
525 self.CACHELENGTH = 5000 # this is cheap, it's just text
525 self.CACHELENGTH = 5000 # this is cheap, it's just text
526 self.BANNER = "Python %(version)s on %(platform)s\n" % sys.__dict__
526 self.BANNER = "Python %(version)s on %(platform)s\n" % sys.__dict__
527 self.banner2 = banner2
527 self.banner2 = banner2
528
528
529 # TraceBack handlers:
529 # TraceBack handlers:
530
530
531 # Syntax error handler.
531 # Syntax error handler.
532 self.SyntaxTB = SyntaxTB(color_scheme='NoColor')
532 self.SyntaxTB = SyntaxTB(color_scheme='NoColor')
533
533
534 # The interactive one is initialized with an offset, meaning we always
534 # The interactive one is initialized with an offset, meaning we always
535 # want to remove the topmost item in the traceback, which is our own
535 # want to remove the topmost item in the traceback, which is our own
536 # internal code. Valid modes: ['Plain','Context','Verbose']
536 # internal code. Valid modes: ['Plain','Context','Verbose']
537 self.InteractiveTB = ultraTB.AutoFormattedTB(mode = 'Plain',
537 self.InteractiveTB = ultraTB.AutoFormattedTB(mode = 'Plain',
538 color_scheme='NoColor',
538 color_scheme='NoColor',
539 tb_offset = 1)
539 tb_offset = 1)
540
540
541 # IPython itself shouldn't crash. This will produce a detailed
541 # IPython itself shouldn't crash. This will produce a detailed
542 # post-mortem if it does. But we only install the crash handler for
542 # post-mortem if it does. But we only install the crash handler for
543 # non-threaded shells, the threaded ones use a normal verbose reporter
543 # non-threaded shells, the threaded ones use a normal verbose reporter
544 # and lose the crash handler. This is because exceptions in the main
544 # and lose the crash handler. This is because exceptions in the main
545 # thread (such as in GUI code) propagate directly to sys.excepthook,
545 # thread (such as in GUI code) propagate directly to sys.excepthook,
546 # and there's no point in printing crash dumps for every user exception.
546 # and there's no point in printing crash dumps for every user exception.
547 if self.isthreaded:
547 if self.isthreaded:
548 ipCrashHandler = ultraTB.FormattedTB()
548 ipCrashHandler = ultraTB.FormattedTB()
549 else:
549 else:
550 from IPython import CrashHandler
550 from IPython import CrashHandler
551 ipCrashHandler = CrashHandler.IPythonCrashHandler(self)
551 ipCrashHandler = CrashHandler.IPythonCrashHandler(self)
552 self.set_crash_handler(ipCrashHandler)
552 self.set_crash_handler(ipCrashHandler)
553
553
554 # and add any custom exception handlers the user may have specified
554 # and add any custom exception handlers the user may have specified
555 self.set_custom_exc(*custom_exceptions)
555 self.set_custom_exc(*custom_exceptions)
556
556
557 # indentation management
557 # indentation management
558 self.autoindent = False
558 self.autoindent = False
559 self.indent_current_nsp = 0
559 self.indent_current_nsp = 0
560
560
561 # Make some aliases automatically
561 # Make some aliases automatically
562 # Prepare list of shell aliases to auto-define
562 # Prepare list of shell aliases to auto-define
563 if os.name == 'posix':
563 if os.name == 'posix':
564 auto_alias = ('mkdir mkdir', 'rmdir rmdir',
564 auto_alias = ('mkdir mkdir', 'rmdir rmdir',
565 'mv mv -i','rm rm -i','cp cp -i',
565 'mv mv -i','rm rm -i','cp cp -i',
566 'cat cat','less less','clear clear',
566 'cat cat','less less','clear clear',
567 # a better ls
567 # a better ls
568 'ls ls -F',
568 'ls ls -F',
569 # long ls
569 # long ls
570 'll ls -lF')
570 'll ls -lF')
571 # Extra ls aliases with color, which need special treatment on BSD
571 # Extra ls aliases with color, which need special treatment on BSD
572 # variants
572 # variants
573 ls_extra = ( # color ls
573 ls_extra = ( # color ls
574 'lc ls -F -o --color',
574 'lc ls -F -o --color',
575 # ls normal files only
575 # ls normal files only
576 'lf ls -F -o --color %l | grep ^-',
576 'lf ls -F -o --color %l | grep ^-',
577 # ls symbolic links
577 # ls symbolic links
578 'lk ls -F -o --color %l | grep ^l',
578 'lk ls -F -o --color %l | grep ^l',
579 # directories or links to directories,
579 # directories or links to directories,
580 'ldir ls -F -o --color %l | grep /$',
580 'ldir ls -F -o --color %l | grep /$',
581 # things which are executable
581 # things which are executable
582 'lx ls -F -o --color %l | grep ^-..x',
582 'lx ls -F -o --color %l | grep ^-..x',
583 )
583 )
584 # The BSDs don't ship GNU ls, so they don't understand the
584 # The BSDs don't ship GNU ls, so they don't understand the
585 # --color switch out of the box
585 # --color switch out of the box
586 if 'bsd' in sys.platform:
586 if 'bsd' in sys.platform:
587 ls_extra = ( # ls normal files only
587 ls_extra = ( # ls normal files only
588 'lf ls -lF | grep ^-',
588 'lf ls -lF | grep ^-',
589 # ls symbolic links
589 # ls symbolic links
590 'lk ls -lF | grep ^l',
590 'lk ls -lF | grep ^l',
591 # directories or links to directories,
591 # directories or links to directories,
592 'ldir ls -lF | grep /$',
592 'ldir ls -lF | grep /$',
593 # things which are executable
593 # things which are executable
594 'lx ls -lF | grep ^-..x',
594 'lx ls -lF | grep ^-..x',
595 )
595 )
596 auto_alias = auto_alias + ls_extra
596 auto_alias = auto_alias + ls_extra
597 elif os.name in ['nt','dos']:
597 elif os.name in ['nt','dos']:
598 auto_alias = ('dir dir /on', 'ls dir /on',
598 auto_alias = ('dir dir /on', 'ls dir /on',
599 'ddir dir /ad /on', 'ldir dir /ad /on',
599 'ddir dir /ad /on', 'ldir dir /ad /on',
600 'mkdir mkdir','rmdir rmdir','echo echo',
600 'mkdir mkdir','rmdir rmdir','echo echo',
601 'ren ren','cls cls','copy copy')
601 'ren ren','cls cls','copy copy')
602 else:
602 else:
603 auto_alias = ()
603 auto_alias = ()
604 self.auto_alias = [s.split(None,1) for s in auto_alias]
604 self.auto_alias = [s.split(None,1) for s in auto_alias]
605 # Call the actual (public) initializer
605 # Call the actual (public) initializer
606 self.init_auto_alias()
606 self.init_auto_alias()
607
607
608 # Produce a public API instance
608 # Produce a public API instance
609 self.api = IPython.ipapi.IPApi(self)
609 self.api = IPython.ipapi.IPApi(self)
610
610
611 # track which builtins we add, so we can clean up later
611 # track which builtins we add, so we can clean up later
612 self.builtins_added = {}
612 self.builtins_added = {}
613 # This method will add the necessary builtins for operation, but
613 # This method will add the necessary builtins for operation, but
614 # tracking what it did via the builtins_added dict.
614 # tracking what it did via the builtins_added dict.
615 self.add_builtins()
615 self.add_builtins()
616
616
617 # end __init__
617 # end __init__
618
618
619 def pre_config_initialization(self):
619 def pre_config_initialization(self):
620 """Pre-configuration init method
620 """Pre-configuration init method
621
621
622 This is called before the configuration files are processed to
622 This is called before the configuration files are processed to
623 prepare the services the config files might need.
623 prepare the services the config files might need.
624
624
625 self.rc already has reasonable default values at this point.
625 self.rc already has reasonable default values at this point.
626 """
626 """
627 rc = self.rc
627 rc = self.rc
628
628
629 self.db = pickleshare.PickleShareDB(rc.ipythondir + "/db")
629 self.db = pickleshare.PickleShareDB(rc.ipythondir + "/db")
630
630
631 def post_config_initialization(self):
631 def post_config_initialization(self):
632 """Post configuration init method
632 """Post configuration init method
633
633
634 This is called after the configuration files have been processed to
634 This is called after the configuration files have been processed to
635 'finalize' the initialization."""
635 'finalize' the initialization."""
636
636
637 rc = self.rc
637 rc = self.rc
638
638
639 # Object inspector
639 # Object inspector
640 self.inspector = OInspect.Inspector(OInspect.InspectColors,
640 self.inspector = OInspect.Inspector(OInspect.InspectColors,
641 PyColorize.ANSICodeColors,
641 PyColorize.ANSICodeColors,
642 'NoColor',
642 'NoColor',
643 rc.object_info_string_level)
643 rc.object_info_string_level)
644
644
645 # Load readline proper
645 # Load readline proper
646 if rc.readline:
646 if rc.readline:
647 self.init_readline()
647 self.init_readline()
648
648
649 # local shortcut, this is used a LOT
649 # local shortcut, this is used a LOT
650 self.log = self.logger.log
650 self.log = self.logger.log
651
651
652 # Initialize cache, set in/out prompts and printing system
652 # Initialize cache, set in/out prompts and printing system
653 self.outputcache = CachedOutput(self,
653 self.outputcache = CachedOutput(self,
654 rc.cache_size,
654 rc.cache_size,
655 rc.pprint,
655 rc.pprint,
656 input_sep = rc.separate_in,
656 input_sep = rc.separate_in,
657 output_sep = rc.separate_out,
657 output_sep = rc.separate_out,
658 output_sep2 = rc.separate_out2,
658 output_sep2 = rc.separate_out2,
659 ps1 = rc.prompt_in1,
659 ps1 = rc.prompt_in1,
660 ps2 = rc.prompt_in2,
660 ps2 = rc.prompt_in2,
661 ps_out = rc.prompt_out,
661 ps_out = rc.prompt_out,
662 pad_left = rc.prompts_pad_left)
662 pad_left = rc.prompts_pad_left)
663
663
664 # user may have over-ridden the default print hook:
664 # user may have over-ridden the default print hook:
665 try:
665 try:
666 self.outputcache.__class__.display = self.hooks.display
666 self.outputcache.__class__.display = self.hooks.display
667 except AttributeError:
667 except AttributeError:
668 pass
668 pass
669
669
670 # I don't like assigning globally to sys, because it means when
670 # I don't like assigning globally to sys, because it means when
671 # embedding instances, each embedded instance overrides the previous
671 # embedding instances, each embedded instance overrides the previous
672 # choice. But sys.displayhook seems to be called internally by exec,
672 # choice. But sys.displayhook seems to be called internally by exec,
673 # so I don't see a way around it. We first save the original and then
673 # so I don't see a way around it. We first save the original and then
674 # overwrite it.
674 # overwrite it.
675 self.sys_displayhook = sys.displayhook
675 self.sys_displayhook = sys.displayhook
676 sys.displayhook = self.outputcache
676 sys.displayhook = self.outputcache
677
677
678 # Set user colors (don't do it in the constructor above so that it
678 # Set user colors (don't do it in the constructor above so that it
679 # doesn't crash if colors option is invalid)
679 # doesn't crash if colors option is invalid)
680 self.magic_colors(rc.colors)
680 self.magic_colors(rc.colors)
681
681
682 # Set calling of pdb on exceptions
682 # Set calling of pdb on exceptions
683 self.call_pdb = rc.pdb
683 self.call_pdb = rc.pdb
684
684
685 # Load user aliases
685 # Load user aliases
686 for alias in rc.alias:
686 for alias in rc.alias:
687 self.magic_alias(alias)
687 self.magic_alias(alias)
688 self.hooks.late_startup_hook()
688 self.hooks.late_startup_hook()
689
689
690 batchrun = False
690 batchrun = False
691 for batchfile in [path(arg) for arg in self.rc.args
691 for batchfile in [path(arg) for arg in self.rc.args
692 if arg.lower().endswith('.ipy')]:
692 if arg.lower().endswith('.ipy')]:
693 if not batchfile.isfile():
693 if not batchfile.isfile():
694 print "No such batch file:", batchfile
694 print "No such batch file:", batchfile
695 continue
695 continue
696 self.api.runlines(batchfile.text())
696 self.api.runlines(batchfile.text())
697 batchrun = True
697 batchrun = True
698 if batchrun:
698 if batchrun:
699 self.exit_now = True
699 self.exit_now = True
700
700
701 def add_builtins(self):
701 def add_builtins(self):
702 """Store ipython references into the builtin namespace.
702 """Store ipython references into the builtin namespace.
703
703
704 Some parts of ipython operate via builtins injected here, which hold a
704 Some parts of ipython operate via builtins injected here, which hold a
705 reference to IPython itself."""
705 reference to IPython itself."""
706
706
707 # TODO: deprecate all except _ip; 'jobs' should be installed
707 # TODO: deprecate all except _ip; 'jobs' should be installed
708 # by an extension and the rest are under _ip, ipalias is redundant
708 # by an extension and the rest are under _ip, ipalias is redundant
709 builtins_new = dict(__IPYTHON__ = self,
709 builtins_new = dict(__IPYTHON__ = self,
710 ip_set_hook = self.set_hook,
710 ip_set_hook = self.set_hook,
711 jobs = self.jobs,
711 jobs = self.jobs,
712 ipmagic = self.ipmagic,
712 ipmagic = self.ipmagic,
713 ipalias = self.ipalias,
713 ipalias = self.ipalias,
714 ipsystem = self.ipsystem,
714 ipsystem = self.ipsystem,
715 _ip = self.api
715 _ip = self.api
716 )
716 )
717 for biname,bival in builtins_new.items():
717 for biname,bival in builtins_new.items():
718 try:
718 try:
719 # store the orignal value so we can restore it
719 # store the orignal value so we can restore it
720 self.builtins_added[biname] = __builtin__.__dict__[biname]
720 self.builtins_added[biname] = __builtin__.__dict__[biname]
721 except KeyError:
721 except KeyError:
722 # or mark that it wasn't defined, and we'll just delete it at
722 # or mark that it wasn't defined, and we'll just delete it at
723 # cleanup
723 # cleanup
724 self.builtins_added[biname] = Undefined
724 self.builtins_added[biname] = Undefined
725 __builtin__.__dict__[biname] = bival
725 __builtin__.__dict__[biname] = bival
726
726
727 # Keep in the builtins a flag for when IPython is active. We set it
727 # Keep in the builtins a flag for when IPython is active. We set it
728 # with setdefault so that multiple nested IPythons don't clobber one
728 # with setdefault so that multiple nested IPythons don't clobber one
729 # another. Each will increase its value by one upon being activated,
729 # another. Each will increase its value by one upon being activated,
730 # which also gives us a way to determine the nesting level.
730 # which also gives us a way to determine the nesting level.
731 __builtin__.__dict__.setdefault('__IPYTHON__active',0)
731 __builtin__.__dict__.setdefault('__IPYTHON__active',0)
732
732
733 def clean_builtins(self):
733 def clean_builtins(self):
734 """Remove any builtins which might have been added by add_builtins, or
734 """Remove any builtins which might have been added by add_builtins, or
735 restore overwritten ones to their previous values."""
735 restore overwritten ones to their previous values."""
736 for biname,bival in self.builtins_added.items():
736 for biname,bival in self.builtins_added.items():
737 if bival is Undefined:
737 if bival is Undefined:
738 del __builtin__.__dict__[biname]
738 del __builtin__.__dict__[biname]
739 else:
739 else:
740 __builtin__.__dict__[biname] = bival
740 __builtin__.__dict__[biname] = bival
741 self.builtins_added.clear()
741 self.builtins_added.clear()
742
742
743 def set_hook(self,name,hook, priority = 50, str_key = None, re_key = None):
743 def set_hook(self,name,hook, priority = 50, str_key = None, re_key = None):
744 """set_hook(name,hook) -> sets an internal IPython hook.
744 """set_hook(name,hook) -> sets an internal IPython hook.
745
745
746 IPython exposes some of its internal API as user-modifiable hooks. By
746 IPython exposes some of its internal API as user-modifiable hooks. By
747 adding your function to one of these hooks, you can modify IPython's
747 adding your function to one of these hooks, you can modify IPython's
748 behavior to call at runtime your own routines."""
748 behavior to call at runtime your own routines."""
749
749
750 # At some point in the future, this should validate the hook before it
750 # At some point in the future, this should validate the hook before it
751 # accepts it. Probably at least check that the hook takes the number
751 # accepts it. Probably at least check that the hook takes the number
752 # of args it's supposed to.
752 # of args it's supposed to.
753
753
754 f = new.instancemethod(hook,self,self.__class__)
754 f = new.instancemethod(hook,self,self.__class__)
755
755
756 # check if the hook is for strdispatcher first
756 # check if the hook is for strdispatcher first
757 if str_key is not None:
757 if str_key is not None:
758 sdp = self.strdispatchers.get(name, StrDispatch())
758 sdp = self.strdispatchers.get(name, StrDispatch())
759 sdp.add_s(str_key, f, priority )
759 sdp.add_s(str_key, f, priority )
760 self.strdispatchers[name] = sdp
760 self.strdispatchers[name] = sdp
761 return
761 return
762 if re_key is not None:
762 if re_key is not None:
763 sdp = self.strdispatchers.get(name, StrDispatch())
763 sdp = self.strdispatchers.get(name, StrDispatch())
764 sdp.add_re(re.compile(re_key), f, priority )
764 sdp.add_re(re.compile(re_key), f, priority )
765 self.strdispatchers[name] = sdp
765 self.strdispatchers[name] = sdp
766 return
766 return
767
767
768 dp = getattr(self.hooks, name, None)
768 dp = getattr(self.hooks, name, None)
769 if name not in IPython.hooks.__all__:
769 if name not in IPython.hooks.__all__:
770 print "Warning! Hook '%s' is not one of %s" % (name, IPython.hooks.__all__ )
770 print "Warning! Hook '%s' is not one of %s" % (name, IPython.hooks.__all__ )
771 if not dp:
771 if not dp:
772 dp = IPython.hooks.CommandChainDispatcher()
772 dp = IPython.hooks.CommandChainDispatcher()
773
773
774 try:
774 try:
775 dp.add(f,priority)
775 dp.add(f,priority)
776 except AttributeError:
776 except AttributeError:
777 # it was not commandchain, plain old func - replace
777 # it was not commandchain, plain old func - replace
778 dp = f
778 dp = f
779
779
780 setattr(self.hooks,name, dp)
780 setattr(self.hooks,name, dp)
781
781
782
782
783 #setattr(self.hooks,name,new.instancemethod(hook,self,self.__class__))
783 #setattr(self.hooks,name,new.instancemethod(hook,self,self.__class__))
784
784
785 def set_crash_handler(self,crashHandler):
785 def set_crash_handler(self,crashHandler):
786 """Set the IPython crash handler.
786 """Set the IPython crash handler.
787
787
788 This must be a callable with a signature suitable for use as
788 This must be a callable with a signature suitable for use as
789 sys.excepthook."""
789 sys.excepthook."""
790
790
791 # Install the given crash handler as the Python exception hook
791 # Install the given crash handler as the Python exception hook
792 sys.excepthook = crashHandler
792 sys.excepthook = crashHandler
793
793
794 # The instance will store a pointer to this, so that runtime code
794 # The instance will store a pointer to this, so that runtime code
795 # (such as magics) can access it. This is because during the
795 # (such as magics) can access it. This is because during the
796 # read-eval loop, it gets temporarily overwritten (to deal with GUI
796 # read-eval loop, it gets temporarily overwritten (to deal with GUI
797 # frameworks).
797 # frameworks).
798 self.sys_excepthook = sys.excepthook
798 self.sys_excepthook = sys.excepthook
799
799
800
800
801 def set_custom_exc(self,exc_tuple,handler):
801 def set_custom_exc(self,exc_tuple,handler):
802 """set_custom_exc(exc_tuple,handler)
802 """set_custom_exc(exc_tuple,handler)
803
803
804 Set a custom exception handler, which will be called if any of the
804 Set a custom exception handler, which will be called if any of the
805 exceptions in exc_tuple occur in the mainloop (specifically, in the
805 exceptions in exc_tuple occur in the mainloop (specifically, in the
806 runcode() method.
806 runcode() method.
807
807
808 Inputs:
808 Inputs:
809
809
810 - exc_tuple: a *tuple* of valid exceptions to call the defined
810 - exc_tuple: a *tuple* of valid exceptions to call the defined
811 handler for. It is very important that you use a tuple, and NOT A
811 handler for. It is very important that you use a tuple, and NOT A
812 LIST here, because of the way Python's except statement works. If
812 LIST here, because of the way Python's except statement works. If
813 you only want to trap a single exception, use a singleton tuple:
813 you only want to trap a single exception, use a singleton tuple:
814
814
815 exc_tuple == (MyCustomException,)
815 exc_tuple == (MyCustomException,)
816
816
817 - handler: this must be defined as a function with the following
817 - handler: this must be defined as a function with the following
818 basic interface: def my_handler(self,etype,value,tb).
818 basic interface: def my_handler(self,etype,value,tb).
819
819
820 This will be made into an instance method (via new.instancemethod)
820 This will be made into an instance method (via new.instancemethod)
821 of IPython itself, and it will be called if any of the exceptions
821 of IPython itself, and it will be called if any of the exceptions
822 listed in the exc_tuple are caught. If the handler is None, an
822 listed in the exc_tuple are caught. If the handler is None, an
823 internal basic one is used, which just prints basic info.
823 internal basic one is used, which just prints basic info.
824
824
825 WARNING: by putting in your own exception handler into IPython's main
825 WARNING: by putting in your own exception handler into IPython's main
826 execution loop, you run a very good chance of nasty crashes. This
826 execution loop, you run a very good chance of nasty crashes. This
827 facility should only be used if you really know what you are doing."""
827 facility should only be used if you really know what you are doing."""
828
828
829 assert type(exc_tuple)==type(()) , \
829 assert type(exc_tuple)==type(()) , \
830 "The custom exceptions must be given AS A TUPLE."
830 "The custom exceptions must be given AS A TUPLE."
831
831
832 def dummy_handler(self,etype,value,tb):
832 def dummy_handler(self,etype,value,tb):
833 print '*** Simple custom exception handler ***'
833 print '*** Simple custom exception handler ***'
834 print 'Exception type :',etype
834 print 'Exception type :',etype
835 print 'Exception value:',value
835 print 'Exception value:',value
836 print 'Traceback :',tb
836 print 'Traceback :',tb
837 print 'Source code :','\n'.join(self.buffer)
837 print 'Source code :','\n'.join(self.buffer)
838
838
839 if handler is None: handler = dummy_handler
839 if handler is None: handler = dummy_handler
840
840
841 self.CustomTB = new.instancemethod(handler,self,self.__class__)
841 self.CustomTB = new.instancemethod(handler,self,self.__class__)
842 self.custom_exceptions = exc_tuple
842 self.custom_exceptions = exc_tuple
843
843
844 def set_custom_completer(self,completer,pos=0):
844 def set_custom_completer(self,completer,pos=0):
845 """set_custom_completer(completer,pos=0)
845 """set_custom_completer(completer,pos=0)
846
846
847 Adds a new custom completer function.
847 Adds a new custom completer function.
848
848
849 The position argument (defaults to 0) is the index in the completers
849 The position argument (defaults to 0) is the index in the completers
850 list where you want the completer to be inserted."""
850 list where you want the completer to be inserted."""
851
851
852 newcomp = new.instancemethod(completer,self.Completer,
852 newcomp = new.instancemethod(completer,self.Completer,
853 self.Completer.__class__)
853 self.Completer.__class__)
854 self.Completer.matchers.insert(pos,newcomp)
854 self.Completer.matchers.insert(pos,newcomp)
855
855
856 def _get_call_pdb(self):
856 def _get_call_pdb(self):
857 return self._call_pdb
857 return self._call_pdb
858
858
859 def _set_call_pdb(self,val):
859 def _set_call_pdb(self,val):
860
860
861 if val not in (0,1,False,True):
861 if val not in (0,1,False,True):
862 raise ValueError,'new call_pdb value must be boolean'
862 raise ValueError,'new call_pdb value must be boolean'
863
863
864 # store value in instance
864 # store value in instance
865 self._call_pdb = val
865 self._call_pdb = val
866
866
867 # notify the actual exception handlers
867 # notify the actual exception handlers
868 self.InteractiveTB.call_pdb = val
868 self.InteractiveTB.call_pdb = val
869 if self.isthreaded:
869 if self.isthreaded:
870 try:
870 try:
871 self.sys_excepthook.call_pdb = val
871 self.sys_excepthook.call_pdb = val
872 except:
872 except:
873 warn('Failed to activate pdb for threaded exception handler')
873 warn('Failed to activate pdb for threaded exception handler')
874
874
875 call_pdb = property(_get_call_pdb,_set_call_pdb,None,
875 call_pdb = property(_get_call_pdb,_set_call_pdb,None,
876 'Control auto-activation of pdb at exceptions')
876 'Control auto-activation of pdb at exceptions')
877
877
878
878
879 # These special functions get installed in the builtin namespace, to
879 # These special functions get installed in the builtin namespace, to
880 # provide programmatic (pure python) access to magics, aliases and system
880 # provide programmatic (pure python) access to magics, aliases and system
881 # calls. This is important for logging, user scripting, and more.
881 # calls. This is important for logging, user scripting, and more.
882
882
883 # We are basically exposing, via normal python functions, the three
883 # We are basically exposing, via normal python functions, the three
884 # mechanisms in which ipython offers special call modes (magics for
884 # mechanisms in which ipython offers special call modes (magics for
885 # internal control, aliases for direct system access via pre-selected
885 # internal control, aliases for direct system access via pre-selected
886 # names, and !cmd for calling arbitrary system commands).
886 # names, and !cmd for calling arbitrary system commands).
887
887
888 def ipmagic(self,arg_s):
888 def ipmagic(self,arg_s):
889 """Call a magic function by name.
889 """Call a magic function by name.
890
890
891 Input: a string containing the name of the magic function to call and any
891 Input: a string containing the name of the magic function to call and any
892 additional arguments to be passed to the magic.
892 additional arguments to be passed to the magic.
893
893
894 ipmagic('name -opt foo bar') is equivalent to typing at the ipython
894 ipmagic('name -opt foo bar') is equivalent to typing at the ipython
895 prompt:
895 prompt:
896
896
897 In[1]: %name -opt foo bar
897 In[1]: %name -opt foo bar
898
898
899 To call a magic without arguments, simply use ipmagic('name').
899 To call a magic without arguments, simply use ipmagic('name').
900
900
901 This provides a proper Python function to call IPython's magics in any
901 This provides a proper Python function to call IPython's magics in any
902 valid Python code you can type at the interpreter, including loops and
902 valid Python code you can type at the interpreter, including loops and
903 compound statements. It is added by IPython to the Python builtin
903 compound statements. It is added by IPython to the Python builtin
904 namespace upon initialization."""
904 namespace upon initialization."""
905
905
906 args = arg_s.split(' ',1)
906 args = arg_s.split(' ',1)
907 magic_name = args[0]
907 magic_name = args[0]
908 magic_name = magic_name.lstrip(self.ESC_MAGIC)
908 magic_name = magic_name.lstrip(self.ESC_MAGIC)
909
909
910 try:
910 try:
911 magic_args = args[1]
911 magic_args = args[1]
912 except IndexError:
912 except IndexError:
913 magic_args = ''
913 magic_args = ''
914 fn = getattr(self,'magic_'+magic_name,None)
914 fn = getattr(self,'magic_'+magic_name,None)
915 if fn is None:
915 if fn is None:
916 error("Magic function `%s` not found." % magic_name)
916 error("Magic function `%s` not found." % magic_name)
917 else:
917 else:
918 magic_args = self.var_expand(magic_args)
918 magic_args = self.var_expand(magic_args)
919 return fn(magic_args)
919 return fn(magic_args)
920
920
921 def ipalias(self,arg_s):
921 def ipalias(self,arg_s):
922 """Call an alias by name.
922 """Call an alias by name.
923
923
924 Input: a string containing the name of the alias to call and any
924 Input: a string containing the name of the alias to call and any
925 additional arguments to be passed to the magic.
925 additional arguments to be passed to the magic.
926
926
927 ipalias('name -opt foo bar') is equivalent to typing at the ipython
927 ipalias('name -opt foo bar') is equivalent to typing at the ipython
928 prompt:
928 prompt:
929
929
930 In[1]: name -opt foo bar
930 In[1]: name -opt foo bar
931
931
932 To call an alias without arguments, simply use ipalias('name').
932 To call an alias without arguments, simply use ipalias('name').
933
933
934 This provides a proper Python function to call IPython's aliases in any
934 This provides a proper Python function to call IPython's aliases in any
935 valid Python code you can type at the interpreter, including loops and
935 valid Python code you can type at the interpreter, including loops and
936 compound statements. It is added by IPython to the Python builtin
936 compound statements. It is added by IPython to the Python builtin
937 namespace upon initialization."""
937 namespace upon initialization."""
938
938
939 args = arg_s.split(' ',1)
939 args = arg_s.split(' ',1)
940 alias_name = args[0]
940 alias_name = args[0]
941 try:
941 try:
942 alias_args = args[1]
942 alias_args = args[1]
943 except IndexError:
943 except IndexError:
944 alias_args = ''
944 alias_args = ''
945 if alias_name in self.alias_table:
945 if alias_name in self.alias_table:
946 self.call_alias(alias_name,alias_args)
946 self.call_alias(alias_name,alias_args)
947 else:
947 else:
948 error("Alias `%s` not found." % alias_name)
948 error("Alias `%s` not found." % alias_name)
949
949
950 def ipsystem(self,arg_s):
950 def ipsystem(self,arg_s):
951 """Make a system call, using IPython."""
951 """Make a system call, using IPython."""
952
952
953 self.system(arg_s)
953 self.system(arg_s)
954
954
955 def complete(self,text):
955 def complete(self,text):
956 """Return a sorted list of all possible completions on text.
956 """Return a sorted list of all possible completions on text.
957
957
958 Inputs:
958 Inputs:
959
959
960 - text: a string of text to be completed on.
960 - text: a string of text to be completed on.
961
961
962 This is a wrapper around the completion mechanism, similar to what
962 This is a wrapper around the completion mechanism, similar to what
963 readline does at the command line when the TAB key is hit. By
963 readline does at the command line when the TAB key is hit. By
964 exposing it as a method, it can be used by other non-readline
964 exposing it as a method, it can be used by other non-readline
965 environments (such as GUIs) for text completion.
965 environments (such as GUIs) for text completion.
966
966
967 Simple usage example:
967 Simple usage example:
968
968
969 In [1]: x = 'hello'
969 In [1]: x = 'hello'
970
970
971 In [2]: __IP.complete('x.l')
971 In [2]: __IP.complete('x.l')
972 Out[2]: ['x.ljust', 'x.lower', 'x.lstrip']"""
972 Out[2]: ['x.ljust', 'x.lower', 'x.lstrip']"""
973
973
974 complete = self.Completer.complete
974 complete = self.Completer.complete
975 state = 0
975 state = 0
976 # use a dict so we get unique keys, since ipyhton's multiple
976 # use a dict so we get unique keys, since ipyhton's multiple
977 # completers can return duplicates.
977 # completers can return duplicates.
978 comps = {}
978 comps = {}
979 while True:
979 while True:
980 newcomp = complete(text,state)
980 newcomp = complete(text,state)
981 if newcomp is None:
981 if newcomp is None:
982 break
982 break
983 comps[newcomp] = 1
983 comps[newcomp] = 1
984 state += 1
984 state += 1
985 outcomps = comps.keys()
985 outcomps = comps.keys()
986 outcomps.sort()
986 outcomps.sort()
987 return outcomps
987 return outcomps
988
988
989 def set_completer_frame(self, frame=None):
989 def set_completer_frame(self, frame=None):
990 if frame:
990 if frame:
991 self.Completer.namespace = frame.f_locals
991 self.Completer.namespace = frame.f_locals
992 self.Completer.global_namespace = frame.f_globals
992 self.Completer.global_namespace = frame.f_globals
993 else:
993 else:
994 self.Completer.namespace = self.user_ns
994 self.Completer.namespace = self.user_ns
995 self.Completer.global_namespace = self.user_global_ns
995 self.Completer.global_namespace = self.user_global_ns
996
996
997 def init_auto_alias(self):
997 def init_auto_alias(self):
998 """Define some aliases automatically.
998 """Define some aliases automatically.
999
999
1000 These are ALL parameter-less aliases"""
1000 These are ALL parameter-less aliases"""
1001
1001
1002 for alias,cmd in self.auto_alias:
1002 for alias,cmd in self.auto_alias:
1003 self.alias_table[alias] = (0,cmd)
1003 self.alias_table[alias] = (0,cmd)
1004
1004
1005 def alias_table_validate(self,verbose=0):
1005 def alias_table_validate(self,verbose=0):
1006 """Update information about the alias table.
1006 """Update information about the alias table.
1007
1007
1008 In particular, make sure no Python keywords/builtins are in it."""
1008 In particular, make sure no Python keywords/builtins are in it."""
1009
1009
1010 no_alias = self.no_alias
1010 no_alias = self.no_alias
1011 for k in self.alias_table.keys():
1011 for k in self.alias_table.keys():
1012 if k in no_alias:
1012 if k in no_alias:
1013 del self.alias_table[k]
1013 del self.alias_table[k]
1014 if verbose:
1014 if verbose:
1015 print ("Deleting alias <%s>, it's a Python "
1015 print ("Deleting alias <%s>, it's a Python "
1016 "keyword or builtin." % k)
1016 "keyword or builtin." % k)
1017
1017
1018 def set_autoindent(self,value=None):
1018 def set_autoindent(self,value=None):
1019 """Set the autoindent flag, checking for readline support.
1019 """Set the autoindent flag, checking for readline support.
1020
1020
1021 If called with no arguments, it acts as a toggle."""
1021 If called with no arguments, it acts as a toggle."""
1022
1022
1023 if not self.has_readline:
1023 if not self.has_readline:
1024 if os.name == 'posix':
1024 if os.name == 'posix':
1025 warn("The auto-indent feature requires the readline library")
1025 warn("The auto-indent feature requires the readline library")
1026 self.autoindent = 0
1026 self.autoindent = 0
1027 return
1027 return
1028 if value is None:
1028 if value is None:
1029 self.autoindent = not self.autoindent
1029 self.autoindent = not self.autoindent
1030 else:
1030 else:
1031 self.autoindent = value
1031 self.autoindent = value
1032
1032
1033 def rc_set_toggle(self,rc_field,value=None):
1033 def rc_set_toggle(self,rc_field,value=None):
1034 """Set or toggle a field in IPython's rc config. structure.
1034 """Set or toggle a field in IPython's rc config. structure.
1035
1035
1036 If called with no arguments, it acts as a toggle.
1036 If called with no arguments, it acts as a toggle.
1037
1037
1038 If called with a non-existent field, the resulting AttributeError
1038 If called with a non-existent field, the resulting AttributeError
1039 exception will propagate out."""
1039 exception will propagate out."""
1040
1040
1041 rc_val = getattr(self.rc,rc_field)
1041 rc_val = getattr(self.rc,rc_field)
1042 if value is None:
1042 if value is None:
1043 value = not rc_val
1043 value = not rc_val
1044 setattr(self.rc,rc_field,value)
1044 setattr(self.rc,rc_field,value)
1045
1045
1046 def user_setup(self,ipythondir,rc_suffix,mode='install'):
1046 def user_setup(self,ipythondir,rc_suffix,mode='install'):
1047 """Install the user configuration directory.
1047 """Install the user configuration directory.
1048
1048
1049 Can be called when running for the first time or to upgrade the user's
1049 Can be called when running for the first time or to upgrade the user's
1050 .ipython/ directory with the mode parameter. Valid modes are 'install'
1050 .ipython/ directory with the mode parameter. Valid modes are 'install'
1051 and 'upgrade'."""
1051 and 'upgrade'."""
1052
1052
1053 def wait():
1053 def wait():
1054 try:
1054 try:
1055 raw_input("Please press <RETURN> to start IPython.")
1055 raw_input("Please press <RETURN> to start IPython.")
1056 except EOFError:
1056 except EOFError:
1057 print >> Term.cout
1057 print >> Term.cout
1058 print '*'*70
1058 print '*'*70
1059
1059
1060 cwd = os.getcwd() # remember where we started
1060 cwd = os.getcwd() # remember where we started
1061 glb = glob.glob
1061 glb = glob.glob
1062 print '*'*70
1062 print '*'*70
1063 if mode == 'install':
1063 if mode == 'install':
1064 print \
1064 print \
1065 """Welcome to IPython. I will try to create a personal configuration directory
1065 """Welcome to IPython. I will try to create a personal configuration directory
1066 where you can customize many aspects of IPython's functionality in:\n"""
1066 where you can customize many aspects of IPython's functionality in:\n"""
1067 else:
1067 else:
1068 print 'I am going to upgrade your configuration in:'
1068 print 'I am going to upgrade your configuration in:'
1069
1069
1070 print ipythondir
1070 print ipythondir
1071
1071
1072 rcdirend = os.path.join('IPython','UserConfig')
1072 rcdirend = os.path.join('IPython','UserConfig')
1073 cfg = lambda d: os.path.join(d,rcdirend)
1073 cfg = lambda d: os.path.join(d,rcdirend)
1074 try:
1074 try:
1075 rcdir = filter(os.path.isdir,map(cfg,sys.path))[0]
1075 rcdir = filter(os.path.isdir,map(cfg,sys.path))[0]
1076 except IOError:
1076 except IOError:
1077 warning = """
1077 warning = """
1078 Installation error. IPython's directory was not found.
1078 Installation error. IPython's directory was not found.
1079
1079
1080 Check the following:
1080 Check the following:
1081
1081
1082 The ipython/IPython directory should be in a directory belonging to your
1082 The ipython/IPython directory should be in a directory belonging to your
1083 PYTHONPATH environment variable (that is, it should be in a directory
1083 PYTHONPATH environment variable (that is, it should be in a directory
1084 belonging to sys.path). You can copy it explicitly there or just link to it.
1084 belonging to sys.path). You can copy it explicitly there or just link to it.
1085
1085
1086 IPython will proceed with builtin defaults.
1086 IPython will proceed with builtin defaults.
1087 """
1087 """
1088 warn(warning)
1088 warn(warning)
1089 wait()
1089 wait()
1090 return
1090 return
1091
1091
1092 if mode == 'install':
1092 if mode == 'install':
1093 try:
1093 try:
1094 shutil.copytree(rcdir,ipythondir)
1094 shutil.copytree(rcdir,ipythondir)
1095 os.chdir(ipythondir)
1095 os.chdir(ipythondir)
1096 rc_files = glb("ipythonrc*")
1096 rc_files = glb("ipythonrc*")
1097 for rc_file in rc_files:
1097 for rc_file in rc_files:
1098 os.rename(rc_file,rc_file+rc_suffix)
1098 os.rename(rc_file,rc_file+rc_suffix)
1099 except:
1099 except:
1100 warning = """
1100 warning = """
1101
1101
1102 There was a problem with the installation:
1102 There was a problem with the installation:
1103 %s
1103 %s
1104 Try to correct it or contact the developers if you think it's a bug.
1104 Try to correct it or contact the developers if you think it's a bug.
1105 IPython will proceed with builtin defaults.""" % sys.exc_info()[1]
1105 IPython will proceed with builtin defaults.""" % sys.exc_info()[1]
1106 warn(warning)
1106 warn(warning)
1107 wait()
1107 wait()
1108 return
1108 return
1109
1109
1110 elif mode == 'upgrade':
1110 elif mode == 'upgrade':
1111 try:
1111 try:
1112 os.chdir(ipythondir)
1112 os.chdir(ipythondir)
1113 except:
1113 except:
1114 print """
1114 print """
1115 Can not upgrade: changing to directory %s failed. Details:
1115 Can not upgrade: changing to directory %s failed. Details:
1116 %s
1116 %s
1117 """ % (ipythondir,sys.exc_info()[1])
1117 """ % (ipythondir,sys.exc_info()[1])
1118 wait()
1118 wait()
1119 return
1119 return
1120 else:
1120 else:
1121 sources = glb(os.path.join(rcdir,'[A-Za-z]*'))
1121 sources = glb(os.path.join(rcdir,'[A-Za-z]*'))
1122 for new_full_path in sources:
1122 for new_full_path in sources:
1123 new_filename = os.path.basename(new_full_path)
1123 new_filename = os.path.basename(new_full_path)
1124 if new_filename.startswith('ipythonrc'):
1124 if new_filename.startswith('ipythonrc'):
1125 new_filename = new_filename + rc_suffix
1125 new_filename = new_filename + rc_suffix
1126 # The config directory should only contain files, skip any
1126 # The config directory should only contain files, skip any
1127 # directories which may be there (like CVS)
1127 # directories which may be there (like CVS)
1128 if os.path.isdir(new_full_path):
1128 if os.path.isdir(new_full_path):
1129 continue
1129 continue
1130 if os.path.exists(new_filename):
1130 if os.path.exists(new_filename):
1131 old_file = new_filename+'.old'
1131 old_file = new_filename+'.old'
1132 if os.path.exists(old_file):
1132 if os.path.exists(old_file):
1133 os.remove(old_file)
1133 os.remove(old_file)
1134 os.rename(new_filename,old_file)
1134 os.rename(new_filename,old_file)
1135 shutil.copy(new_full_path,new_filename)
1135 shutil.copy(new_full_path,new_filename)
1136 else:
1136 else:
1137 raise ValueError,'unrecognized mode for install:',`mode`
1137 raise ValueError,'unrecognized mode for install:',`mode`
1138
1138
1139 # Fix line-endings to those native to each platform in the config
1139 # Fix line-endings to those native to each platform in the config
1140 # directory.
1140 # directory.
1141 try:
1141 try:
1142 os.chdir(ipythondir)
1142 os.chdir(ipythondir)
1143 except:
1143 except:
1144 print """
1144 print """
1145 Problem: changing to directory %s failed.
1145 Problem: changing to directory %s failed.
1146 Details:
1146 Details:
1147 %s
1147 %s
1148
1148
1149 Some configuration files may have incorrect line endings. This should not
1149 Some configuration files may have incorrect line endings. This should not
1150 cause any problems during execution. """ % (ipythondir,sys.exc_info()[1])
1150 cause any problems during execution. """ % (ipythondir,sys.exc_info()[1])
1151 wait()
1151 wait()
1152 else:
1152 else:
1153 for fname in glb('ipythonrc*'):
1153 for fname in glb('ipythonrc*'):
1154 try:
1154 try:
1155 native_line_ends(fname,backup=0)
1155 native_line_ends(fname,backup=0)
1156 except IOError:
1156 except IOError:
1157 pass
1157 pass
1158
1158
1159 if mode == 'install':
1159 if mode == 'install':
1160 print """
1160 print """
1161 Successful installation!
1161 Successful installation!
1162
1162
1163 Please read the sections 'Initial Configuration' and 'Quick Tips' in the
1163 Please read the sections 'Initial Configuration' and 'Quick Tips' in the
1164 IPython manual (there are both HTML and PDF versions supplied with the
1164 IPython manual (there are both HTML and PDF versions supplied with the
1165 distribution) to make sure that your system environment is properly configured
1165 distribution) to make sure that your system environment is properly configured
1166 to take advantage of IPython's features.
1166 to take advantage of IPython's features.
1167
1167
1168 Important note: the configuration system has changed! The old system is
1168 Important note: the configuration system has changed! The old system is
1169 still in place, but its setting may be partly overridden by the settings in
1169 still in place, but its setting may be partly overridden by the settings in
1170 "~/.ipython/ipy_user_conf.py" config file. Please take a look at the file
1170 "~/.ipython/ipy_user_conf.py" config file. Please take a look at the file
1171 if some of the new settings bother you.
1171 if some of the new settings bother you.
1172
1172
1173 """
1173 """
1174 else:
1174 else:
1175 print """
1175 print """
1176 Successful upgrade!
1176 Successful upgrade!
1177
1177
1178 All files in your directory:
1178 All files in your directory:
1179 %(ipythondir)s
1179 %(ipythondir)s
1180 which would have been overwritten by the upgrade were backed up with a .old
1180 which would have been overwritten by the upgrade were backed up with a .old
1181 extension. If you had made particular customizations in those files you may
1181 extension. If you had made particular customizations in those files you may
1182 want to merge them back into the new files.""" % locals()
1182 want to merge them back into the new files.""" % locals()
1183 wait()
1183 wait()
1184 os.chdir(cwd)
1184 os.chdir(cwd)
1185 # end user_setup()
1185 # end user_setup()
1186
1186
1187 def atexit_operations(self):
1187 def atexit_operations(self):
1188 """This will be executed at the time of exit.
1188 """This will be executed at the time of exit.
1189
1189
1190 Saving of persistent data should be performed here. """
1190 Saving of persistent data should be performed here. """
1191
1191
1192 #print '*** IPython exit cleanup ***' # dbg
1192 #print '*** IPython exit cleanup ***' # dbg
1193 # input history
1193 # input history
1194 self.savehist()
1194 self.savehist()
1195
1195
1196 # Cleanup all tempfiles left around
1196 # Cleanup all tempfiles left around
1197 for tfile in self.tempfiles:
1197 for tfile in self.tempfiles:
1198 try:
1198 try:
1199 os.unlink(tfile)
1199 os.unlink(tfile)
1200 except OSError:
1200 except OSError:
1201 pass
1201 pass
1202
1202
1203 # save the "persistent data" catch-all dictionary
1203 # save the "persistent data" catch-all dictionary
1204 self.hooks.shutdown_hook()
1204 self.hooks.shutdown_hook()
1205
1205
1206 def savehist(self):
1206 def savehist(self):
1207 """Save input history to a file (via readline library)."""
1207 """Save input history to a file (via readline library)."""
1208 try:
1208 try:
1209 self.readline.write_history_file(self.histfile)
1209 self.readline.write_history_file(self.histfile)
1210 except:
1210 except:
1211 print 'Unable to save IPython command history to file: ' + \
1211 print 'Unable to save IPython command history to file: ' + \
1212 `self.histfile`
1212 `self.histfile`
1213
1213
1214 def history_saving_wrapper(self, func):
1215 """ Wrap func for readline history saving
1216
1217 Convert func into callable that saves & restores
1218 history around the call """
1219
1220 if not self.has_readline:
1221 return func
1222
1223 def wrapper():
1224 self.savehist()
1225 try:
1226 func()
1227 finally:
1228 readline.read_history_file(self.histfile)
1229 return wrapper
1230
1231
1214 def pre_readline(self):
1232 def pre_readline(self):
1215 """readline hook to be used at the start of each line.
1233 """readline hook to be used at the start of each line.
1216
1234
1217 Currently it handles auto-indent only."""
1235 Currently it handles auto-indent only."""
1218
1236
1219 #debugx('self.indent_current_nsp','pre_readline:')
1237 #debugx('self.indent_current_nsp','pre_readline:')
1220 self.readline.insert_text(self.indent_current_str())
1238 self.readline.insert_text(self.indent_current_str())
1221
1239
1222 def init_readline(self):
1240 def init_readline(self):
1223 """Command history completion/saving/reloading."""
1241 """Command history completion/saving/reloading."""
1224
1242
1225 import IPython.rlineimpl as readline
1243 import IPython.rlineimpl as readline
1226 if not readline.have_readline:
1244 if not readline.have_readline:
1227 self.has_readline = 0
1245 self.has_readline = 0
1228 self.readline = None
1246 self.readline = None
1229 # no point in bugging windows users with this every time:
1247 # no point in bugging windows users with this every time:
1230 warn('Readline services not available on this platform.')
1248 warn('Readline services not available on this platform.')
1231 else:
1249 else:
1232 sys.modules['readline'] = readline
1250 sys.modules['readline'] = readline
1233 import atexit
1251 import atexit
1234 from IPython.completer import IPCompleter
1252 from IPython.completer import IPCompleter
1235 self.Completer = IPCompleter(self,
1253 self.Completer = IPCompleter(self,
1236 self.user_ns,
1254 self.user_ns,
1237 self.user_global_ns,
1255 self.user_global_ns,
1238 self.rc.readline_omit__names,
1256 self.rc.readline_omit__names,
1239 self.alias_table)
1257 self.alias_table)
1240 sdisp = self.strdispatchers.get('complete_command', StrDispatch())
1258 sdisp = self.strdispatchers.get('complete_command', StrDispatch())
1241 self.strdispatchers['complete_command'] = sdisp
1259 self.strdispatchers['complete_command'] = sdisp
1242 self.Completer.custom_completers = sdisp
1260 self.Completer.custom_completers = sdisp
1243 # Platform-specific configuration
1261 # Platform-specific configuration
1244 if os.name == 'nt':
1262 if os.name == 'nt':
1245 self.readline_startup_hook = readline.set_pre_input_hook
1263 self.readline_startup_hook = readline.set_pre_input_hook
1246 else:
1264 else:
1247 self.readline_startup_hook = readline.set_startup_hook
1265 self.readline_startup_hook = readline.set_startup_hook
1248
1266
1249 # Load user's initrc file (readline config)
1267 # Load user's initrc file (readline config)
1250 inputrc_name = os.environ.get('INPUTRC')
1268 inputrc_name = os.environ.get('INPUTRC')
1251 if inputrc_name is None:
1269 if inputrc_name is None:
1252 home_dir = get_home_dir()
1270 home_dir = get_home_dir()
1253 if home_dir is not None:
1271 if home_dir is not None:
1254 inputrc_name = os.path.join(home_dir,'.inputrc')
1272 inputrc_name = os.path.join(home_dir,'.inputrc')
1255 if os.path.isfile(inputrc_name):
1273 if os.path.isfile(inputrc_name):
1256 try:
1274 try:
1257 readline.read_init_file(inputrc_name)
1275 readline.read_init_file(inputrc_name)
1258 except:
1276 except:
1259 warn('Problems reading readline initialization file <%s>'
1277 warn('Problems reading readline initialization file <%s>'
1260 % inputrc_name)
1278 % inputrc_name)
1261
1279
1262 self.has_readline = 1
1280 self.has_readline = 1
1263 self.readline = readline
1281 self.readline = readline
1264 # save this in sys so embedded copies can restore it properly
1282 # save this in sys so embedded copies can restore it properly
1265 sys.ipcompleter = self.Completer.complete
1283 sys.ipcompleter = self.Completer.complete
1266 readline.set_completer(self.Completer.complete)
1284 readline.set_completer(self.Completer.complete)
1267
1285
1268 # Configure readline according to user's prefs
1286 # Configure readline according to user's prefs
1269 for rlcommand in self.rc.readline_parse_and_bind:
1287 for rlcommand in self.rc.readline_parse_and_bind:
1270 readline.parse_and_bind(rlcommand)
1288 readline.parse_and_bind(rlcommand)
1271
1289
1272 # remove some chars from the delimiters list
1290 # remove some chars from the delimiters list
1273 delims = readline.get_completer_delims()
1291 delims = readline.get_completer_delims()
1274 delims = delims.translate(string._idmap,
1292 delims = delims.translate(string._idmap,
1275 self.rc.readline_remove_delims)
1293 self.rc.readline_remove_delims)
1276 readline.set_completer_delims(delims)
1294 readline.set_completer_delims(delims)
1277 # otherwise we end up with a monster history after a while:
1295 # otherwise we end up with a monster history after a while:
1278 readline.set_history_length(1000)
1296 readline.set_history_length(1000)
1279 try:
1297 try:
1280 #print '*** Reading readline history' # dbg
1298 #print '*** Reading readline history' # dbg
1281 readline.read_history_file(self.histfile)
1299 readline.read_history_file(self.histfile)
1282 except IOError:
1300 except IOError:
1283 pass # It doesn't exist yet.
1301 pass # It doesn't exist yet.
1284
1302
1285 atexit.register(self.atexit_operations)
1303 atexit.register(self.atexit_operations)
1286 del atexit
1304 del atexit
1287
1305
1288 # Configure auto-indent for all platforms
1306 # Configure auto-indent for all platforms
1289 self.set_autoindent(self.rc.autoindent)
1307 self.set_autoindent(self.rc.autoindent)
1290
1308
1291 def ask_yes_no(self,prompt,default=True):
1309 def ask_yes_no(self,prompt,default=True):
1292 if self.rc.quiet:
1310 if self.rc.quiet:
1293 return True
1311 return True
1294 return ask_yes_no(prompt,default)
1312 return ask_yes_no(prompt,default)
1295
1313
1296 def _should_recompile(self,e):
1314 def _should_recompile(self,e):
1297 """Utility routine for edit_syntax_error"""
1315 """Utility routine for edit_syntax_error"""
1298
1316
1299 if e.filename in ('<ipython console>','<input>','<string>',
1317 if e.filename in ('<ipython console>','<input>','<string>',
1300 '<console>','<BackgroundJob compilation>',
1318 '<console>','<BackgroundJob compilation>',
1301 None):
1319 None):
1302
1320
1303 return False
1321 return False
1304 try:
1322 try:
1305 if (self.rc.autoedit_syntax and
1323 if (self.rc.autoedit_syntax and
1306 not self.ask_yes_no('Return to editor to correct syntax error? '
1324 not self.ask_yes_no('Return to editor to correct syntax error? '
1307 '[Y/n] ','y')):
1325 '[Y/n] ','y')):
1308 return False
1326 return False
1309 except EOFError:
1327 except EOFError:
1310 return False
1328 return False
1311
1329
1312 def int0(x):
1330 def int0(x):
1313 try:
1331 try:
1314 return int(x)
1332 return int(x)
1315 except TypeError:
1333 except TypeError:
1316 return 0
1334 return 0
1317 # always pass integer line and offset values to editor hook
1335 # always pass integer line and offset values to editor hook
1318 self.hooks.fix_error_editor(e.filename,
1336 self.hooks.fix_error_editor(e.filename,
1319 int0(e.lineno),int0(e.offset),e.msg)
1337 int0(e.lineno),int0(e.offset),e.msg)
1320 return True
1338 return True
1321
1339
1322 def edit_syntax_error(self):
1340 def edit_syntax_error(self):
1323 """The bottom half of the syntax error handler called in the main loop.
1341 """The bottom half of the syntax error handler called in the main loop.
1324
1342
1325 Loop until syntax error is fixed or user cancels.
1343 Loop until syntax error is fixed or user cancels.
1326 """
1344 """
1327
1345
1328 while self.SyntaxTB.last_syntax_error:
1346 while self.SyntaxTB.last_syntax_error:
1329 # copy and clear last_syntax_error
1347 # copy and clear last_syntax_error
1330 err = self.SyntaxTB.clear_err_state()
1348 err = self.SyntaxTB.clear_err_state()
1331 if not self._should_recompile(err):
1349 if not self._should_recompile(err):
1332 return
1350 return
1333 try:
1351 try:
1334 # may set last_syntax_error again if a SyntaxError is raised
1352 # may set last_syntax_error again if a SyntaxError is raised
1335 self.safe_execfile(err.filename,self.user_ns)
1353 self.safe_execfile(err.filename,self.user_ns)
1336 except:
1354 except:
1337 self.showtraceback()
1355 self.showtraceback()
1338 else:
1356 else:
1339 try:
1357 try:
1340 f = file(err.filename)
1358 f = file(err.filename)
1341 try:
1359 try:
1342 sys.displayhook(f.read())
1360 sys.displayhook(f.read())
1343 finally:
1361 finally:
1344 f.close()
1362 f.close()
1345 except:
1363 except:
1346 self.showtraceback()
1364 self.showtraceback()
1347
1365
1348 def showsyntaxerror(self, filename=None):
1366 def showsyntaxerror(self, filename=None):
1349 """Display the syntax error that just occurred.
1367 """Display the syntax error that just occurred.
1350
1368
1351 This doesn't display a stack trace because there isn't one.
1369 This doesn't display a stack trace because there isn't one.
1352
1370
1353 If a filename is given, it is stuffed in the exception instead
1371 If a filename is given, it is stuffed in the exception instead
1354 of what was there before (because Python's parser always uses
1372 of what was there before (because Python's parser always uses
1355 "<string>" when reading from a string).
1373 "<string>" when reading from a string).
1356 """
1374 """
1357 etype, value, last_traceback = sys.exc_info()
1375 etype, value, last_traceback = sys.exc_info()
1358
1376
1359 # See note about these variables in showtraceback() below
1377 # See note about these variables in showtraceback() below
1360 sys.last_type = etype
1378 sys.last_type = etype
1361 sys.last_value = value
1379 sys.last_value = value
1362 sys.last_traceback = last_traceback
1380 sys.last_traceback = last_traceback
1363
1381
1364 if filename and etype is SyntaxError:
1382 if filename and etype is SyntaxError:
1365 # Work hard to stuff the correct filename in the exception
1383 # Work hard to stuff the correct filename in the exception
1366 try:
1384 try:
1367 msg, (dummy_filename, lineno, offset, line) = value
1385 msg, (dummy_filename, lineno, offset, line) = value
1368 except:
1386 except:
1369 # Not the format we expect; leave it alone
1387 # Not the format we expect; leave it alone
1370 pass
1388 pass
1371 else:
1389 else:
1372 # Stuff in the right filename
1390 # Stuff in the right filename
1373 try:
1391 try:
1374 # Assume SyntaxError is a class exception
1392 # Assume SyntaxError is a class exception
1375 value = SyntaxError(msg, (filename, lineno, offset, line))
1393 value = SyntaxError(msg, (filename, lineno, offset, line))
1376 except:
1394 except:
1377 # If that failed, assume SyntaxError is a string
1395 # If that failed, assume SyntaxError is a string
1378 value = msg, (filename, lineno, offset, line)
1396 value = msg, (filename, lineno, offset, line)
1379 self.SyntaxTB(etype,value,[])
1397 self.SyntaxTB(etype,value,[])
1380
1398
1381 def debugger(self):
1399 def debugger(self):
1382 """Call the pydb/pdb debugger."""
1400 """Call the pydb/pdb debugger."""
1383
1401
1384 if not self.rc.pdb:
1402 if not self.rc.pdb:
1385 return
1403 return
1386 have_pydb = False
1404 have_pydb = False
1387 if sys.version[:3] >= '2.5':
1405 if sys.version[:3] >= '2.5':
1388 try:
1406 try:
1389 from pydb import pm
1407 from pydb import pm
1390 have_pydb = True
1408 have_pydb = True
1391 except ImportError:
1409 except ImportError:
1392 pass
1410 pass
1393 if not have_pydb:
1411 if not have_pydb:
1394 from pdb import pm
1412 from pdb import pm
1395 pm()
1413 self.history_saving_wrapper(pm)()
1396
1414
1397 def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None):
1415 def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None):
1398 """Display the exception that just occurred.
1416 """Display the exception that just occurred.
1399
1417
1400 If nothing is known about the exception, this is the method which
1418 If nothing is known about the exception, this is the method which
1401 should be used throughout the code for presenting user tracebacks,
1419 should be used throughout the code for presenting user tracebacks,
1402 rather than directly invoking the InteractiveTB object.
1420 rather than directly invoking the InteractiveTB object.
1403
1421
1404 A specific showsyntaxerror() also exists, but this method can take
1422 A specific showsyntaxerror() also exists, but this method can take
1405 care of calling it if needed, so unless you are explicitly catching a
1423 care of calling it if needed, so unless you are explicitly catching a
1406 SyntaxError exception, don't try to analyze the stack manually and
1424 SyntaxError exception, don't try to analyze the stack manually and
1407 simply call this method."""
1425 simply call this method."""
1408
1426
1409 # Though this won't be called by syntax errors in the input line,
1427 # Though this won't be called by syntax errors in the input line,
1410 # there may be SyntaxError cases whith imported code.
1428 # there may be SyntaxError cases whith imported code.
1411 if exc_tuple is None:
1429 if exc_tuple is None:
1412 etype, value, tb = sys.exc_info()
1430 etype, value, tb = sys.exc_info()
1413 else:
1431 else:
1414 etype, value, tb = exc_tuple
1432 etype, value, tb = exc_tuple
1415 if etype is SyntaxError:
1433 if etype is SyntaxError:
1416 self.showsyntaxerror(filename)
1434 self.showsyntaxerror(filename)
1417 else:
1435 else:
1418 # WARNING: these variables are somewhat deprecated and not
1436 # WARNING: these variables are somewhat deprecated and not
1419 # necessarily safe to use in a threaded environment, but tools
1437 # necessarily safe to use in a threaded environment, but tools
1420 # like pdb depend on their existence, so let's set them. If we
1438 # like pdb depend on their existence, so let's set them. If we
1421 # find problems in the field, we'll need to revisit their use.
1439 # find problems in the field, we'll need to revisit their use.
1422 sys.last_type = etype
1440 sys.last_type = etype
1423 sys.last_value = value
1441 sys.last_value = value
1424 sys.last_traceback = tb
1442 sys.last_traceback = tb
1425
1443
1426 self.InteractiveTB(etype,value,tb,tb_offset=tb_offset)
1444 self.InteractiveTB(etype,value,tb,tb_offset=tb_offset)
1427 if self.InteractiveTB.call_pdb and self.has_readline:
1445 if self.InteractiveTB.call_pdb and self.has_readline:
1428 # pdb mucks up readline, fix it back
1446 # pdb mucks up readline, fix it back
1429 self.readline.set_completer(self.Completer.complete)
1447 self.readline.set_completer(self.Completer.complete)
1430
1448
1431 def mainloop(self,banner=None):
1449 def mainloop(self,banner=None):
1432 """Creates the local namespace and starts the mainloop.
1450 """Creates the local namespace and starts the mainloop.
1433
1451
1434 If an optional banner argument is given, it will override the
1452 If an optional banner argument is given, it will override the
1435 internally created default banner."""
1453 internally created default banner."""
1436
1454
1437 if self.rc.c: # Emulate Python's -c option
1455 if self.rc.c: # Emulate Python's -c option
1438 self.exec_init_cmd()
1456 self.exec_init_cmd()
1439 if banner is None:
1457 if banner is None:
1440 if not self.rc.banner:
1458 if not self.rc.banner:
1441 banner = ''
1459 banner = ''
1442 # banner is string? Use it directly!
1460 # banner is string? Use it directly!
1443 elif isinstance(self.rc.banner,basestring):
1461 elif isinstance(self.rc.banner,basestring):
1444 banner = self.rc.banner
1462 banner = self.rc.banner
1445 else:
1463 else:
1446 banner = self.BANNER+self.banner2
1464 banner = self.BANNER+self.banner2
1447
1465
1448 self.interact(banner)
1466 self.interact(banner)
1449
1467
1450 def exec_init_cmd(self):
1468 def exec_init_cmd(self):
1451 """Execute a command given at the command line.
1469 """Execute a command given at the command line.
1452
1470
1453 This emulates Python's -c option."""
1471 This emulates Python's -c option."""
1454
1472
1455 #sys.argv = ['-c']
1473 #sys.argv = ['-c']
1456 self.push(self.rc.c)
1474 self.push(self.rc.c)
1457
1475
1458 def embed_mainloop(self,header='',local_ns=None,global_ns=None,stack_depth=0):
1476 def embed_mainloop(self,header='',local_ns=None,global_ns=None,stack_depth=0):
1459 """Embeds IPython into a running python program.
1477 """Embeds IPython into a running python program.
1460
1478
1461 Input:
1479 Input:
1462
1480
1463 - header: An optional header message can be specified.
1481 - header: An optional header message can be specified.
1464
1482
1465 - local_ns, global_ns: working namespaces. If given as None, the
1483 - local_ns, global_ns: working namespaces. If given as None, the
1466 IPython-initialized one is updated with __main__.__dict__, so that
1484 IPython-initialized one is updated with __main__.__dict__, so that
1467 program variables become visible but user-specific configuration
1485 program variables become visible but user-specific configuration
1468 remains possible.
1486 remains possible.
1469
1487
1470 - stack_depth: specifies how many levels in the stack to go to
1488 - stack_depth: specifies how many levels in the stack to go to
1471 looking for namespaces (when local_ns and global_ns are None). This
1489 looking for namespaces (when local_ns and global_ns are None). This
1472 allows an intermediate caller to make sure that this function gets
1490 allows an intermediate caller to make sure that this function gets
1473 the namespace from the intended level in the stack. By default (0)
1491 the namespace from the intended level in the stack. By default (0)
1474 it will get its locals and globals from the immediate caller.
1492 it will get its locals and globals from the immediate caller.
1475
1493
1476 Warning: it's possible to use this in a program which is being run by
1494 Warning: it's possible to use this in a program which is being run by
1477 IPython itself (via %run), but some funny things will happen (a few
1495 IPython itself (via %run), but some funny things will happen (a few
1478 globals get overwritten). In the future this will be cleaned up, as
1496 globals get overwritten). In the future this will be cleaned up, as
1479 there is no fundamental reason why it can't work perfectly."""
1497 there is no fundamental reason why it can't work perfectly."""
1480
1498
1481 # Get locals and globals from caller
1499 # Get locals and globals from caller
1482 if local_ns is None or global_ns is None:
1500 if local_ns is None or global_ns is None:
1483 call_frame = sys._getframe(stack_depth).f_back
1501 call_frame = sys._getframe(stack_depth).f_back
1484
1502
1485 if local_ns is None:
1503 if local_ns is None:
1486 local_ns = call_frame.f_locals
1504 local_ns = call_frame.f_locals
1487 if global_ns is None:
1505 if global_ns is None:
1488 global_ns = call_frame.f_globals
1506 global_ns = call_frame.f_globals
1489
1507
1490 # Update namespaces and fire up interpreter
1508 # Update namespaces and fire up interpreter
1491
1509
1492 # The global one is easy, we can just throw it in
1510 # The global one is easy, we can just throw it in
1493 self.user_global_ns = global_ns
1511 self.user_global_ns = global_ns
1494
1512
1495 # but the user/local one is tricky: ipython needs it to store internal
1513 # but the user/local one is tricky: ipython needs it to store internal
1496 # data, but we also need the locals. We'll copy locals in the user
1514 # data, but we also need the locals. We'll copy locals in the user
1497 # one, but will track what got copied so we can delete them at exit.
1515 # one, but will track what got copied so we can delete them at exit.
1498 # This is so that a later embedded call doesn't see locals from a
1516 # This is so that a later embedded call doesn't see locals from a
1499 # previous call (which most likely existed in a separate scope).
1517 # previous call (which most likely existed in a separate scope).
1500 local_varnames = local_ns.keys()
1518 local_varnames = local_ns.keys()
1501 self.user_ns.update(local_ns)
1519 self.user_ns.update(local_ns)
1502
1520
1503 # Patch for global embedding to make sure that things don't overwrite
1521 # Patch for global embedding to make sure that things don't overwrite
1504 # user globals accidentally. Thanks to Richard <rxe@renre-europe.com>
1522 # user globals accidentally. Thanks to Richard <rxe@renre-europe.com>
1505 # FIXME. Test this a bit more carefully (the if.. is new)
1523 # FIXME. Test this a bit more carefully (the if.. is new)
1506 if local_ns is None and global_ns is None:
1524 if local_ns is None and global_ns is None:
1507 self.user_global_ns.update(__main__.__dict__)
1525 self.user_global_ns.update(__main__.__dict__)
1508
1526
1509 # make sure the tab-completer has the correct frame information, so it
1527 # make sure the tab-completer has the correct frame information, so it
1510 # actually completes using the frame's locals/globals
1528 # actually completes using the frame's locals/globals
1511 self.set_completer_frame()
1529 self.set_completer_frame()
1512
1530
1513 # before activating the interactive mode, we need to make sure that
1531 # before activating the interactive mode, we need to make sure that
1514 # all names in the builtin namespace needed by ipython point to
1532 # all names in the builtin namespace needed by ipython point to
1515 # ourselves, and not to other instances.
1533 # ourselves, and not to other instances.
1516 self.add_builtins()
1534 self.add_builtins()
1517
1535
1518 self.interact(header)
1536 self.interact(header)
1519
1537
1520 # now, purge out the user namespace from anything we might have added
1538 # now, purge out the user namespace from anything we might have added
1521 # from the caller's local namespace
1539 # from the caller's local namespace
1522 delvar = self.user_ns.pop
1540 delvar = self.user_ns.pop
1523 for var in local_varnames:
1541 for var in local_varnames:
1524 delvar(var,None)
1542 delvar(var,None)
1525 # and clean builtins we may have overridden
1543 # and clean builtins we may have overridden
1526 self.clean_builtins()
1544 self.clean_builtins()
1527
1545
1528 def interact(self, banner=None):
1546 def interact(self, banner=None):
1529 """Closely emulate the interactive Python console.
1547 """Closely emulate the interactive Python console.
1530
1548
1531 The optional banner argument specify the banner to print
1549 The optional banner argument specify the banner to print
1532 before the first interaction; by default it prints a banner
1550 before the first interaction; by default it prints a banner
1533 similar to the one printed by the real Python interpreter,
1551 similar to the one printed by the real Python interpreter,
1534 followed by the current class name in parentheses (so as not
1552 followed by the current class name in parentheses (so as not
1535 to confuse this with the real interpreter -- since it's so
1553 to confuse this with the real interpreter -- since it's so
1536 close!).
1554 close!).
1537
1555
1538 """
1556 """
1539
1557
1540 if self.exit_now:
1558 if self.exit_now:
1541 # batch run -> do not interact
1559 # batch run -> do not interact
1542 return
1560 return
1543 cprt = 'Type "copyright", "credits" or "license" for more information.'
1561 cprt = 'Type "copyright", "credits" or "license" for more information.'
1544 if banner is None:
1562 if banner is None:
1545 self.write("Python %s on %s\n%s\n(%s)\n" %
1563 self.write("Python %s on %s\n%s\n(%s)\n" %
1546 (sys.version, sys.platform, cprt,
1564 (sys.version, sys.platform, cprt,
1547 self.__class__.__name__))
1565 self.__class__.__name__))
1548 else:
1566 else:
1549 self.write(banner)
1567 self.write(banner)
1550
1568
1551 more = 0
1569 more = 0
1552
1570
1553 # Mark activity in the builtins
1571 # Mark activity in the builtins
1554 __builtin__.__dict__['__IPYTHON__active'] += 1
1572 __builtin__.__dict__['__IPYTHON__active'] += 1
1555
1573
1556 # exit_now is set by a call to %Exit or %Quit
1574 # exit_now is set by a call to %Exit or %Quit
1557 while not self.exit_now:
1575 while not self.exit_now:
1558 if more:
1576 if more:
1559 prompt = self.hooks.generate_prompt(True)
1577 prompt = self.hooks.generate_prompt(True)
1560 if self.autoindent:
1578 if self.autoindent:
1561 self.readline_startup_hook(self.pre_readline)
1579 self.readline_startup_hook(self.pre_readline)
1562 else:
1580 else:
1563 prompt = self.hooks.generate_prompt(False)
1581 prompt = self.hooks.generate_prompt(False)
1564 try:
1582 try:
1565 line = self.raw_input(prompt,more)
1583 line = self.raw_input(prompt,more)
1566 if self.exit_now:
1584 if self.exit_now:
1567 # quick exit on sys.std[in|out] close
1585 # quick exit on sys.std[in|out] close
1568 break
1586 break
1569 if self.autoindent:
1587 if self.autoindent:
1570 self.readline_startup_hook(None)
1588 self.readline_startup_hook(None)
1571 except KeyboardInterrupt:
1589 except KeyboardInterrupt:
1572 self.write('\nKeyboardInterrupt\n')
1590 self.write('\nKeyboardInterrupt\n')
1573 self.resetbuffer()
1591 self.resetbuffer()
1574 # keep cache in sync with the prompt counter:
1592 # keep cache in sync with the prompt counter:
1575 self.outputcache.prompt_count -= 1
1593 self.outputcache.prompt_count -= 1
1576
1594
1577 if self.autoindent:
1595 if self.autoindent:
1578 self.indent_current_nsp = 0
1596 self.indent_current_nsp = 0
1579 more = 0
1597 more = 0
1580 except EOFError:
1598 except EOFError:
1581 if self.autoindent:
1599 if self.autoindent:
1582 self.readline_startup_hook(None)
1600 self.readline_startup_hook(None)
1583 self.write('\n')
1601 self.write('\n')
1584 self.exit()
1602 self.exit()
1585 except bdb.BdbQuit:
1603 except bdb.BdbQuit:
1586 warn('The Python debugger has exited with a BdbQuit exception.\n'
1604 warn('The Python debugger has exited with a BdbQuit exception.\n'
1587 'Because of how pdb handles the stack, it is impossible\n'
1605 'Because of how pdb handles the stack, it is impossible\n'
1588 'for IPython to properly format this particular exception.\n'
1606 'for IPython to properly format this particular exception.\n'
1589 'IPython will resume normal operation.')
1607 'IPython will resume normal operation.')
1590 except:
1608 except:
1591 # exceptions here are VERY RARE, but they can be triggered
1609 # exceptions here are VERY RARE, but they can be triggered
1592 # asynchronously by signal handlers, for example.
1610 # asynchronously by signal handlers, for example.
1593 self.showtraceback()
1611 self.showtraceback()
1594 else:
1612 else:
1595 more = self.push(line)
1613 more = self.push(line)
1596 if (self.SyntaxTB.last_syntax_error and
1614 if (self.SyntaxTB.last_syntax_error and
1597 self.rc.autoedit_syntax):
1615 self.rc.autoedit_syntax):
1598 self.edit_syntax_error()
1616 self.edit_syntax_error()
1599
1617
1600 # We are off again...
1618 # We are off again...
1601 __builtin__.__dict__['__IPYTHON__active'] -= 1
1619 __builtin__.__dict__['__IPYTHON__active'] -= 1
1602
1620
1603 def excepthook(self, etype, value, tb):
1621 def excepthook(self, etype, value, tb):
1604 """One more defense for GUI apps that call sys.excepthook.
1622 """One more defense for GUI apps that call sys.excepthook.
1605
1623
1606 GUI frameworks like wxPython trap exceptions and call
1624 GUI frameworks like wxPython trap exceptions and call
1607 sys.excepthook themselves. I guess this is a feature that
1625 sys.excepthook themselves. I guess this is a feature that
1608 enables them to keep running after exceptions that would
1626 enables them to keep running after exceptions that would
1609 otherwise kill their mainloop. This is a bother for IPython
1627 otherwise kill their mainloop. This is a bother for IPython
1610 which excepts to catch all of the program exceptions with a try:
1628 which excepts to catch all of the program exceptions with a try:
1611 except: statement.
1629 except: statement.
1612
1630
1613 Normally, IPython sets sys.excepthook to a CrashHandler instance, so if
1631 Normally, IPython sets sys.excepthook to a CrashHandler instance, so if
1614 any app directly invokes sys.excepthook, it will look to the user like
1632 any app directly invokes sys.excepthook, it will look to the user like
1615 IPython crashed. In order to work around this, we can disable the
1633 IPython crashed. In order to work around this, we can disable the
1616 CrashHandler and replace it with this excepthook instead, which prints a
1634 CrashHandler and replace it with this excepthook instead, which prints a
1617 regular traceback using our InteractiveTB. In this fashion, apps which
1635 regular traceback using our InteractiveTB. In this fashion, apps which
1618 call sys.excepthook will generate a regular-looking exception from
1636 call sys.excepthook will generate a regular-looking exception from
1619 IPython, and the CrashHandler will only be triggered by real IPython
1637 IPython, and the CrashHandler will only be triggered by real IPython
1620 crashes.
1638 crashes.
1621
1639
1622 This hook should be used sparingly, only in places which are not likely
1640 This hook should be used sparingly, only in places which are not likely
1623 to be true IPython errors.
1641 to be true IPython errors.
1624 """
1642 """
1625 self.showtraceback((etype,value,tb),tb_offset=0)
1643 self.showtraceback((etype,value,tb),tb_offset=0)
1626
1644
1627 def expand_aliases(self,fn,rest):
1645 def expand_aliases(self,fn,rest):
1628 """ Expand multiple levels of aliases:
1646 """ Expand multiple levels of aliases:
1629
1647
1630 if:
1648 if:
1631
1649
1632 alias foo bar /tmp
1650 alias foo bar /tmp
1633 alias baz foo
1651 alias baz foo
1634
1652
1635 then:
1653 then:
1636
1654
1637 baz huhhahhei -> bar /tmp huhhahhei
1655 baz huhhahhei -> bar /tmp huhhahhei
1638
1656
1639 """
1657 """
1640 line = fn + " " + rest
1658 line = fn + " " + rest
1641
1659
1642 done = Set()
1660 done = Set()
1643 while 1:
1661 while 1:
1644 pre,fn,rest = self.split_user_input(line)
1662 pre,fn,rest = self.split_user_input(line)
1645 if fn in self.alias_table:
1663 if fn in self.alias_table:
1646 if fn in done:
1664 if fn in done:
1647 warn("Cyclic alias definition, repeated '%s'" % fn)
1665 warn("Cyclic alias definition, repeated '%s'" % fn)
1648 return ""
1666 return ""
1649 done.add(fn)
1667 done.add(fn)
1650
1668
1651 l2 = self.transform_alias(fn,rest)
1669 l2 = self.transform_alias(fn,rest)
1652 # dir -> dir
1670 # dir -> dir
1653 # print "alias",line, "->",l2 #dbg
1671 # print "alias",line, "->",l2 #dbg
1654 if l2 == line:
1672 if l2 == line:
1655 break
1673 break
1656 # ls -> ls -F should not recurse forever
1674 # ls -> ls -F should not recurse forever
1657 if l2.split(None,1)[0] == line.split(None,1)[0]:
1675 if l2.split(None,1)[0] == line.split(None,1)[0]:
1658 line = l2
1676 line = l2
1659 break
1677 break
1660
1678
1661 line=l2
1679 line=l2
1662
1680
1663
1681
1664 # print "al expand to",line #dbg
1682 # print "al expand to",line #dbg
1665 else:
1683 else:
1666 break
1684 break
1667
1685
1668 return line
1686 return line
1669
1687
1670 def transform_alias(self, alias,rest=''):
1688 def transform_alias(self, alias,rest=''):
1671 """ Transform alias to system command string.
1689 """ Transform alias to system command string.
1672 """
1690 """
1673 nargs,cmd = self.alias_table[alias]
1691 nargs,cmd = self.alias_table[alias]
1674 if ' ' in cmd and os.path.isfile(cmd):
1692 if ' ' in cmd and os.path.isfile(cmd):
1675 cmd = '"%s"' % cmd
1693 cmd = '"%s"' % cmd
1676
1694
1677 # Expand the %l special to be the user's input line
1695 # Expand the %l special to be the user's input line
1678 if cmd.find('%l') >= 0:
1696 if cmd.find('%l') >= 0:
1679 cmd = cmd.replace('%l',rest)
1697 cmd = cmd.replace('%l',rest)
1680 rest = ''
1698 rest = ''
1681 if nargs==0:
1699 if nargs==0:
1682 # Simple, argument-less aliases
1700 # Simple, argument-less aliases
1683 cmd = '%s %s' % (cmd,rest)
1701 cmd = '%s %s' % (cmd,rest)
1684 else:
1702 else:
1685 # Handle aliases with positional arguments
1703 # Handle aliases with positional arguments
1686 args = rest.split(None,nargs)
1704 args = rest.split(None,nargs)
1687 if len(args)< nargs:
1705 if len(args)< nargs:
1688 error('Alias <%s> requires %s arguments, %s given.' %
1706 error('Alias <%s> requires %s arguments, %s given.' %
1689 (alias,nargs,len(args)))
1707 (alias,nargs,len(args)))
1690 return None
1708 return None
1691 cmd = '%s %s' % (cmd % tuple(args[:nargs]),' '.join(args[nargs:]))
1709 cmd = '%s %s' % (cmd % tuple(args[:nargs]),' '.join(args[nargs:]))
1692 # Now call the macro, evaluating in the user's namespace
1710 # Now call the macro, evaluating in the user's namespace
1693 #print 'new command: <%r>' % cmd # dbg
1711 #print 'new command: <%r>' % cmd # dbg
1694 return cmd
1712 return cmd
1695
1713
1696 def call_alias(self,alias,rest=''):
1714 def call_alias(self,alias,rest=''):
1697 """Call an alias given its name and the rest of the line.
1715 """Call an alias given its name and the rest of the line.
1698
1716
1699 This is only used to provide backwards compatibility for users of
1717 This is only used to provide backwards compatibility for users of
1700 ipalias(), use of which is not recommended for anymore."""
1718 ipalias(), use of which is not recommended for anymore."""
1701
1719
1702 # Now call the macro, evaluating in the user's namespace
1720 # Now call the macro, evaluating in the user's namespace
1703 cmd = self.transform_alias(alias, rest)
1721 cmd = self.transform_alias(alias, rest)
1704 try:
1722 try:
1705 self.system(cmd)
1723 self.system(cmd)
1706 except:
1724 except:
1707 self.showtraceback()
1725 self.showtraceback()
1708
1726
1709 def indent_current_str(self):
1727 def indent_current_str(self):
1710 """return the current level of indentation as a string"""
1728 """return the current level of indentation as a string"""
1711 return self.indent_current_nsp * ' '
1729 return self.indent_current_nsp * ' '
1712
1730
1713 def autoindent_update(self,line):
1731 def autoindent_update(self,line):
1714 """Keep track of the indent level."""
1732 """Keep track of the indent level."""
1715
1733
1716 #debugx('line')
1734 #debugx('line')
1717 #debugx('self.indent_current_nsp')
1735 #debugx('self.indent_current_nsp')
1718 if self.autoindent:
1736 if self.autoindent:
1719 if line:
1737 if line:
1720 inisp = num_ini_spaces(line)
1738 inisp = num_ini_spaces(line)
1721 if inisp < self.indent_current_nsp:
1739 if inisp < self.indent_current_nsp:
1722 self.indent_current_nsp = inisp
1740 self.indent_current_nsp = inisp
1723
1741
1724 if line[-1] == ':':
1742 if line[-1] == ':':
1725 self.indent_current_nsp += 4
1743 self.indent_current_nsp += 4
1726 elif dedent_re.match(line):
1744 elif dedent_re.match(line):
1727 self.indent_current_nsp -= 4
1745 self.indent_current_nsp -= 4
1728 else:
1746 else:
1729 self.indent_current_nsp = 0
1747 self.indent_current_nsp = 0
1730
1748
1731 def runlines(self,lines):
1749 def runlines(self,lines):
1732 """Run a string of one or more lines of source.
1750 """Run a string of one or more lines of source.
1733
1751
1734 This method is capable of running a string containing multiple source
1752 This method is capable of running a string containing multiple source
1735 lines, as if they had been entered at the IPython prompt. Since it
1753 lines, as if they had been entered at the IPython prompt. Since it
1736 exposes IPython's processing machinery, the given strings can contain
1754 exposes IPython's processing machinery, the given strings can contain
1737 magic calls (%magic), special shell access (!cmd), etc."""
1755 magic calls (%magic), special shell access (!cmd), etc."""
1738
1756
1739 # We must start with a clean buffer, in case this is run from an
1757 # We must start with a clean buffer, in case this is run from an
1740 # interactive IPython session (via a magic, for example).
1758 # interactive IPython session (via a magic, for example).
1741 self.resetbuffer()
1759 self.resetbuffer()
1742 lines = lines.split('\n')
1760 lines = lines.split('\n')
1743 more = 0
1761 more = 0
1744 for line in lines:
1762 for line in lines:
1745 # skip blank lines so we don't mess up the prompt counter, but do
1763 # skip blank lines so we don't mess up the prompt counter, but do
1746 # NOT skip even a blank line if we are in a code block (more is
1764 # NOT skip even a blank line if we are in a code block (more is
1747 # true)
1765 # true)
1748 if line or more:
1766 if line or more:
1749 more = self.push(self.prefilter(line,more))
1767 more = self.push(self.prefilter(line,more))
1750 # IPython's runsource returns None if there was an error
1768 # IPython's runsource returns None if there was an error
1751 # compiling the code. This allows us to stop processing right
1769 # compiling the code. This allows us to stop processing right
1752 # away, so the user gets the error message at the right place.
1770 # away, so the user gets the error message at the right place.
1753 if more is None:
1771 if more is None:
1754 break
1772 break
1755 # final newline in case the input didn't have it, so that the code
1773 # final newline in case the input didn't have it, so that the code
1756 # actually does get executed
1774 # actually does get executed
1757 if more:
1775 if more:
1758 self.push('\n')
1776 self.push('\n')
1759
1777
1760 def runsource(self, source, filename='<input>', symbol='single'):
1778 def runsource(self, source, filename='<input>', symbol='single'):
1761 """Compile and run some source in the interpreter.
1779 """Compile and run some source in the interpreter.
1762
1780
1763 Arguments are as for compile_command().
1781 Arguments are as for compile_command().
1764
1782
1765 One several things can happen:
1783 One several things can happen:
1766
1784
1767 1) The input is incorrect; compile_command() raised an
1785 1) The input is incorrect; compile_command() raised an
1768 exception (SyntaxError or OverflowError). A syntax traceback
1786 exception (SyntaxError or OverflowError). A syntax traceback
1769 will be printed by calling the showsyntaxerror() method.
1787 will be printed by calling the showsyntaxerror() method.
1770
1788
1771 2) The input is incomplete, and more input is required;
1789 2) The input is incomplete, and more input is required;
1772 compile_command() returned None. Nothing happens.
1790 compile_command() returned None. Nothing happens.
1773
1791
1774 3) The input is complete; compile_command() returned a code
1792 3) The input is complete; compile_command() returned a code
1775 object. The code is executed by calling self.runcode() (which
1793 object. The code is executed by calling self.runcode() (which
1776 also handles run-time exceptions, except for SystemExit).
1794 also handles run-time exceptions, except for SystemExit).
1777
1795
1778 The return value is:
1796 The return value is:
1779
1797
1780 - True in case 2
1798 - True in case 2
1781
1799
1782 - False in the other cases, unless an exception is raised, where
1800 - False in the other cases, unless an exception is raised, where
1783 None is returned instead. This can be used by external callers to
1801 None is returned instead. This can be used by external callers to
1784 know whether to continue feeding input or not.
1802 know whether to continue feeding input or not.
1785
1803
1786 The return value can be used to decide whether to use sys.ps1 or
1804 The return value can be used to decide whether to use sys.ps1 or
1787 sys.ps2 to prompt the next line."""
1805 sys.ps2 to prompt the next line."""
1788
1806
1789 try:
1807 try:
1790 code = self.compile(source,filename,symbol)
1808 code = self.compile(source,filename,symbol)
1791 except (OverflowError, SyntaxError, ValueError):
1809 except (OverflowError, SyntaxError, ValueError):
1792 # Case 1
1810 # Case 1
1793 self.showsyntaxerror(filename)
1811 self.showsyntaxerror(filename)
1794 return None
1812 return None
1795
1813
1796 if code is None:
1814 if code is None:
1797 # Case 2
1815 # Case 2
1798 return True
1816 return True
1799
1817
1800 # Case 3
1818 # Case 3
1801 # We store the code object so that threaded shells and
1819 # We store the code object so that threaded shells and
1802 # custom exception handlers can access all this info if needed.
1820 # custom exception handlers can access all this info if needed.
1803 # The source corresponding to this can be obtained from the
1821 # The source corresponding to this can be obtained from the
1804 # buffer attribute as '\n'.join(self.buffer).
1822 # buffer attribute as '\n'.join(self.buffer).
1805 self.code_to_run = code
1823 self.code_to_run = code
1806 # now actually execute the code object
1824 # now actually execute the code object
1807 if self.runcode(code) == 0:
1825 if self.runcode(code) == 0:
1808 return False
1826 return False
1809 else:
1827 else:
1810 return None
1828 return None
1811
1829
1812 def runcode(self,code_obj):
1830 def runcode(self,code_obj):
1813 """Execute a code object.
1831 """Execute a code object.
1814
1832
1815 When an exception occurs, self.showtraceback() is called to display a
1833 When an exception occurs, self.showtraceback() is called to display a
1816 traceback.
1834 traceback.
1817
1835
1818 Return value: a flag indicating whether the code to be run completed
1836 Return value: a flag indicating whether the code to be run completed
1819 successfully:
1837 successfully:
1820
1838
1821 - 0: successful execution.
1839 - 0: successful execution.
1822 - 1: an error occurred.
1840 - 1: an error occurred.
1823 """
1841 """
1824
1842
1825 # Set our own excepthook in case the user code tries to call it
1843 # Set our own excepthook in case the user code tries to call it
1826 # directly, so that the IPython crash handler doesn't get triggered
1844 # directly, so that the IPython crash handler doesn't get triggered
1827 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
1845 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
1828
1846
1829 # we save the original sys.excepthook in the instance, in case config
1847 # we save the original sys.excepthook in the instance, in case config
1830 # code (such as magics) needs access to it.
1848 # code (such as magics) needs access to it.
1831 self.sys_excepthook = old_excepthook
1849 self.sys_excepthook = old_excepthook
1832 outflag = 1 # happens in more places, so it's easier as default
1850 outflag = 1 # happens in more places, so it's easier as default
1833 try:
1851 try:
1834 try:
1852 try:
1835 # Embedded instances require separate global/local namespaces
1853 # Embedded instances require separate global/local namespaces
1836 # so they can see both the surrounding (local) namespace and
1854 # so they can see both the surrounding (local) namespace and
1837 # the module-level globals when called inside another function.
1855 # the module-level globals when called inside another function.
1838 if self.embedded:
1856 if self.embedded:
1839 exec code_obj in self.user_global_ns, self.user_ns
1857 exec code_obj in self.user_global_ns, self.user_ns
1840 # Normal (non-embedded) instances should only have a single
1858 # Normal (non-embedded) instances should only have a single
1841 # namespace for user code execution, otherwise functions won't
1859 # namespace for user code execution, otherwise functions won't
1842 # see interactive top-level globals.
1860 # see interactive top-level globals.
1843 else:
1861 else:
1844 exec code_obj in self.user_ns
1862 exec code_obj in self.user_ns
1845 finally:
1863 finally:
1846 # Reset our crash handler in place
1864 # Reset our crash handler in place
1847 sys.excepthook = old_excepthook
1865 sys.excepthook = old_excepthook
1848 except SystemExit:
1866 except SystemExit:
1849 self.resetbuffer()
1867 self.resetbuffer()
1850 self.showtraceback()
1868 self.showtraceback()
1851 warn("Type %exit or %quit to exit IPython "
1869 warn("Type %exit or %quit to exit IPython "
1852 "(%Exit or %Quit do so unconditionally).",level=1)
1870 "(%Exit or %Quit do so unconditionally).",level=1)
1853 except self.custom_exceptions:
1871 except self.custom_exceptions:
1854 etype,value,tb = sys.exc_info()
1872 etype,value,tb = sys.exc_info()
1855 self.CustomTB(etype,value,tb)
1873 self.CustomTB(etype,value,tb)
1856 except:
1874 except:
1857 self.showtraceback()
1875 self.showtraceback()
1858 else:
1876 else:
1859 outflag = 0
1877 outflag = 0
1860 if softspace(sys.stdout, 0):
1878 if softspace(sys.stdout, 0):
1861 print
1879 print
1862 # Flush out code object which has been run (and source)
1880 # Flush out code object which has been run (and source)
1863 self.code_to_run = None
1881 self.code_to_run = None
1864 return outflag
1882 return outflag
1865
1883
1866 def push(self, line):
1884 def push(self, line):
1867 """Push a line to the interpreter.
1885 """Push a line to the interpreter.
1868
1886
1869 The line should not have a trailing newline; it may have
1887 The line should not have a trailing newline; it may have
1870 internal newlines. The line is appended to a buffer and the
1888 internal newlines. The line is appended to a buffer and the
1871 interpreter's runsource() method is called with the
1889 interpreter's runsource() method is called with the
1872 concatenated contents of the buffer as source. If this
1890 concatenated contents of the buffer as source. If this
1873 indicates that the command was executed or invalid, the buffer
1891 indicates that the command was executed or invalid, the buffer
1874 is reset; otherwise, the command is incomplete, and the buffer
1892 is reset; otherwise, the command is incomplete, and the buffer
1875 is left as it was after the line was appended. The return
1893 is left as it was after the line was appended. The return
1876 value is 1 if more input is required, 0 if the line was dealt
1894 value is 1 if more input is required, 0 if the line was dealt
1877 with in some way (this is the same as runsource()).
1895 with in some way (this is the same as runsource()).
1878 """
1896 """
1879
1897
1880 # autoindent management should be done here, and not in the
1898 # autoindent management should be done here, and not in the
1881 # interactive loop, since that one is only seen by keyboard input. We
1899 # interactive loop, since that one is only seen by keyboard input. We
1882 # need this done correctly even for code run via runlines (which uses
1900 # need this done correctly even for code run via runlines (which uses
1883 # push).
1901 # push).
1884
1902
1885 #print 'push line: <%s>' % line # dbg
1903 #print 'push line: <%s>' % line # dbg
1886 for subline in line.splitlines():
1904 for subline in line.splitlines():
1887 self.autoindent_update(subline)
1905 self.autoindent_update(subline)
1888 self.buffer.append(line)
1906 self.buffer.append(line)
1889 more = self.runsource('\n'.join(self.buffer), self.filename)
1907 more = self.runsource('\n'.join(self.buffer), self.filename)
1890 if not more:
1908 if not more:
1891 self.resetbuffer()
1909 self.resetbuffer()
1892 return more
1910 return more
1893
1911
1894 def resetbuffer(self):
1912 def resetbuffer(self):
1895 """Reset the input buffer."""
1913 """Reset the input buffer."""
1896 self.buffer[:] = []
1914 self.buffer[:] = []
1897
1915
1898 def raw_input(self,prompt='',continue_prompt=False):
1916 def raw_input(self,prompt='',continue_prompt=False):
1899 """Write a prompt and read a line.
1917 """Write a prompt and read a line.
1900
1918
1901 The returned line does not include the trailing newline.
1919 The returned line does not include the trailing newline.
1902 When the user enters the EOF key sequence, EOFError is raised.
1920 When the user enters the EOF key sequence, EOFError is raised.
1903
1921
1904 Optional inputs:
1922 Optional inputs:
1905
1923
1906 - prompt(''): a string to be printed to prompt the user.
1924 - prompt(''): a string to be printed to prompt the user.
1907
1925
1908 - continue_prompt(False): whether this line is the first one or a
1926 - continue_prompt(False): whether this line is the first one or a
1909 continuation in a sequence of inputs.
1927 continuation in a sequence of inputs.
1910 """
1928 """
1911
1929
1912 try:
1930 try:
1913 line = raw_input_original(prompt)
1931 line = raw_input_original(prompt)
1914 except ValueError:
1932 except ValueError:
1915 warn("\n********\nYou or a %run:ed script called sys.stdin.close() or sys.stdout.close()!\nExiting IPython!")
1933 warn("\n********\nYou or a %run:ed script called sys.stdin.close() or sys.stdout.close()!\nExiting IPython!")
1916 self.exit_now = True
1934 self.exit_now = True
1917 return ""
1935 return ""
1918
1936
1919
1937
1920 # Try to be reasonably smart about not re-indenting pasted input more
1938 # Try to be reasonably smart about not re-indenting pasted input more
1921 # than necessary. We do this by trimming out the auto-indent initial
1939 # than necessary. We do this by trimming out the auto-indent initial
1922 # spaces, if the user's actual input started itself with whitespace.
1940 # spaces, if the user's actual input started itself with whitespace.
1923 #debugx('self.buffer[-1]')
1941 #debugx('self.buffer[-1]')
1924
1942
1925 if self.autoindent:
1943 if self.autoindent:
1926 if num_ini_spaces(line) > self.indent_current_nsp:
1944 if num_ini_spaces(line) > self.indent_current_nsp:
1927 line = line[self.indent_current_nsp:]
1945 line = line[self.indent_current_nsp:]
1928 self.indent_current_nsp = 0
1946 self.indent_current_nsp = 0
1929
1947
1930 # store the unfiltered input before the user has any chance to modify
1948 # store the unfiltered input before the user has any chance to modify
1931 # it.
1949 # it.
1932 if line.strip():
1950 if line.strip():
1933 if continue_prompt:
1951 if continue_prompt:
1934 self.input_hist_raw[-1] += '%s\n' % line
1952 self.input_hist_raw[-1] += '%s\n' % line
1935 if self.has_readline: # and some config option is set?
1953 if self.has_readline: # and some config option is set?
1936 try:
1954 try:
1937 histlen = self.readline.get_current_history_length()
1955 histlen = self.readline.get_current_history_length()
1938 newhist = self.input_hist_raw[-1].rstrip()
1956 newhist = self.input_hist_raw[-1].rstrip()
1939 self.readline.remove_history_item(histlen-1)
1957 self.readline.remove_history_item(histlen-1)
1940 self.readline.replace_history_item(histlen-2,newhist)
1958 self.readline.replace_history_item(histlen-2,newhist)
1941 except AttributeError:
1959 except AttributeError:
1942 pass # re{move,place}_history_item are new in 2.4.
1960 pass # re{move,place}_history_item are new in 2.4.
1943 else:
1961 else:
1944 self.input_hist_raw.append('%s\n' % line)
1962 self.input_hist_raw.append('%s\n' % line)
1945
1963
1946 try:
1964 try:
1947 lineout = self.prefilter(line,continue_prompt)
1965 lineout = self.prefilter(line,continue_prompt)
1948 except:
1966 except:
1949 # blanket except, in case a user-defined prefilter crashes, so it
1967 # blanket except, in case a user-defined prefilter crashes, so it
1950 # can't take all of ipython with it.
1968 # can't take all of ipython with it.
1951 self.showtraceback()
1969 self.showtraceback()
1952 return ''
1970 return ''
1953 else:
1971 else:
1954 return lineout
1972 return lineout
1955
1973
1956 def split_user_input(self,line):
1974 def split_user_input(self,line):
1957 """Split user input into pre-char, function part and rest."""
1975 """Split user input into pre-char, function part and rest."""
1958
1976
1959 lsplit = self.line_split.match(line)
1977 lsplit = self.line_split.match(line)
1960 if lsplit is None: # no regexp match returns None
1978 if lsplit is None: # no regexp match returns None
1961 try:
1979 try:
1962 iFun,theRest = line.split(None,1)
1980 iFun,theRest = line.split(None,1)
1963 except ValueError:
1981 except ValueError:
1964 iFun,theRest = line,''
1982 iFun,theRest = line,''
1965 pre = re.match('^(\s*)(.*)',line).groups()[0]
1983 pre = re.match('^(\s*)(.*)',line).groups()[0]
1966 else:
1984 else:
1967 pre,iFun,theRest = lsplit.groups()
1985 pre,iFun,theRest = lsplit.groups()
1968
1986
1969 #print 'line:<%s>' % line # dbg
1987 #print 'line:<%s>' % line # dbg
1970 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
1988 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
1971 return pre,iFun.strip(),theRest
1989 return pre,iFun.strip(),theRest
1972
1990
1973 def _prefilter(self, line, continue_prompt):
1991 def _prefilter(self, line, continue_prompt):
1974 """Calls different preprocessors, depending on the form of line."""
1992 """Calls different preprocessors, depending on the form of line."""
1975
1993
1976 # All handlers *must* return a value, even if it's blank ('').
1994 # All handlers *must* return a value, even if it's blank ('').
1977
1995
1978 # Lines are NOT logged here. Handlers should process the line as
1996 # Lines are NOT logged here. Handlers should process the line as
1979 # needed, update the cache AND log it (so that the input cache array
1997 # needed, update the cache AND log it (so that the input cache array
1980 # stays synced).
1998 # stays synced).
1981
1999
1982 # This function is _very_ delicate, and since it's also the one which
2000 # This function is _very_ delicate, and since it's also the one which
1983 # determines IPython's response to user input, it must be as efficient
2001 # determines IPython's response to user input, it must be as efficient
1984 # as possible. For this reason it has _many_ returns in it, trying
2002 # as possible. For this reason it has _many_ returns in it, trying
1985 # always to exit as quickly as it can figure out what it needs to do.
2003 # always to exit as quickly as it can figure out what it needs to do.
1986
2004
1987 # This function is the main responsible for maintaining IPython's
2005 # This function is the main responsible for maintaining IPython's
1988 # behavior respectful of Python's semantics. So be _very_ careful if
2006 # behavior respectful of Python's semantics. So be _very_ careful if
1989 # making changes to anything here.
2007 # making changes to anything here.
1990
2008
1991 #.....................................................................
2009 #.....................................................................
1992 # Code begins
2010 # Code begins
1993
2011
1994 #if line.startswith('%crash'): raise RuntimeError,'Crash now!' # dbg
2012 #if line.startswith('%crash'): raise RuntimeError,'Crash now!' # dbg
1995
2013
1996 # save the line away in case we crash, so the post-mortem handler can
2014 # save the line away in case we crash, so the post-mortem handler can
1997 # record it
2015 # record it
1998 self._last_input_line = line
2016 self._last_input_line = line
1999
2017
2000 #print '***line: <%s>' % line # dbg
2018 #print '***line: <%s>' % line # dbg
2001
2019
2002 # the input history needs to track even empty lines
2020 # the input history needs to track even empty lines
2003 stripped = line.strip()
2021 stripped = line.strip()
2004
2022
2005 if not stripped:
2023 if not stripped:
2006 if not continue_prompt:
2024 if not continue_prompt:
2007 self.outputcache.prompt_count -= 1
2025 self.outputcache.prompt_count -= 1
2008 return self.handle_normal(line,continue_prompt)
2026 return self.handle_normal(line,continue_prompt)
2009 #return self.handle_normal('',continue_prompt)
2027 #return self.handle_normal('',continue_prompt)
2010
2028
2011 # print '***cont',continue_prompt # dbg
2029 # print '***cont',continue_prompt # dbg
2012 # special handlers are only allowed for single line statements
2030 # special handlers are only allowed for single line statements
2013 if continue_prompt and not self.rc.multi_line_specials:
2031 if continue_prompt and not self.rc.multi_line_specials:
2014 return self.handle_normal(line,continue_prompt)
2032 return self.handle_normal(line,continue_prompt)
2015
2033
2016
2034
2017 # For the rest, we need the structure of the input
2035 # For the rest, we need the structure of the input
2018 pre,iFun,theRest = self.split_user_input(line)
2036 pre,iFun,theRest = self.split_user_input(line)
2019
2037
2020 # See whether any pre-existing handler can take care of it
2038 # See whether any pre-existing handler can take care of it
2021
2039
2022 rewritten = self.hooks.input_prefilter(stripped)
2040 rewritten = self.hooks.input_prefilter(stripped)
2023 if rewritten != stripped: # ok, some prefilter did something
2041 if rewritten != stripped: # ok, some prefilter did something
2024 rewritten = pre + rewritten # add indentation
2042 rewritten = pre + rewritten # add indentation
2025 return self.handle_normal(rewritten)
2043 return self.handle_normal(rewritten)
2026
2044
2027 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2045 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2028
2046
2029 # First check for explicit escapes in the last/first character
2047 # First check for explicit escapes in the last/first character
2030 handler = None
2048 handler = None
2031 if line[-1] == self.ESC_HELP:
2049 if line[-1] == self.ESC_HELP:
2032 handler = self.esc_handlers.get(line[-1]) # the ? can be at the end
2050 handler = self.esc_handlers.get(line[-1]) # the ? can be at the end
2033 if handler is None:
2051 if handler is None:
2034 # look at the first character of iFun, NOT of line, so we skip
2052 # look at the first character of iFun, NOT of line, so we skip
2035 # leading whitespace in multiline input
2053 # leading whitespace in multiline input
2036 handler = self.esc_handlers.get(iFun[0:1])
2054 handler = self.esc_handlers.get(iFun[0:1])
2037 if handler is not None:
2055 if handler is not None:
2038 return handler(line,continue_prompt,pre,iFun,theRest)
2056 return handler(line,continue_prompt,pre,iFun,theRest)
2039 # Emacs ipython-mode tags certain input lines
2057 # Emacs ipython-mode tags certain input lines
2040 if line.endswith('# PYTHON-MODE'):
2058 if line.endswith('# PYTHON-MODE'):
2041 return self.handle_emacs(line,continue_prompt)
2059 return self.handle_emacs(line,continue_prompt)
2042
2060
2043 # Next, check if we can automatically execute this thing
2061 # Next, check if we can automatically execute this thing
2044
2062
2045 # Allow ! in multi-line statements if multi_line_specials is on:
2063 # Allow ! in multi-line statements if multi_line_specials is on:
2046 if continue_prompt and self.rc.multi_line_specials and \
2064 if continue_prompt and self.rc.multi_line_specials and \
2047 iFun.startswith(self.ESC_SHELL):
2065 iFun.startswith(self.ESC_SHELL):
2048 return self.handle_shell_escape(line,continue_prompt,
2066 return self.handle_shell_escape(line,continue_prompt,
2049 pre=pre,iFun=iFun,
2067 pre=pre,iFun=iFun,
2050 theRest=theRest)
2068 theRest=theRest)
2051
2069
2052 # Let's try to find if the input line is a magic fn
2070 # Let's try to find if the input line is a magic fn
2053 oinfo = None
2071 oinfo = None
2054 if hasattr(self,'magic_'+iFun):
2072 if hasattr(self,'magic_'+iFun):
2055 # WARNING: _ofind uses getattr(), so it can consume generators and
2073 # WARNING: _ofind uses getattr(), so it can consume generators and
2056 # cause other side effects.
2074 # cause other side effects.
2057 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2075 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2058 if oinfo['ismagic']:
2076 if oinfo['ismagic']:
2059 # Be careful not to call magics when a variable assignment is
2077 # Be careful not to call magics when a variable assignment is
2060 # being made (ls='hi', for example)
2078 # being made (ls='hi', for example)
2061 if self.rc.automagic and \
2079 if self.rc.automagic and \
2062 (len(theRest)==0 or theRest[0] not in '!=()<>,') and \
2080 (len(theRest)==0 or theRest[0] not in '!=()<>,') and \
2063 (self.rc.multi_line_specials or not continue_prompt):
2081 (self.rc.multi_line_specials or not continue_prompt):
2064 return self.handle_magic(line,continue_prompt,
2082 return self.handle_magic(line,continue_prompt,
2065 pre,iFun,theRest)
2083 pre,iFun,theRest)
2066 else:
2084 else:
2067 return self.handle_normal(line,continue_prompt)
2085 return self.handle_normal(line,continue_prompt)
2068
2086
2069 # If the rest of the line begins with an (in)equality, assginment or
2087 # If the rest of the line begins with an (in)equality, assginment or
2070 # function call, we should not call _ofind but simply execute it.
2088 # function call, we should not call _ofind but simply execute it.
2071 # This avoids spurious geattr() accesses on objects upon assignment.
2089 # This avoids spurious geattr() accesses on objects upon assignment.
2072 #
2090 #
2073 # It also allows users to assign to either alias or magic names true
2091 # It also allows users to assign to either alias or magic names true
2074 # python variables (the magic/alias systems always take second seat to
2092 # python variables (the magic/alias systems always take second seat to
2075 # true python code).
2093 # true python code).
2076 if theRest and theRest[0] in '!=()':
2094 if theRest and theRest[0] in '!=()':
2077 return self.handle_normal(line,continue_prompt)
2095 return self.handle_normal(line,continue_prompt)
2078
2096
2079 if oinfo is None:
2097 if oinfo is None:
2080 # let's try to ensure that _oinfo is ONLY called when autocall is
2098 # let's try to ensure that _oinfo is ONLY called when autocall is
2081 # on. Since it has inevitable potential side effects, at least
2099 # on. Since it has inevitable potential side effects, at least
2082 # having autocall off should be a guarantee to the user that no
2100 # having autocall off should be a guarantee to the user that no
2083 # weird things will happen.
2101 # weird things will happen.
2084
2102
2085 if self.rc.autocall:
2103 if self.rc.autocall:
2086 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2104 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2087 else:
2105 else:
2088 # in this case, all that's left is either an alias or
2106 # in this case, all that's left is either an alias or
2089 # processing the line normally.
2107 # processing the line normally.
2090 if iFun in self.alias_table:
2108 if iFun in self.alias_table:
2091 # if autocall is off, by not running _ofind we won't know
2109 # if autocall is off, by not running _ofind we won't know
2092 # whether the given name may also exist in one of the
2110 # whether the given name may also exist in one of the
2093 # user's namespace. At this point, it's best to do a
2111 # user's namespace. At this point, it's best to do a
2094 # quick check just to be sure that we don't let aliases
2112 # quick check just to be sure that we don't let aliases
2095 # shadow variables.
2113 # shadow variables.
2096 head = iFun.split('.',1)[0]
2114 head = iFun.split('.',1)[0]
2097 if head in self.user_ns or head in self.internal_ns \
2115 if head in self.user_ns or head in self.internal_ns \
2098 or head in __builtin__.__dict__:
2116 or head in __builtin__.__dict__:
2099 return self.handle_normal(line,continue_prompt)
2117 return self.handle_normal(line,continue_prompt)
2100 else:
2118 else:
2101 return self.handle_alias(line,continue_prompt,
2119 return self.handle_alias(line,continue_prompt,
2102 pre,iFun,theRest)
2120 pre,iFun,theRest)
2103
2121
2104 else:
2122 else:
2105 return self.handle_normal(line,continue_prompt)
2123 return self.handle_normal(line,continue_prompt)
2106
2124
2107 if not oinfo['found']:
2125 if not oinfo['found']:
2108 return self.handle_normal(line,continue_prompt)
2126 return self.handle_normal(line,continue_prompt)
2109 else:
2127 else:
2110 #print 'pre<%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2128 #print 'pre<%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2111 if oinfo['isalias']:
2129 if oinfo['isalias']:
2112 return self.handle_alias(line,continue_prompt,
2130 return self.handle_alias(line,continue_prompt,
2113 pre,iFun,theRest)
2131 pre,iFun,theRest)
2114
2132
2115 if (self.rc.autocall
2133 if (self.rc.autocall
2116 and
2134 and
2117 (
2135 (
2118 #only consider exclusion re if not "," or ";" autoquoting
2136 #only consider exclusion re if not "," or ";" autoquoting
2119 (pre == self.ESC_QUOTE or pre == self.ESC_QUOTE2
2137 (pre == self.ESC_QUOTE or pre == self.ESC_QUOTE2
2120 or pre == self.ESC_PAREN) or
2138 or pre == self.ESC_PAREN) or
2121 (not self.re_exclude_auto.match(theRest)))
2139 (not self.re_exclude_auto.match(theRest)))
2122 and
2140 and
2123 self.re_fun_name.match(iFun) and
2141 self.re_fun_name.match(iFun) and
2124 callable(oinfo['obj'])) :
2142 callable(oinfo['obj'])) :
2125 #print 'going auto' # dbg
2143 #print 'going auto' # dbg
2126 return self.handle_auto(line,continue_prompt,
2144 return self.handle_auto(line,continue_prompt,
2127 pre,iFun,theRest,oinfo['obj'])
2145 pre,iFun,theRest,oinfo['obj'])
2128 else:
2146 else:
2129 #print 'was callable?', callable(oinfo['obj']) # dbg
2147 #print 'was callable?', callable(oinfo['obj']) # dbg
2130 return self.handle_normal(line,continue_prompt)
2148 return self.handle_normal(line,continue_prompt)
2131
2149
2132 # If we get here, we have a normal Python line. Log and return.
2150 # If we get here, we have a normal Python line. Log and return.
2133 return self.handle_normal(line,continue_prompt)
2151 return self.handle_normal(line,continue_prompt)
2134
2152
2135 def _prefilter_dumb(self, line, continue_prompt):
2153 def _prefilter_dumb(self, line, continue_prompt):
2136 """simple prefilter function, for debugging"""
2154 """simple prefilter function, for debugging"""
2137 return self.handle_normal(line,continue_prompt)
2155 return self.handle_normal(line,continue_prompt)
2138
2156
2139
2157
2140 def multiline_prefilter(self, line, continue_prompt):
2158 def multiline_prefilter(self, line, continue_prompt):
2141 """ Run _prefilter for each line of input
2159 """ Run _prefilter for each line of input
2142
2160
2143 Covers cases where there are multiple lines in the user entry,
2161 Covers cases where there are multiple lines in the user entry,
2144 which is the case when the user goes back to a multiline history
2162 which is the case when the user goes back to a multiline history
2145 entry and presses enter.
2163 entry and presses enter.
2146
2164
2147 """
2165 """
2148 out = []
2166 out = []
2149 for l in line.rstrip('\n').split('\n'):
2167 for l in line.rstrip('\n').split('\n'):
2150 out.append(self._prefilter(l, continue_prompt))
2168 out.append(self._prefilter(l, continue_prompt))
2151 return '\n'.join(out)
2169 return '\n'.join(out)
2152
2170
2153 # Set the default prefilter() function (this can be user-overridden)
2171 # Set the default prefilter() function (this can be user-overridden)
2154 prefilter = multiline_prefilter
2172 prefilter = multiline_prefilter
2155
2173
2156 def handle_normal(self,line,continue_prompt=None,
2174 def handle_normal(self,line,continue_prompt=None,
2157 pre=None,iFun=None,theRest=None):
2175 pre=None,iFun=None,theRest=None):
2158 """Handle normal input lines. Use as a template for handlers."""
2176 """Handle normal input lines. Use as a template for handlers."""
2159
2177
2160 # With autoindent on, we need some way to exit the input loop, and I
2178 # With autoindent on, we need some way to exit the input loop, and I
2161 # don't want to force the user to have to backspace all the way to
2179 # don't want to force the user to have to backspace all the way to
2162 # clear the line. The rule will be in this case, that either two
2180 # clear the line. The rule will be in this case, that either two
2163 # lines of pure whitespace in a row, or a line of pure whitespace but
2181 # lines of pure whitespace in a row, or a line of pure whitespace but
2164 # of a size different to the indent level, will exit the input loop.
2182 # of a size different to the indent level, will exit the input loop.
2165
2183
2166 if (continue_prompt and self.autoindent and line.isspace() and
2184 if (continue_prompt and self.autoindent and line.isspace() and
2167 (0 < abs(len(line) - self.indent_current_nsp) <= 2 or
2185 (0 < abs(len(line) - self.indent_current_nsp) <= 2 or
2168 (self.buffer[-1]).isspace() )):
2186 (self.buffer[-1]).isspace() )):
2169 line = ''
2187 line = ''
2170
2188
2171 self.log(line,line,continue_prompt)
2189 self.log(line,line,continue_prompt)
2172 return line
2190 return line
2173
2191
2174 def handle_alias(self,line,continue_prompt=None,
2192 def handle_alias(self,line,continue_prompt=None,
2175 pre=None,iFun=None,theRest=None):
2193 pre=None,iFun=None,theRest=None):
2176 """Handle alias input lines. """
2194 """Handle alias input lines. """
2177
2195
2178 # pre is needed, because it carries the leading whitespace. Otherwise
2196 # pre is needed, because it carries the leading whitespace. Otherwise
2179 # aliases won't work in indented sections.
2197 # aliases won't work in indented sections.
2180 transformed = self.expand_aliases(iFun, theRest)
2198 transformed = self.expand_aliases(iFun, theRest)
2181 line_out = '%s_ip.system(%s)' % (pre, make_quoted_expr( transformed ))
2199 line_out = '%s_ip.system(%s)' % (pre, make_quoted_expr( transformed ))
2182 self.log(line,line_out,continue_prompt)
2200 self.log(line,line_out,continue_prompt)
2183 #print 'line out:',line_out # dbg
2201 #print 'line out:',line_out # dbg
2184 return line_out
2202 return line_out
2185
2203
2186 def handle_shell_escape(self, line, continue_prompt=None,
2204 def handle_shell_escape(self, line, continue_prompt=None,
2187 pre=None,iFun=None,theRest=None):
2205 pre=None,iFun=None,theRest=None):
2188 """Execute the line in a shell, empty return value"""
2206 """Execute the line in a shell, empty return value"""
2189
2207
2190 #print 'line in :', `line` # dbg
2208 #print 'line in :', `line` # dbg
2191 # Example of a special handler. Others follow a similar pattern.
2209 # Example of a special handler. Others follow a similar pattern.
2192 if line.lstrip().startswith('!!'):
2210 if line.lstrip().startswith('!!'):
2193 # rewrite iFun/theRest to properly hold the call to %sx and
2211 # rewrite iFun/theRest to properly hold the call to %sx and
2194 # the actual command to be executed, so handle_magic can work
2212 # the actual command to be executed, so handle_magic can work
2195 # correctly
2213 # correctly
2196 theRest = '%s %s' % (iFun[2:],theRest)
2214 theRest = '%s %s' % (iFun[2:],theRest)
2197 iFun = 'sx'
2215 iFun = 'sx'
2198 return self.handle_magic('%ssx %s' % (self.ESC_MAGIC,
2216 return self.handle_magic('%ssx %s' % (self.ESC_MAGIC,
2199 line.lstrip()[2:]),
2217 line.lstrip()[2:]),
2200 continue_prompt,pre,iFun,theRest)
2218 continue_prompt,pre,iFun,theRest)
2201 else:
2219 else:
2202 cmd=line.lstrip().lstrip('!')
2220 cmd=line.lstrip().lstrip('!')
2203 line_out = '%s_ip.system(%s)' % (pre,make_quoted_expr(cmd))
2221 line_out = '%s_ip.system(%s)' % (pre,make_quoted_expr(cmd))
2204 # update cache/log and return
2222 # update cache/log and return
2205 self.log(line,line_out,continue_prompt)
2223 self.log(line,line_out,continue_prompt)
2206 return line_out
2224 return line_out
2207
2225
2208 def handle_magic(self, line, continue_prompt=None,
2226 def handle_magic(self, line, continue_prompt=None,
2209 pre=None,iFun=None,theRest=None):
2227 pre=None,iFun=None,theRest=None):
2210 """Execute magic functions."""
2228 """Execute magic functions."""
2211
2229
2212
2230
2213 cmd = '%s_ip.magic(%s)' % (pre,make_quoted_expr(iFun + " " + theRest))
2231 cmd = '%s_ip.magic(%s)' % (pre,make_quoted_expr(iFun + " " + theRest))
2214 self.log(line,cmd,continue_prompt)
2232 self.log(line,cmd,continue_prompt)
2215 #print 'in handle_magic, cmd=<%s>' % cmd # dbg
2233 #print 'in handle_magic, cmd=<%s>' % cmd # dbg
2216 return cmd
2234 return cmd
2217
2235
2218 def handle_auto(self, line, continue_prompt=None,
2236 def handle_auto(self, line, continue_prompt=None,
2219 pre=None,iFun=None,theRest=None,obj=None):
2237 pre=None,iFun=None,theRest=None,obj=None):
2220 """Hande lines which can be auto-executed, quoting if requested."""
2238 """Hande lines which can be auto-executed, quoting if requested."""
2221
2239
2222 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2240 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2223
2241
2224 # This should only be active for single-line input!
2242 # This should only be active for single-line input!
2225 if continue_prompt:
2243 if continue_prompt:
2226 self.log(line,line,continue_prompt)
2244 self.log(line,line,continue_prompt)
2227 return line
2245 return line
2228
2246
2229 auto_rewrite = True
2247 auto_rewrite = True
2230
2248
2231 if pre == self.ESC_QUOTE:
2249 if pre == self.ESC_QUOTE:
2232 # Auto-quote splitting on whitespace
2250 # Auto-quote splitting on whitespace
2233 newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) )
2251 newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) )
2234 elif pre == self.ESC_QUOTE2:
2252 elif pre == self.ESC_QUOTE2:
2235 # Auto-quote whole string
2253 # Auto-quote whole string
2236 newcmd = '%s("%s")' % (iFun,theRest)
2254 newcmd = '%s("%s")' % (iFun,theRest)
2237 elif pre == self.ESC_PAREN:
2255 elif pre == self.ESC_PAREN:
2238 newcmd = '%s(%s)' % (iFun,",".join(theRest.split()))
2256 newcmd = '%s(%s)' % (iFun,",".join(theRest.split()))
2239 else:
2257 else:
2240 # Auto-paren.
2258 # Auto-paren.
2241 # We only apply it to argument-less calls if the autocall
2259 # We only apply it to argument-less calls if the autocall
2242 # parameter is set to 2. We only need to check that autocall is <
2260 # parameter is set to 2. We only need to check that autocall is <
2243 # 2, since this function isn't called unless it's at least 1.
2261 # 2, since this function isn't called unless it's at least 1.
2244 if not theRest and (self.rc.autocall < 2):
2262 if not theRest and (self.rc.autocall < 2):
2245 newcmd = '%s %s' % (iFun,theRest)
2263 newcmd = '%s %s' % (iFun,theRest)
2246 auto_rewrite = False
2264 auto_rewrite = False
2247 else:
2265 else:
2248 if theRest.startswith('['):
2266 if theRest.startswith('['):
2249 if hasattr(obj,'__getitem__'):
2267 if hasattr(obj,'__getitem__'):
2250 # Don't autocall in this case: item access for an object
2268 # Don't autocall in this case: item access for an object
2251 # which is BOTH callable and implements __getitem__.
2269 # which is BOTH callable and implements __getitem__.
2252 newcmd = '%s %s' % (iFun,theRest)
2270 newcmd = '%s %s' % (iFun,theRest)
2253 auto_rewrite = False
2271 auto_rewrite = False
2254 else:
2272 else:
2255 # if the object doesn't support [] access, go ahead and
2273 # if the object doesn't support [] access, go ahead and
2256 # autocall
2274 # autocall
2257 newcmd = '%s(%s)' % (iFun.rstrip(),theRest)
2275 newcmd = '%s(%s)' % (iFun.rstrip(),theRest)
2258 elif theRest.endswith(';'):
2276 elif theRest.endswith(';'):
2259 newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1])
2277 newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1])
2260 else:
2278 else:
2261 newcmd = '%s(%s)' % (iFun.rstrip(), theRest)
2279 newcmd = '%s(%s)' % (iFun.rstrip(), theRest)
2262
2280
2263 if auto_rewrite:
2281 if auto_rewrite:
2264 print >>Term.cout, self.outputcache.prompt1.auto_rewrite() + newcmd
2282 print >>Term.cout, self.outputcache.prompt1.auto_rewrite() + newcmd
2265 # log what is now valid Python, not the actual user input (without the
2283 # log what is now valid Python, not the actual user input (without the
2266 # final newline)
2284 # final newline)
2267 self.log(line,newcmd,continue_prompt)
2285 self.log(line,newcmd,continue_prompt)
2268 return newcmd
2286 return newcmd
2269
2287
2270 def handle_help(self, line, continue_prompt=None,
2288 def handle_help(self, line, continue_prompt=None,
2271 pre=None,iFun=None,theRest=None):
2289 pre=None,iFun=None,theRest=None):
2272 """Try to get some help for the object.
2290 """Try to get some help for the object.
2273
2291
2274 obj? or ?obj -> basic information.
2292 obj? or ?obj -> basic information.
2275 obj?? or ??obj -> more details.
2293 obj?? or ??obj -> more details.
2276 """
2294 """
2277
2295
2278 # We need to make sure that we don't process lines which would be
2296 # We need to make sure that we don't process lines which would be
2279 # otherwise valid python, such as "x=1 # what?"
2297 # otherwise valid python, such as "x=1 # what?"
2280 try:
2298 try:
2281 codeop.compile_command(line)
2299 codeop.compile_command(line)
2282 except SyntaxError:
2300 except SyntaxError:
2283 # We should only handle as help stuff which is NOT valid syntax
2301 # We should only handle as help stuff which is NOT valid syntax
2284 if line[0]==self.ESC_HELP:
2302 if line[0]==self.ESC_HELP:
2285 line = line[1:]
2303 line = line[1:]
2286 elif line[-1]==self.ESC_HELP:
2304 elif line[-1]==self.ESC_HELP:
2287 line = line[:-1]
2305 line = line[:-1]
2288 self.log(line,'#?'+line,continue_prompt)
2306 self.log(line,'#?'+line,continue_prompt)
2289 if line:
2307 if line:
2290 self.magic_pinfo(line)
2308 self.magic_pinfo(line)
2291 else:
2309 else:
2292 page(self.usage,screen_lines=self.rc.screen_length)
2310 page(self.usage,screen_lines=self.rc.screen_length)
2293 return '' # Empty string is needed here!
2311 return '' # Empty string is needed here!
2294 except:
2312 except:
2295 # Pass any other exceptions through to the normal handler
2313 # Pass any other exceptions through to the normal handler
2296 return self.handle_normal(line,continue_prompt)
2314 return self.handle_normal(line,continue_prompt)
2297 else:
2315 else:
2298 # If the code compiles ok, we should handle it normally
2316 # If the code compiles ok, we should handle it normally
2299 return self.handle_normal(line,continue_prompt)
2317 return self.handle_normal(line,continue_prompt)
2300
2318
2301 def getapi(self):
2319 def getapi(self):
2302 """ Get an IPApi object for this shell instance
2320 """ Get an IPApi object for this shell instance
2303
2321
2304 Getting an IPApi object is always preferable to accessing the shell
2322 Getting an IPApi object is always preferable to accessing the shell
2305 directly, but this holds true especially for extensions.
2323 directly, but this holds true especially for extensions.
2306
2324
2307 It should always be possible to implement an extension with IPApi
2325 It should always be possible to implement an extension with IPApi
2308 alone. If not, contact maintainer to request an addition.
2326 alone. If not, contact maintainer to request an addition.
2309
2327
2310 """
2328 """
2311 return self.api
2329 return self.api
2312
2330
2313 def handle_emacs(self,line,continue_prompt=None,
2331 def handle_emacs(self,line,continue_prompt=None,
2314 pre=None,iFun=None,theRest=None):
2332 pre=None,iFun=None,theRest=None):
2315 """Handle input lines marked by python-mode."""
2333 """Handle input lines marked by python-mode."""
2316
2334
2317 # Currently, nothing is done. Later more functionality can be added
2335 # Currently, nothing is done. Later more functionality can be added
2318 # here if needed.
2336 # here if needed.
2319
2337
2320 # The input cache shouldn't be updated
2338 # The input cache shouldn't be updated
2321
2339
2322 return line
2340 return line
2323
2341
2324 def mktempfile(self,data=None):
2342 def mktempfile(self,data=None):
2325 """Make a new tempfile and return its filename.
2343 """Make a new tempfile and return its filename.
2326
2344
2327 This makes a call to tempfile.mktemp, but it registers the created
2345 This makes a call to tempfile.mktemp, but it registers the created
2328 filename internally so ipython cleans it up at exit time.
2346 filename internally so ipython cleans it up at exit time.
2329
2347
2330 Optional inputs:
2348 Optional inputs:
2331
2349
2332 - data(None): if data is given, it gets written out to the temp file
2350 - data(None): if data is given, it gets written out to the temp file
2333 immediately, and the file is closed again."""
2351 immediately, and the file is closed again."""
2334
2352
2335 filename = tempfile.mktemp('.py','ipython_edit_')
2353 filename = tempfile.mktemp('.py','ipython_edit_')
2336 self.tempfiles.append(filename)
2354 self.tempfiles.append(filename)
2337
2355
2338 if data:
2356 if data:
2339 tmp_file = open(filename,'w')
2357 tmp_file = open(filename,'w')
2340 tmp_file.write(data)
2358 tmp_file.write(data)
2341 tmp_file.close()
2359 tmp_file.close()
2342 return filename
2360 return filename
2343
2361
2344 def write(self,data):
2362 def write(self,data):
2345 """Write a string to the default output"""
2363 """Write a string to the default output"""
2346 Term.cout.write(data)
2364 Term.cout.write(data)
2347
2365
2348 def write_err(self,data):
2366 def write_err(self,data):
2349 """Write a string to the default error output"""
2367 """Write a string to the default error output"""
2350 Term.cerr.write(data)
2368 Term.cerr.write(data)
2351
2369
2352 def exit(self):
2370 def exit(self):
2353 """Handle interactive exit.
2371 """Handle interactive exit.
2354
2372
2355 This method sets the exit_now attribute."""
2373 This method sets the exit_now attribute."""
2356
2374
2357 if self.rc.confirm_exit:
2375 if self.rc.confirm_exit:
2358 if self.ask_yes_no('Do you really want to exit ([y]/n)?','y'):
2376 if self.ask_yes_no('Do you really want to exit ([y]/n)?','y'):
2359 self.exit_now = True
2377 self.exit_now = True
2360 else:
2378 else:
2361 self.exit_now = True
2379 self.exit_now = True
2362
2380
2363 def safe_execfile(self,fname,*where,**kw):
2381 def safe_execfile(self,fname,*where,**kw):
2364 fname = os.path.expanduser(fname)
2382 fname = os.path.expanduser(fname)
2365
2383
2366 # find things also in current directory
2384 # find things also in current directory
2367 dname = os.path.dirname(fname)
2385 dname = os.path.dirname(fname)
2368 if not sys.path.count(dname):
2386 if not sys.path.count(dname):
2369 sys.path.append(dname)
2387 sys.path.append(dname)
2370
2388
2371 try:
2389 try:
2372 xfile = open(fname)
2390 xfile = open(fname)
2373 except:
2391 except:
2374 print >> Term.cerr, \
2392 print >> Term.cerr, \
2375 'Could not open file <%s> for safe execution.' % fname
2393 'Could not open file <%s> for safe execution.' % fname
2376 return None
2394 return None
2377
2395
2378 kw.setdefault('islog',0)
2396 kw.setdefault('islog',0)
2379 kw.setdefault('quiet',1)
2397 kw.setdefault('quiet',1)
2380 kw.setdefault('exit_ignore',0)
2398 kw.setdefault('exit_ignore',0)
2381 first = xfile.readline()
2399 first = xfile.readline()
2382 loghead = str(self.loghead_tpl).split('\n',1)[0].strip()
2400 loghead = str(self.loghead_tpl).split('\n',1)[0].strip()
2383 xfile.close()
2401 xfile.close()
2384 # line by line execution
2402 # line by line execution
2385 if first.startswith(loghead) or kw['islog']:
2403 if first.startswith(loghead) or kw['islog']:
2386 print 'Loading log file <%s> one line at a time...' % fname
2404 print 'Loading log file <%s> one line at a time...' % fname
2387 if kw['quiet']:
2405 if kw['quiet']:
2388 stdout_save = sys.stdout
2406 stdout_save = sys.stdout
2389 sys.stdout = StringIO.StringIO()
2407 sys.stdout = StringIO.StringIO()
2390 try:
2408 try:
2391 globs,locs = where[0:2]
2409 globs,locs = where[0:2]
2392 except:
2410 except:
2393 try:
2411 try:
2394 globs = locs = where[0]
2412 globs = locs = where[0]
2395 except:
2413 except:
2396 globs = locs = globals()
2414 globs = locs = globals()
2397 badblocks = []
2415 badblocks = []
2398
2416
2399 # we also need to identify indented blocks of code when replaying
2417 # we also need to identify indented blocks of code when replaying
2400 # logs and put them together before passing them to an exec
2418 # logs and put them together before passing them to an exec
2401 # statement. This takes a bit of regexp and look-ahead work in the
2419 # statement. This takes a bit of regexp and look-ahead work in the
2402 # file. It's easiest if we swallow the whole thing in memory
2420 # file. It's easiest if we swallow the whole thing in memory
2403 # first, and manually walk through the lines list moving the
2421 # first, and manually walk through the lines list moving the
2404 # counter ourselves.
2422 # counter ourselves.
2405 indent_re = re.compile('\s+\S')
2423 indent_re = re.compile('\s+\S')
2406 xfile = open(fname)
2424 xfile = open(fname)
2407 filelines = xfile.readlines()
2425 filelines = xfile.readlines()
2408 xfile.close()
2426 xfile.close()
2409 nlines = len(filelines)
2427 nlines = len(filelines)
2410 lnum = 0
2428 lnum = 0
2411 while lnum < nlines:
2429 while lnum < nlines:
2412 line = filelines[lnum]
2430 line = filelines[lnum]
2413 lnum += 1
2431 lnum += 1
2414 # don't re-insert logger status info into cache
2432 # don't re-insert logger status info into cache
2415 if line.startswith('#log#'):
2433 if line.startswith('#log#'):
2416 continue
2434 continue
2417 else:
2435 else:
2418 # build a block of code (maybe a single line) for execution
2436 # build a block of code (maybe a single line) for execution
2419 block = line
2437 block = line
2420 try:
2438 try:
2421 next = filelines[lnum] # lnum has already incremented
2439 next = filelines[lnum] # lnum has already incremented
2422 except:
2440 except:
2423 next = None
2441 next = None
2424 while next and indent_re.match(next):
2442 while next and indent_re.match(next):
2425 block += next
2443 block += next
2426 lnum += 1
2444 lnum += 1
2427 try:
2445 try:
2428 next = filelines[lnum]
2446 next = filelines[lnum]
2429 except:
2447 except:
2430 next = None
2448 next = None
2431 # now execute the block of one or more lines
2449 # now execute the block of one or more lines
2432 try:
2450 try:
2433 exec block in globs,locs
2451 exec block in globs,locs
2434 except SystemExit:
2452 except SystemExit:
2435 pass
2453 pass
2436 except:
2454 except:
2437 badblocks.append(block.rstrip())
2455 badblocks.append(block.rstrip())
2438 if kw['quiet']: # restore stdout
2456 if kw['quiet']: # restore stdout
2439 sys.stdout.close()
2457 sys.stdout.close()
2440 sys.stdout = stdout_save
2458 sys.stdout = stdout_save
2441 print 'Finished replaying log file <%s>' % fname
2459 print 'Finished replaying log file <%s>' % fname
2442 if badblocks:
2460 if badblocks:
2443 print >> sys.stderr, ('\nThe following lines/blocks in file '
2461 print >> sys.stderr, ('\nThe following lines/blocks in file '
2444 '<%s> reported errors:' % fname)
2462 '<%s> reported errors:' % fname)
2445
2463
2446 for badline in badblocks:
2464 for badline in badblocks:
2447 print >> sys.stderr, badline
2465 print >> sys.stderr, badline
2448 else: # regular file execution
2466 else: # regular file execution
2449 try:
2467 try:
2450 execfile(fname,*where)
2468 execfile(fname,*where)
2451 except SyntaxError:
2469 except SyntaxError:
2452 self.showsyntaxerror()
2470 self.showsyntaxerror()
2453 warn('Failure executing file: <%s>' % fname)
2471 warn('Failure executing file: <%s>' % fname)
2454 except SystemExit,status:
2472 except SystemExit,status:
2455 if not kw['exit_ignore']:
2473 if not kw['exit_ignore']:
2456 self.showtraceback()
2474 self.showtraceback()
2457 warn('Failure executing file: <%s>' % fname)
2475 warn('Failure executing file: <%s>' % fname)
2458 except:
2476 except:
2459 self.showtraceback()
2477 self.showtraceback()
2460 warn('Failure executing file: <%s>' % fname)
2478 warn('Failure executing file: <%s>' % fname)
2461
2479
2462 #************************* end of file <iplib.py> *****************************
2480 #************************* end of file <iplib.py> *****************************
@@ -1,5868 +1,5872 b''
1 2006-11-02 Ville Vainio <vivainio@gmail.com>
1 2006-11-02 Ville Vainio <vivainio@gmail.com>
2
2
3 * ipy_stock_completers.py: Add %run and %cd completers.
3 * ipy_stock_completers.py: Add %run and %cd completers.
4
4
5 * completer.py: Try running custom completer for both
5 * completer.py: Try running custom completer for both
6 "foo" and "%foo" if the command is just "foo". Ignore case
6 "foo" and "%foo" if the command is just "foo". Ignore case
7 when filtering possible completions.
7 when filtering possible completions.
8
8
9 * UserConfig/ipy_user_conf.py: install stock completers as default
9 * UserConfig/ipy_user_conf.py: install stock completers as default
10
10
11 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
12 simplified readline history save / restore through a wrapper
13 function
14
11
15
12 2006-10-31 Ville Vainio <vivainio@gmail.com>
16 2006-10-31 Ville Vainio <vivainio@gmail.com>
13
17
14 * strdispatch.py, completer.py, ipy_stock_completers.py:
18 * strdispatch.py, completer.py, ipy_stock_completers.py:
15 Allow str_key ("command") in completer hooks. Implement
19 Allow str_key ("command") in completer hooks. Implement
16 trivial completer for 'import' (stdlib modules only). Rename
20 trivial completer for 'import' (stdlib modules only). Rename
17 ipy_linux_package_managers.py to ipy_stock_completers.py.
21 ipy_linux_package_managers.py to ipy_stock_completers.py.
18 SVN completer.
22 SVN completer.
19
23
20 * Extensions/ledit.py: %magic line editor for easily and
24 * Extensions/ledit.py: %magic line editor for easily and
21 incrementally manipulating lists of strings. The magic command
25 incrementally manipulating lists of strings. The magic command
22 name is %led.
26 name is %led.
23
27
24 2006-10-30 Ville Vainio <vivainio@gmail.com>
28 2006-10-30 Ville Vainio <vivainio@gmail.com>
25
29
26 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
30 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
27 Bernsteins's patches for pydb integration.
31 Bernsteins's patches for pydb integration.
28 http://bashdb.sourceforge.net/pydb/
32 http://bashdb.sourceforge.net/pydb/
29
33
30 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
34 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
31 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
35 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
32 custom completer hook to allow the users to implement their own
36 custom completer hook to allow the users to implement their own
33 completers. See ipy_linux_package_managers.py for example. The
37 completers. See ipy_linux_package_managers.py for example. The
34 hook name is 'complete_command'.
38 hook name is 'complete_command'.
35
39
36 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
40 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
37
41
38 * IPython/UserConfig/ipythonrc-scipy: minor clenaups to remove old
42 * IPython/UserConfig/ipythonrc-scipy: minor clenaups to remove old
39 Numeric leftovers.
43 Numeric leftovers.
40
44
41 * ipython.el (py-execute-region): apply Stefan's patch to fix
45 * ipython.el (py-execute-region): apply Stefan's patch to fix
42 garbled results if the python shell hasn't been previously started.
46 garbled results if the python shell hasn't been previously started.
43
47
44 * IPython/genutils.py (arg_split): moved to genutils, since it's a
48 * IPython/genutils.py (arg_split): moved to genutils, since it's a
45 pretty generic function and useful for other things.
49 pretty generic function and useful for other things.
46
50
47 * IPython/OInspect.py (getsource): Add customizable source
51 * IPython/OInspect.py (getsource): Add customizable source
48 extractor. After a request/patch form W. Stein (SAGE).
52 extractor. After a request/patch form W. Stein (SAGE).
49
53
50 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
54 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
51 window size to a more reasonable value from what pexpect does,
55 window size to a more reasonable value from what pexpect does,
52 since their choice causes wrapping bugs with long input lines.
56 since their choice causes wrapping bugs with long input lines.
53
57
54 2006-10-28 Ville Vainio <vivainio@gmail.com>
58 2006-10-28 Ville Vainio <vivainio@gmail.com>
55
59
56 * Magic.py (%run): Save and restore the readline history from
60 * Magic.py (%run): Save and restore the readline history from
57 file around %run commands to prevent side effects from
61 file around %run commands to prevent side effects from
58 %runned programs that might use readline (e.g. pydb).
62 %runned programs that might use readline (e.g. pydb).
59
63
60 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
64 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
61 invoking the pydb enhanced debugger.
65 invoking the pydb enhanced debugger.
62
66
63 2006-10-23 Walter Doerwald <walter@livinglogic.de>
67 2006-10-23 Walter Doerwald <walter@livinglogic.de>
64
68
65 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
69 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
66 call the base class method and propagate the return value to
70 call the base class method and propagate the return value to
67 ifile. This is now done by path itself.
71 ifile. This is now done by path itself.
68
72
69 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
73 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
70
74
71 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
75 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
72 api: set_crash_handler(), to expose the ability to change the
76 api: set_crash_handler(), to expose the ability to change the
73 internal crash handler.
77 internal crash handler.
74
78
75 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
79 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
76 the various parameters of the crash handler so that apps using
80 the various parameters of the crash handler so that apps using
77 IPython as their engine can customize crash handling. Ipmlemented
81 IPython as their engine can customize crash handling. Ipmlemented
78 at the request of SAGE.
82 at the request of SAGE.
79
83
80 2006-10-14 Ville Vainio <vivainio@gmail.com>
84 2006-10-14 Ville Vainio <vivainio@gmail.com>
81
85
82 * Magic.py, ipython.el: applied first "safe" part of Rocky
86 * Magic.py, ipython.el: applied first "safe" part of Rocky
83 Bernstein's patch set for pydb integration.
87 Bernstein's patch set for pydb integration.
84
88
85 * Magic.py (%unalias, %alias): %store'd aliases can now be
89 * Magic.py (%unalias, %alias): %store'd aliases can now be
86 removed with '%unalias'. %alias w/o args now shows most
90 removed with '%unalias'. %alias w/o args now shows most
87 interesting (stored / manually defined) aliases last
91 interesting (stored / manually defined) aliases last
88 where they catch the eye w/o scrolling.
92 where they catch the eye w/o scrolling.
89
93
90 * Magic.py (%rehashx), ext_rehashdir.py: files with
94 * Magic.py (%rehashx), ext_rehashdir.py: files with
91 'py' extension are always considered executable, even
95 'py' extension are always considered executable, even
92 when not in PATHEXT environment variable.
96 when not in PATHEXT environment variable.
93
97
94 2006-10-12 Ville Vainio <vivainio@gmail.com>
98 2006-10-12 Ville Vainio <vivainio@gmail.com>
95
99
96 * jobctrl.py: Add new "jobctrl" extension for spawning background
100 * jobctrl.py: Add new "jobctrl" extension for spawning background
97 processes with "&find /". 'import jobctrl' to try it out. Requires
101 processes with "&find /". 'import jobctrl' to try it out. Requires
98 'subprocess' module, standard in python 2.4+.
102 'subprocess' module, standard in python 2.4+.
99
103
100 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
104 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
101 so if foo -> bar and bar -> baz, then foo -> baz.
105 so if foo -> bar and bar -> baz, then foo -> baz.
102
106
103 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
107 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
104
108
105 * IPython/Magic.py (Magic.parse_options): add a new posix option
109 * IPython/Magic.py (Magic.parse_options): add a new posix option
106 to allow parsing of input args in magics that doesn't strip quotes
110 to allow parsing of input args in magics that doesn't strip quotes
107 (if posix=False). This also closes %timeit bug reported by
111 (if posix=False). This also closes %timeit bug reported by
108 Stefan.
112 Stefan.
109
113
110 2006-10-03 Ville Vainio <vivainio@gmail.com>
114 2006-10-03 Ville Vainio <vivainio@gmail.com>
111
115
112 * iplib.py (raw_input, interact): Return ValueError catching for
116 * iplib.py (raw_input, interact): Return ValueError catching for
113 raw_input. Fixes infinite loop for sys.stdin.close() or
117 raw_input. Fixes infinite loop for sys.stdin.close() or
114 sys.stdout.close().
118 sys.stdout.close().
115
119
116 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
120 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
117
121
118 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
122 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
119 to help in handling doctests. irunner is now pretty useful for
123 to help in handling doctests. irunner is now pretty useful for
120 running standalone scripts and simulate a full interactive session
124 running standalone scripts and simulate a full interactive session
121 in a format that can be then pasted as a doctest.
125 in a format that can be then pasted as a doctest.
122
126
123 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
127 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
124 on top of the default (useless) ones. This also fixes the nasty
128 on top of the default (useless) ones. This also fixes the nasty
125 way in which 2.5's Quitter() exits (reverted [1785]).
129 way in which 2.5's Quitter() exits (reverted [1785]).
126
130
127 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
131 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
128 2.5.
132 2.5.
129
133
130 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
134 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
131 color scheme is updated as well when color scheme is changed
135 color scheme is updated as well when color scheme is changed
132 interactively.
136 interactively.
133
137
134 2006-09-27 Ville Vainio <vivainio@gmail.com>
138 2006-09-27 Ville Vainio <vivainio@gmail.com>
135
139
136 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
140 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
137 infinite loop and just exit. It's a hack, but will do for a while.
141 infinite loop and just exit. It's a hack, but will do for a while.
138
142
139 2006-08-25 Walter Doerwald <walter@livinglogic.de>
143 2006-08-25 Walter Doerwald <walter@livinglogic.de>
140
144
141 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
145 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
142 the constructor, this makes it possible to get a list of only directories
146 the constructor, this makes it possible to get a list of only directories
143 or only files.
147 or only files.
144
148
145 2006-08-12 Ville Vainio <vivainio@gmail.com>
149 2006-08-12 Ville Vainio <vivainio@gmail.com>
146
150
147 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
151 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
148 they broke unittest
152 they broke unittest
149
153
150 2006-08-11 Ville Vainio <vivainio@gmail.com>
154 2006-08-11 Ville Vainio <vivainio@gmail.com>
151
155
152 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
156 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
153 by resolving issue properly, i.e. by inheriting FakeModule
157 by resolving issue properly, i.e. by inheriting FakeModule
154 from types.ModuleType. Pickling ipython interactive data
158 from types.ModuleType. Pickling ipython interactive data
155 should still work as usual (testing appreciated).
159 should still work as usual (testing appreciated).
156
160
157 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
161 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
158
162
159 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
163 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
160 running under python 2.3 with code from 2.4 to fix a bug with
164 running under python 2.3 with code from 2.4 to fix a bug with
161 help(). Reported by the Debian maintainers, Norbert Tretkowski
165 help(). Reported by the Debian maintainers, Norbert Tretkowski
162 <norbert-AT-tretkowski.de> and Alexandre Fayolle
166 <norbert-AT-tretkowski.de> and Alexandre Fayolle
163 <afayolle-AT-debian.org>.
167 <afayolle-AT-debian.org>.
164
168
165 2006-08-04 Walter Doerwald <walter@livinglogic.de>
169 2006-08-04 Walter Doerwald <walter@livinglogic.de>
166
170
167 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
171 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
168 (which was displaying "quit" twice).
172 (which was displaying "quit" twice).
169
173
170 2006-07-28 Walter Doerwald <walter@livinglogic.de>
174 2006-07-28 Walter Doerwald <walter@livinglogic.de>
171
175
172 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
176 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
173 the mode argument).
177 the mode argument).
174
178
175 2006-07-27 Walter Doerwald <walter@livinglogic.de>
179 2006-07-27 Walter Doerwald <walter@livinglogic.de>
176
180
177 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
181 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
178 not running under IPython.
182 not running under IPython.
179
183
180 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
184 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
181 and make it iterable (iterating over the attribute itself). Add two new
185 and make it iterable (iterating over the attribute itself). Add two new
182 magic strings for __xattrs__(): If the string starts with "-", the attribute
186 magic strings for __xattrs__(): If the string starts with "-", the attribute
183 will not be displayed in ibrowse's detail view (but it can still be
187 will not be displayed in ibrowse's detail view (but it can still be
184 iterated over). This makes it possible to add attributes that are large
188 iterated over). This makes it possible to add attributes that are large
185 lists or generator methods to the detail view. Replace magic attribute names
189 lists or generator methods to the detail view. Replace magic attribute names
186 and _attrname() and _getattr() with "descriptors": For each type of magic
190 and _attrname() and _getattr() with "descriptors": For each type of magic
187 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
191 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
188 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
192 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
189 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
193 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
190 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
194 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
191 are still supported.
195 are still supported.
192
196
193 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
197 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
194 fails in ibrowse.fetch(), the exception object is added as the last item
198 fails in ibrowse.fetch(), the exception object is added as the last item
195 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
199 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
196 a generator throws an exception midway through execution.
200 a generator throws an exception midway through execution.
197
201
198 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
202 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
199 encoding into methods.
203 encoding into methods.
200
204
201 2006-07-26 Ville Vainio <vivainio@gmail.com>
205 2006-07-26 Ville Vainio <vivainio@gmail.com>
202
206
203 * iplib.py: history now stores multiline input as single
207 * iplib.py: history now stores multiline input as single
204 history entries. Patch by Jorgen Cederlof.
208 history entries. Patch by Jorgen Cederlof.
205
209
206 2006-07-18 Walter Doerwald <walter@livinglogic.de>
210 2006-07-18 Walter Doerwald <walter@livinglogic.de>
207
211
208 * IPython/Extensions/ibrowse.py: Make cursor visible over
212 * IPython/Extensions/ibrowse.py: Make cursor visible over
209 non existing attributes.
213 non existing attributes.
210
214
211 2006-07-14 Walter Doerwald <walter@livinglogic.de>
215 2006-07-14 Walter Doerwald <walter@livinglogic.de>
212
216
213 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
217 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
214 error output of the running command doesn't mess up the screen.
218 error output of the running command doesn't mess up the screen.
215
219
216 2006-07-13 Walter Doerwald <walter@livinglogic.de>
220 2006-07-13 Walter Doerwald <walter@livinglogic.de>
217
221
218 * IPython/Extensions/ipipe.py (isort): Make isort usable without
222 * IPython/Extensions/ipipe.py (isort): Make isort usable without
219 argument. This sorts the items themselves.
223 argument. This sorts the items themselves.
220
224
221 2006-07-12 Walter Doerwald <walter@livinglogic.de>
225 2006-07-12 Walter Doerwald <walter@livinglogic.de>
222
226
223 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
227 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
224 Compile expression strings into code objects. This should speed
228 Compile expression strings into code objects. This should speed
225 up ifilter and friends somewhat.
229 up ifilter and friends somewhat.
226
230
227 2006-07-08 Ville Vainio <vivainio@gmail.com>
231 2006-07-08 Ville Vainio <vivainio@gmail.com>
228
232
229 * Magic.py: %cpaste now strips > from the beginning of lines
233 * Magic.py: %cpaste now strips > from the beginning of lines
230 to ease pasting quoted code from emails. Contributed by
234 to ease pasting quoted code from emails. Contributed by
231 Stefan van der Walt.
235 Stefan van der Walt.
232
236
233 2006-06-29 Ville Vainio <vivainio@gmail.com>
237 2006-06-29 Ville Vainio <vivainio@gmail.com>
234
238
235 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
239 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
236 mode, patch contributed by Darren Dale. NEEDS TESTING!
240 mode, patch contributed by Darren Dale. NEEDS TESTING!
237
241
238 2006-06-28 Walter Doerwald <walter@livinglogic.de>
242 2006-06-28 Walter Doerwald <walter@livinglogic.de>
239
243
240 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
244 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
241 a blue background. Fix fetching new display rows when the browser
245 a blue background. Fix fetching new display rows when the browser
242 scrolls more than a screenful (e.g. by using the goto command).
246 scrolls more than a screenful (e.g. by using the goto command).
243
247
244 2006-06-27 Ville Vainio <vivainio@gmail.com>
248 2006-06-27 Ville Vainio <vivainio@gmail.com>
245
249
246 * Magic.py (_inspect, _ofind) Apply David Huard's
250 * Magic.py (_inspect, _ofind) Apply David Huard's
247 patch for displaying the correct docstring for 'property'
251 patch for displaying the correct docstring for 'property'
248 attributes.
252 attributes.
249
253
250 2006-06-23 Walter Doerwald <walter@livinglogic.de>
254 2006-06-23 Walter Doerwald <walter@livinglogic.de>
251
255
252 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
256 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
253 commands into the methods implementing them.
257 commands into the methods implementing them.
254
258
255 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
259 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
256
260
257 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
261 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
258 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
262 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
259 autoindent support was authored by Jin Liu.
263 autoindent support was authored by Jin Liu.
260
264
261 2006-06-22 Walter Doerwald <walter@livinglogic.de>
265 2006-06-22 Walter Doerwald <walter@livinglogic.de>
262
266
263 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
267 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
264 for keymaps with a custom class that simplifies handling.
268 for keymaps with a custom class that simplifies handling.
265
269
266 2006-06-19 Walter Doerwald <walter@livinglogic.de>
270 2006-06-19 Walter Doerwald <walter@livinglogic.de>
267
271
268 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
272 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
269 resizing. This requires Python 2.5 to work.
273 resizing. This requires Python 2.5 to work.
270
274
271 2006-06-16 Walter Doerwald <walter@livinglogic.de>
275 2006-06-16 Walter Doerwald <walter@livinglogic.de>
272
276
273 * IPython/Extensions/ibrowse.py: Add two new commands to
277 * IPython/Extensions/ibrowse.py: Add two new commands to
274 ibrowse: "hideattr" (mapped to "h") hides the attribute under
278 ibrowse: "hideattr" (mapped to "h") hides the attribute under
275 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
279 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
276 attributes again. Remapped the help command to "?". Display
280 attributes again. Remapped the help command to "?". Display
277 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
281 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
278 as keys for the "home" and "end" commands. Add three new commands
282 as keys for the "home" and "end" commands. Add three new commands
279 to the input mode for "find" and friends: "delend" (CTRL-K)
283 to the input mode for "find" and friends: "delend" (CTRL-K)
280 deletes to the end of line. "incsearchup" searches upwards in the
284 deletes to the end of line. "incsearchup" searches upwards in the
281 command history for an input that starts with the text before the cursor.
285 command history for an input that starts with the text before the cursor.
282 "incsearchdown" does the same downwards. Removed a bogus mapping of
286 "incsearchdown" does the same downwards. Removed a bogus mapping of
283 the x key to "delete".
287 the x key to "delete".
284
288
285 2006-06-15 Ville Vainio <vivainio@gmail.com>
289 2006-06-15 Ville Vainio <vivainio@gmail.com>
286
290
287 * iplib.py, hooks.py: Added new generate_prompt hook that can be
291 * iplib.py, hooks.py: Added new generate_prompt hook that can be
288 used to create prompts dynamically, instead of the "old" way of
292 used to create prompts dynamically, instead of the "old" way of
289 assigning "magic" strings to prompt_in1 and prompt_in2. The old
293 assigning "magic" strings to prompt_in1 and prompt_in2. The old
290 way still works (it's invoked by the default hook), of course.
294 way still works (it's invoked by the default hook), of course.
291
295
292 * Prompts.py: added generate_output_prompt hook for altering output
296 * Prompts.py: added generate_output_prompt hook for altering output
293 prompt
297 prompt
294
298
295 * Release.py: Changed version string to 0.7.3.svn.
299 * Release.py: Changed version string to 0.7.3.svn.
296
300
297 2006-06-15 Walter Doerwald <walter@livinglogic.de>
301 2006-06-15 Walter Doerwald <walter@livinglogic.de>
298
302
299 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
303 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
300 the call to fetch() always tries to fetch enough data for at least one
304 the call to fetch() always tries to fetch enough data for at least one
301 full screen. This makes it possible to simply call moveto(0,0,True) in
305 full screen. This makes it possible to simply call moveto(0,0,True) in
302 the constructor. Fix typos and removed the obsolete goto attribute.
306 the constructor. Fix typos and removed the obsolete goto attribute.
303
307
304 2006-06-12 Ville Vainio <vivainio@gmail.com>
308 2006-06-12 Ville Vainio <vivainio@gmail.com>
305
309
306 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
310 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
307 allowing $variable interpolation within multiline statements,
311 allowing $variable interpolation within multiline statements,
308 though so far only with "sh" profile for a testing period.
312 though so far only with "sh" profile for a testing period.
309 The patch also enables splitting long commands with \ but it
313 The patch also enables splitting long commands with \ but it
310 doesn't work properly yet.
314 doesn't work properly yet.
311
315
312 2006-06-12 Walter Doerwald <walter@livinglogic.de>
316 2006-06-12 Walter Doerwald <walter@livinglogic.de>
313
317
314 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
318 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
315 input history and the position of the cursor in the input history for
319 input history and the position of the cursor in the input history for
316 the find, findbackwards and goto command.
320 the find, findbackwards and goto command.
317
321
318 2006-06-10 Walter Doerwald <walter@livinglogic.de>
322 2006-06-10 Walter Doerwald <walter@livinglogic.de>
319
323
320 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
324 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
321 implements the basic functionality of browser commands that require
325 implements the basic functionality of browser commands that require
322 input. Reimplement the goto, find and findbackwards commands as
326 input. Reimplement the goto, find and findbackwards commands as
323 subclasses of _CommandInput. Add an input history and keymaps to those
327 subclasses of _CommandInput. Add an input history and keymaps to those
324 commands. Add "\r" as a keyboard shortcut for the enterdefault and
328 commands. Add "\r" as a keyboard shortcut for the enterdefault and
325 execute commands.
329 execute commands.
326
330
327 2006-06-07 Ville Vainio <vivainio@gmail.com>
331 2006-06-07 Ville Vainio <vivainio@gmail.com>
328
332
329 * iplib.py: ipython mybatch.ipy exits ipython immediately after
333 * iplib.py: ipython mybatch.ipy exits ipython immediately after
330 running the batch files instead of leaving the session open.
334 running the batch files instead of leaving the session open.
331
335
332 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
336 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
333
337
334 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
338 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
335 the original fix was incomplete. Patch submitted by W. Maier.
339 the original fix was incomplete. Patch submitted by W. Maier.
336
340
337 2006-06-07 Ville Vainio <vivainio@gmail.com>
341 2006-06-07 Ville Vainio <vivainio@gmail.com>
338
342
339 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
343 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
340 Confirmation prompts can be supressed by 'quiet' option.
344 Confirmation prompts can be supressed by 'quiet' option.
341 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
345 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
342
346
343 2006-06-06 *** Released version 0.7.2
347 2006-06-06 *** Released version 0.7.2
344
348
345 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
349 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
346
350
347 * IPython/Release.py (version): Made 0.7.2 final for release.
351 * IPython/Release.py (version): Made 0.7.2 final for release.
348 Repo tagged and release cut.
352 Repo tagged and release cut.
349
353
350 2006-06-05 Ville Vainio <vivainio@gmail.com>
354 2006-06-05 Ville Vainio <vivainio@gmail.com>
351
355
352 * Magic.py (magic_rehashx): Honor no_alias list earlier in
356 * Magic.py (magic_rehashx): Honor no_alias list earlier in
353 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
357 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
354
358
355 * upgrade_dir.py: try import 'path' module a bit harder
359 * upgrade_dir.py: try import 'path' module a bit harder
356 (for %upgrade)
360 (for %upgrade)
357
361
358 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
362 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
359
363
360 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
364 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
361 instead of looping 20 times.
365 instead of looping 20 times.
362
366
363 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
367 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
364 correctly at initialization time. Bug reported by Krishna Mohan
368 correctly at initialization time. Bug reported by Krishna Mohan
365 Gundu <gkmohan-AT-gmail.com> on the user list.
369 Gundu <gkmohan-AT-gmail.com> on the user list.
366
370
367 * IPython/Release.py (version): Mark 0.7.2 version to start
371 * IPython/Release.py (version): Mark 0.7.2 version to start
368 testing for release on 06/06.
372 testing for release on 06/06.
369
373
370 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
374 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
371
375
372 * scripts/irunner: thin script interface so users don't have to
376 * scripts/irunner: thin script interface so users don't have to
373 find the module and call it as an executable, since modules rarely
377 find the module and call it as an executable, since modules rarely
374 live in people's PATH.
378 live in people's PATH.
375
379
376 * IPython/irunner.py (InteractiveRunner.__init__): added
380 * IPython/irunner.py (InteractiveRunner.__init__): added
377 delaybeforesend attribute to control delays with newer versions of
381 delaybeforesend attribute to control delays with newer versions of
378 pexpect. Thanks to detailed help from pexpect's author, Noah
382 pexpect. Thanks to detailed help from pexpect's author, Noah
379 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
383 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
380 correctly (it works in NoColor mode).
384 correctly (it works in NoColor mode).
381
385
382 * IPython/iplib.py (handle_normal): fix nasty crash reported on
386 * IPython/iplib.py (handle_normal): fix nasty crash reported on
383 SAGE list, from improper log() calls.
387 SAGE list, from improper log() calls.
384
388
385 2006-05-31 Ville Vainio <vivainio@gmail.com>
389 2006-05-31 Ville Vainio <vivainio@gmail.com>
386
390
387 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
391 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
388 with args in parens to work correctly with dirs that have spaces.
392 with args in parens to work correctly with dirs that have spaces.
389
393
390 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
394 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
391
395
392 * IPython/Logger.py (Logger.logstart): add option to log raw input
396 * IPython/Logger.py (Logger.logstart): add option to log raw input
393 instead of the processed one. A -r flag was added to the
397 instead of the processed one. A -r flag was added to the
394 %logstart magic used for controlling logging.
398 %logstart magic used for controlling logging.
395
399
396 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
400 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
397
401
398 * IPython/iplib.py (InteractiveShell.__init__): add check for the
402 * IPython/iplib.py (InteractiveShell.__init__): add check for the
399 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
403 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
400 recognize the option. After a bug report by Will Maier. This
404 recognize the option. After a bug report by Will Maier. This
401 closes #64 (will do it after confirmation from W. Maier).
405 closes #64 (will do it after confirmation from W. Maier).
402
406
403 * IPython/irunner.py: New module to run scripts as if manually
407 * IPython/irunner.py: New module to run scripts as if manually
404 typed into an interactive environment, based on pexpect. After a
408 typed into an interactive environment, based on pexpect. After a
405 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
409 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
406 ipython-user list. Simple unittests in the tests/ directory.
410 ipython-user list. Simple unittests in the tests/ directory.
407
411
408 * tools/release: add Will Maier, OpenBSD port maintainer, to
412 * tools/release: add Will Maier, OpenBSD port maintainer, to
409 recepients list. We are now officially part of the OpenBSD ports:
413 recepients list. We are now officially part of the OpenBSD ports:
410 http://www.openbsd.org/ports.html ! Many thanks to Will for the
414 http://www.openbsd.org/ports.html ! Many thanks to Will for the
411 work.
415 work.
412
416
413 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
417 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
414
418
415 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
419 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
416 so that it doesn't break tkinter apps.
420 so that it doesn't break tkinter apps.
417
421
418 * IPython/iplib.py (_prefilter): fix bug where aliases would
422 * IPython/iplib.py (_prefilter): fix bug where aliases would
419 shadow variables when autocall was fully off. Reported by SAGE
423 shadow variables when autocall was fully off. Reported by SAGE
420 author William Stein.
424 author William Stein.
421
425
422 * IPython/OInspect.py (Inspector.__init__): add a flag to control
426 * IPython/OInspect.py (Inspector.__init__): add a flag to control
423 at what detail level strings are computed when foo? is requested.
427 at what detail level strings are computed when foo? is requested.
424 This allows users to ask for example that the string form of an
428 This allows users to ask for example that the string form of an
425 object is only computed when foo?? is called, or even never, by
429 object is only computed when foo?? is called, or even never, by
426 setting the object_info_string_level >= 2 in the configuration
430 setting the object_info_string_level >= 2 in the configuration
427 file. This new option has been added and documented. After a
431 file. This new option has been added and documented. After a
428 request by SAGE to be able to control the printing of very large
432 request by SAGE to be able to control the printing of very large
429 objects more easily.
433 objects more easily.
430
434
431 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
435 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
432
436
433 * IPython/ipmaker.py (make_IPython): remove the ipython call path
437 * IPython/ipmaker.py (make_IPython): remove the ipython call path
434 from sys.argv, to be 100% consistent with how Python itself works
438 from sys.argv, to be 100% consistent with how Python itself works
435 (as seen for example with python -i file.py). After a bug report
439 (as seen for example with python -i file.py). After a bug report
436 by Jeffrey Collins.
440 by Jeffrey Collins.
437
441
438 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
442 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
439 nasty bug which was preventing custom namespaces with -pylab,
443 nasty bug which was preventing custom namespaces with -pylab,
440 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
444 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
441 compatibility (long gone from mpl).
445 compatibility (long gone from mpl).
442
446
443 * IPython/ipapi.py (make_session): name change: create->make. We
447 * IPython/ipapi.py (make_session): name change: create->make. We
444 use make in other places (ipmaker,...), it's shorter and easier to
448 use make in other places (ipmaker,...), it's shorter and easier to
445 type and say, etc. I'm trying to clean things before 0.7.2 so
449 type and say, etc. I'm trying to clean things before 0.7.2 so
446 that I can keep things stable wrt to ipapi in the chainsaw branch.
450 that I can keep things stable wrt to ipapi in the chainsaw branch.
447
451
448 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
452 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
449 python-mode recognizes our debugger mode. Add support for
453 python-mode recognizes our debugger mode. Add support for
450 autoindent inside (X)emacs. After a patch sent in by Jin Liu
454 autoindent inside (X)emacs. After a patch sent in by Jin Liu
451 <m.liu.jin-AT-gmail.com> originally written by
455 <m.liu.jin-AT-gmail.com> originally written by
452 doxgen-AT-newsmth.net (with minor modifications for xemacs
456 doxgen-AT-newsmth.net (with minor modifications for xemacs
453 compatibility)
457 compatibility)
454
458
455 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
459 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
456 tracebacks when walking the stack so that the stack tracking system
460 tracebacks when walking the stack so that the stack tracking system
457 in emacs' python-mode can identify the frames correctly.
461 in emacs' python-mode can identify the frames correctly.
458
462
459 * IPython/ipmaker.py (make_IPython): make the internal (and
463 * IPython/ipmaker.py (make_IPython): make the internal (and
460 default config) autoedit_syntax value false by default. Too many
464 default config) autoedit_syntax value false by default. Too many
461 users have complained to me (both on and off-list) about problems
465 users have complained to me (both on and off-list) about problems
462 with this option being on by default, so I'm making it default to
466 with this option being on by default, so I'm making it default to
463 off. It can still be enabled by anyone via the usual mechanisms.
467 off. It can still be enabled by anyone via the usual mechanisms.
464
468
465 * IPython/completer.py (Completer.attr_matches): add support for
469 * IPython/completer.py (Completer.attr_matches): add support for
466 PyCrust-style _getAttributeNames magic method. Patch contributed
470 PyCrust-style _getAttributeNames magic method. Patch contributed
467 by <mscott-AT-goldenspud.com>. Closes #50.
471 by <mscott-AT-goldenspud.com>. Closes #50.
468
472
469 * IPython/iplib.py (InteractiveShell.__init__): remove the
473 * IPython/iplib.py (InteractiveShell.__init__): remove the
470 deletion of exit/quit from __builtin__, which can break
474 deletion of exit/quit from __builtin__, which can break
471 third-party tools like the Zope debugging console. The
475 third-party tools like the Zope debugging console. The
472 %exit/%quit magics remain. In general, it's probably a good idea
476 %exit/%quit magics remain. In general, it's probably a good idea
473 not to delete anything from __builtin__, since we never know what
477 not to delete anything from __builtin__, since we never know what
474 that will break. In any case, python now (for 2.5) will support
478 that will break. In any case, python now (for 2.5) will support
475 'real' exit/quit, so this issue is moot. Closes #55.
479 'real' exit/quit, so this issue is moot. Closes #55.
476
480
477 * IPython/genutils.py (with_obj): rename the 'with' function to
481 * IPython/genutils.py (with_obj): rename the 'with' function to
478 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
482 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
479 becomes a language keyword. Closes #53.
483 becomes a language keyword. Closes #53.
480
484
481 * IPython/FakeModule.py (FakeModule.__init__): add a proper
485 * IPython/FakeModule.py (FakeModule.__init__): add a proper
482 __file__ attribute to this so it fools more things into thinking
486 __file__ attribute to this so it fools more things into thinking
483 it is a real module. Closes #59.
487 it is a real module. Closes #59.
484
488
485 * IPython/Magic.py (magic_edit): add -n option to open the editor
489 * IPython/Magic.py (magic_edit): add -n option to open the editor
486 at a specific line number. After a patch by Stefan van der Walt.
490 at a specific line number. After a patch by Stefan van der Walt.
487
491
488 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
492 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
489
493
490 * IPython/iplib.py (edit_syntax_error): fix crash when for some
494 * IPython/iplib.py (edit_syntax_error): fix crash when for some
491 reason the file could not be opened. After automatic crash
495 reason the file could not be opened. After automatic crash
492 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
496 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
493 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
497 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
494 (_should_recompile): Don't fire editor if using %bg, since there
498 (_should_recompile): Don't fire editor if using %bg, since there
495 is no file in the first place. From the same report as above.
499 is no file in the first place. From the same report as above.
496 (raw_input): protect against faulty third-party prefilters. After
500 (raw_input): protect against faulty third-party prefilters. After
497 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
501 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
498 while running under SAGE.
502 while running under SAGE.
499
503
500 2006-05-23 Ville Vainio <vivainio@gmail.com>
504 2006-05-23 Ville Vainio <vivainio@gmail.com>
501
505
502 * ipapi.py: Stripped down ip.to_user_ns() to work only as
506 * ipapi.py: Stripped down ip.to_user_ns() to work only as
503 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
507 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
504 now returns None (again), unless dummy is specifically allowed by
508 now returns None (again), unless dummy is specifically allowed by
505 ipapi.get(allow_dummy=True).
509 ipapi.get(allow_dummy=True).
506
510
507 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
511 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
508
512
509 * IPython: remove all 2.2-compatibility objects and hacks from
513 * IPython: remove all 2.2-compatibility objects and hacks from
510 everywhere, since we only support 2.3 at this point. Docs
514 everywhere, since we only support 2.3 at this point. Docs
511 updated.
515 updated.
512
516
513 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
517 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
514 Anything requiring extra validation can be turned into a Python
518 Anything requiring extra validation can be turned into a Python
515 property in the future. I used a property for the db one b/c
519 property in the future. I used a property for the db one b/c
516 there was a nasty circularity problem with the initialization
520 there was a nasty circularity problem with the initialization
517 order, which right now I don't have time to clean up.
521 order, which right now I don't have time to clean up.
518
522
519 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
523 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
520 another locking bug reported by Jorgen. I'm not 100% sure though,
524 another locking bug reported by Jorgen. I'm not 100% sure though,
521 so more testing is needed...
525 so more testing is needed...
522
526
523 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
527 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
524
528
525 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
529 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
526 local variables from any routine in user code (typically executed
530 local variables from any routine in user code (typically executed
527 with %run) directly into the interactive namespace. Very useful
531 with %run) directly into the interactive namespace. Very useful
528 when doing complex debugging.
532 when doing complex debugging.
529 (IPythonNotRunning): Changed the default None object to a dummy
533 (IPythonNotRunning): Changed the default None object to a dummy
530 whose attributes can be queried as well as called without
534 whose attributes can be queried as well as called without
531 exploding, to ease writing code which works transparently both in
535 exploding, to ease writing code which works transparently both in
532 and out of ipython and uses some of this API.
536 and out of ipython and uses some of this API.
533
537
534 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
538 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
535
539
536 * IPython/hooks.py (result_display): Fix the fact that our display
540 * IPython/hooks.py (result_display): Fix the fact that our display
537 hook was using str() instead of repr(), as the default python
541 hook was using str() instead of repr(), as the default python
538 console does. This had gone unnoticed b/c it only happened if
542 console does. This had gone unnoticed b/c it only happened if
539 %Pprint was off, but the inconsistency was there.
543 %Pprint was off, but the inconsistency was there.
540
544
541 2006-05-15 Ville Vainio <vivainio@gmail.com>
545 2006-05-15 Ville Vainio <vivainio@gmail.com>
542
546
543 * Oinspect.py: Only show docstring for nonexisting/binary files
547 * Oinspect.py: Only show docstring for nonexisting/binary files
544 when doing object??, closing ticket #62
548 when doing object??, closing ticket #62
545
549
546 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
550 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
547
551
548 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
552 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
549 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
553 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
550 was being released in a routine which hadn't checked if it had
554 was being released in a routine which hadn't checked if it had
551 been the one to acquire it.
555 been the one to acquire it.
552
556
553 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
557 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
554
558
555 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
559 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
556
560
557 2006-04-11 Ville Vainio <vivainio@gmail.com>
561 2006-04-11 Ville Vainio <vivainio@gmail.com>
558
562
559 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
563 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
560 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
564 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
561 prefilters, allowing stuff like magics and aliases in the file.
565 prefilters, allowing stuff like magics and aliases in the file.
562
566
563 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
567 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
564 added. Supported now are "%clear in" and "%clear out" (clear input and
568 added. Supported now are "%clear in" and "%clear out" (clear input and
565 output history, respectively). Also fixed CachedOutput.flush to
569 output history, respectively). Also fixed CachedOutput.flush to
566 properly flush the output cache.
570 properly flush the output cache.
567
571
568 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
572 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
569 half-success (and fail explicitly).
573 half-success (and fail explicitly).
570
574
571 2006-03-28 Ville Vainio <vivainio@gmail.com>
575 2006-03-28 Ville Vainio <vivainio@gmail.com>
572
576
573 * iplib.py: Fix quoting of aliases so that only argless ones
577 * iplib.py: Fix quoting of aliases so that only argless ones
574 are quoted
578 are quoted
575
579
576 2006-03-28 Ville Vainio <vivainio@gmail.com>
580 2006-03-28 Ville Vainio <vivainio@gmail.com>
577
581
578 * iplib.py: Quote aliases with spaces in the name.
582 * iplib.py: Quote aliases with spaces in the name.
579 "c:\program files\blah\bin" is now legal alias target.
583 "c:\program files\blah\bin" is now legal alias target.
580
584
581 * ext_rehashdir.py: Space no longer allowed as arg
585 * ext_rehashdir.py: Space no longer allowed as arg
582 separator, since space is legal in path names.
586 separator, since space is legal in path names.
583
587
584 2006-03-16 Ville Vainio <vivainio@gmail.com>
588 2006-03-16 Ville Vainio <vivainio@gmail.com>
585
589
586 * upgrade_dir.py: Take path.py from Extensions, correcting
590 * upgrade_dir.py: Take path.py from Extensions, correcting
587 %upgrade magic
591 %upgrade magic
588
592
589 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
593 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
590
594
591 * hooks.py: Only enclose editor binary in quotes if legal and
595 * hooks.py: Only enclose editor binary in quotes if legal and
592 necessary (space in the name, and is an existing file). Fixes a bug
596 necessary (space in the name, and is an existing file). Fixes a bug
593 reported by Zachary Pincus.
597 reported by Zachary Pincus.
594
598
595 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
599 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
596
600
597 * Manual: thanks to a tip on proper color handling for Emacs, by
601 * Manual: thanks to a tip on proper color handling for Emacs, by
598 Eric J Haywiser <ejh1-AT-MIT.EDU>.
602 Eric J Haywiser <ejh1-AT-MIT.EDU>.
599
603
600 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
604 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
601 by applying the provided patch. Thanks to Liu Jin
605 by applying the provided patch. Thanks to Liu Jin
602 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
606 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
603 XEmacs/Linux, I'm trusting the submitter that it actually helps
607 XEmacs/Linux, I'm trusting the submitter that it actually helps
604 under win32/GNU Emacs. Will revisit if any problems are reported.
608 under win32/GNU Emacs. Will revisit if any problems are reported.
605
609
606 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
610 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
607
611
608 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
612 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
609 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
613 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
610
614
611 2006-03-12 Ville Vainio <vivainio@gmail.com>
615 2006-03-12 Ville Vainio <vivainio@gmail.com>
612
616
613 * Magic.py (magic_timeit): Added %timeit magic, contributed by
617 * Magic.py (magic_timeit): Added %timeit magic, contributed by
614 Torsten Marek.
618 Torsten Marek.
615
619
616 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
620 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
617
621
618 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
622 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
619 line ranges works again.
623 line ranges works again.
620
624
621 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
625 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
622
626
623 * IPython/iplib.py (showtraceback): add back sys.last_traceback
627 * IPython/iplib.py (showtraceback): add back sys.last_traceback
624 and friends, after a discussion with Zach Pincus on ipython-user.
628 and friends, after a discussion with Zach Pincus on ipython-user.
625 I'm not 100% sure, but after thinking about it quite a bit, it may
629 I'm not 100% sure, but after thinking about it quite a bit, it may
626 be OK. Testing with the multithreaded shells didn't reveal any
630 be OK. Testing with the multithreaded shells didn't reveal any
627 problems, but let's keep an eye out.
631 problems, but let's keep an eye out.
628
632
629 In the process, I fixed a few things which were calling
633 In the process, I fixed a few things which were calling
630 self.InteractiveTB() directly (like safe_execfile), which is a
634 self.InteractiveTB() directly (like safe_execfile), which is a
631 mistake: ALL exception reporting should be done by calling
635 mistake: ALL exception reporting should be done by calling
632 self.showtraceback(), which handles state and tab-completion and
636 self.showtraceback(), which handles state and tab-completion and
633 more.
637 more.
634
638
635 2006-03-01 Ville Vainio <vivainio@gmail.com>
639 2006-03-01 Ville Vainio <vivainio@gmail.com>
636
640
637 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
641 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
638 To use, do "from ipipe import *".
642 To use, do "from ipipe import *".
639
643
640 2006-02-24 Ville Vainio <vivainio@gmail.com>
644 2006-02-24 Ville Vainio <vivainio@gmail.com>
641
645
642 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
646 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
643 "cleanly" and safely than the older upgrade mechanism.
647 "cleanly" and safely than the older upgrade mechanism.
644
648
645 2006-02-21 Ville Vainio <vivainio@gmail.com>
649 2006-02-21 Ville Vainio <vivainio@gmail.com>
646
650
647 * Magic.py: %save works again.
651 * Magic.py: %save works again.
648
652
649 2006-02-15 Ville Vainio <vivainio@gmail.com>
653 2006-02-15 Ville Vainio <vivainio@gmail.com>
650
654
651 * Magic.py: %Pprint works again
655 * Magic.py: %Pprint works again
652
656
653 * Extensions/ipy_sane_defaults.py: Provide everything provided
657 * Extensions/ipy_sane_defaults.py: Provide everything provided
654 in default ipythonrc, to make it possible to have a completely empty
658 in default ipythonrc, to make it possible to have a completely empty
655 ipythonrc (and thus completely rc-file free configuration)
659 ipythonrc (and thus completely rc-file free configuration)
656
660
657 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
661 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
658
662
659 * IPython/hooks.py (editor): quote the call to the editor command,
663 * IPython/hooks.py (editor): quote the call to the editor command,
660 to allow commands with spaces in them. Problem noted by watching
664 to allow commands with spaces in them. Problem noted by watching
661 Ian Oswald's video about textpad under win32 at
665 Ian Oswald's video about textpad under win32 at
662 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
666 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
663
667
664 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
668 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
665 describing magics (we haven't used @ for a loong time).
669 describing magics (we haven't used @ for a loong time).
666
670
667 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
671 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
668 contributed by marienz to close
672 contributed by marienz to close
669 http://www.scipy.net/roundup/ipython/issue53.
673 http://www.scipy.net/roundup/ipython/issue53.
670
674
671 2006-02-10 Ville Vainio <vivainio@gmail.com>
675 2006-02-10 Ville Vainio <vivainio@gmail.com>
672
676
673 * genutils.py: getoutput now works in win32 too
677 * genutils.py: getoutput now works in win32 too
674
678
675 * completer.py: alias and magic completion only invoked
679 * completer.py: alias and magic completion only invoked
676 at the first "item" in the line, to avoid "cd %store"
680 at the first "item" in the line, to avoid "cd %store"
677 nonsense.
681 nonsense.
678
682
679 2006-02-09 Ville Vainio <vivainio@gmail.com>
683 2006-02-09 Ville Vainio <vivainio@gmail.com>
680
684
681 * test/*: Added a unit testing framework (finally).
685 * test/*: Added a unit testing framework (finally).
682 '%run runtests.py' to run test_*.
686 '%run runtests.py' to run test_*.
683
687
684 * ipapi.py: Exposed runlines and set_custom_exc
688 * ipapi.py: Exposed runlines and set_custom_exc
685
689
686 2006-02-07 Ville Vainio <vivainio@gmail.com>
690 2006-02-07 Ville Vainio <vivainio@gmail.com>
687
691
688 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
692 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
689 instead use "f(1 2)" as before.
693 instead use "f(1 2)" as before.
690
694
691 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
695 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
692
696
693 * IPython/demo.py (IPythonDemo): Add new classes to the demo
697 * IPython/demo.py (IPythonDemo): Add new classes to the demo
694 facilities, for demos processed by the IPython input filter
698 facilities, for demos processed by the IPython input filter
695 (IPythonDemo), and for running a script one-line-at-a-time as a
699 (IPythonDemo), and for running a script one-line-at-a-time as a
696 demo, both for pure Python (LineDemo) and for IPython-processed
700 demo, both for pure Python (LineDemo) and for IPython-processed
697 input (IPythonLineDemo). After a request by Dave Kohel, from the
701 input (IPythonLineDemo). After a request by Dave Kohel, from the
698 SAGE team.
702 SAGE team.
699 (Demo.edit): added an edit() method to the demo objects, to edit
703 (Demo.edit): added an edit() method to the demo objects, to edit
700 the in-memory copy of the last executed block.
704 the in-memory copy of the last executed block.
701
705
702 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
706 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
703 processing to %edit, %macro and %save. These commands can now be
707 processing to %edit, %macro and %save. These commands can now be
704 invoked on the unprocessed input as it was typed by the user
708 invoked on the unprocessed input as it was typed by the user
705 (without any prefilters applied). After requests by the SAGE team
709 (without any prefilters applied). After requests by the SAGE team
706 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
710 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
707
711
708 2006-02-01 Ville Vainio <vivainio@gmail.com>
712 2006-02-01 Ville Vainio <vivainio@gmail.com>
709
713
710 * setup.py, eggsetup.py: easy_install ipython==dev works
714 * setup.py, eggsetup.py: easy_install ipython==dev works
711 correctly now (on Linux)
715 correctly now (on Linux)
712
716
713 * ipy_user_conf,ipmaker: user config changes, removed spurious
717 * ipy_user_conf,ipmaker: user config changes, removed spurious
714 warnings
718 warnings
715
719
716 * iplib: if rc.banner is string, use it as is.
720 * iplib: if rc.banner is string, use it as is.
717
721
718 * Magic: %pycat accepts a string argument and pages it's contents.
722 * Magic: %pycat accepts a string argument and pages it's contents.
719
723
720
724
721 2006-01-30 Ville Vainio <vivainio@gmail.com>
725 2006-01-30 Ville Vainio <vivainio@gmail.com>
722
726
723 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
727 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
724 Now %store and bookmarks work through PickleShare, meaning that
728 Now %store and bookmarks work through PickleShare, meaning that
725 concurrent access is possible and all ipython sessions see the
729 concurrent access is possible and all ipython sessions see the
726 same database situation all the time, instead of snapshot of
730 same database situation all the time, instead of snapshot of
727 the situation when the session was started. Hence, %bookmark
731 the situation when the session was started. Hence, %bookmark
728 results are immediately accessible from othes sessions. The database
732 results are immediately accessible from othes sessions. The database
729 is also available for use by user extensions. See:
733 is also available for use by user extensions. See:
730 http://www.python.org/pypi/pickleshare
734 http://www.python.org/pypi/pickleshare
731
735
732 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
736 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
733
737
734 * aliases can now be %store'd
738 * aliases can now be %store'd
735
739
736 * path.py moved to Extensions so that pickleshare does not need
740 * path.py moved to Extensions so that pickleshare does not need
737 IPython-specific import. Extensions added to pythonpath right
741 IPython-specific import. Extensions added to pythonpath right
738 at __init__.
742 at __init__.
739
743
740 * iplib.py: ipalias deprecated/redundant; aliases are converted and
744 * iplib.py: ipalias deprecated/redundant; aliases are converted and
741 called with _ip.system and the pre-transformed command string.
745 called with _ip.system and the pre-transformed command string.
742
746
743 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
747 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
744
748
745 * IPython/iplib.py (interact): Fix that we were not catching
749 * IPython/iplib.py (interact): Fix that we were not catching
746 KeyboardInterrupt exceptions properly. I'm not quite sure why the
750 KeyboardInterrupt exceptions properly. I'm not quite sure why the
747 logic here had to change, but it's fixed now.
751 logic here had to change, but it's fixed now.
748
752
749 2006-01-29 Ville Vainio <vivainio@gmail.com>
753 2006-01-29 Ville Vainio <vivainio@gmail.com>
750
754
751 * iplib.py: Try to import pyreadline on Windows.
755 * iplib.py: Try to import pyreadline on Windows.
752
756
753 2006-01-27 Ville Vainio <vivainio@gmail.com>
757 2006-01-27 Ville Vainio <vivainio@gmail.com>
754
758
755 * iplib.py: Expose ipapi as _ip in builtin namespace.
759 * iplib.py: Expose ipapi as _ip in builtin namespace.
756 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
760 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
757 and ip_set_hook (-> _ip.set_hook) redundant. % and !
761 and ip_set_hook (-> _ip.set_hook) redundant. % and !
758 syntax now produce _ip.* variant of the commands.
762 syntax now produce _ip.* variant of the commands.
759
763
760 * "_ip.options().autoedit_syntax = 2" automatically throws
764 * "_ip.options().autoedit_syntax = 2" automatically throws
761 user to editor for syntax error correction without prompting.
765 user to editor for syntax error correction without prompting.
762
766
763 2006-01-27 Ville Vainio <vivainio@gmail.com>
767 2006-01-27 Ville Vainio <vivainio@gmail.com>
764
768
765 * ipmaker.py: Give "realistic" sys.argv for scripts (without
769 * ipmaker.py: Give "realistic" sys.argv for scripts (without
766 'ipython' at argv[0]) executed through command line.
770 'ipython' at argv[0]) executed through command line.
767 NOTE: this DEPRECATES calling ipython with multiple scripts
771 NOTE: this DEPRECATES calling ipython with multiple scripts
768 ("ipython a.py b.py c.py")
772 ("ipython a.py b.py c.py")
769
773
770 * iplib.py, hooks.py: Added configurable input prefilter,
774 * iplib.py, hooks.py: Added configurable input prefilter,
771 named 'input_prefilter'. See ext_rescapture.py for example
775 named 'input_prefilter'. See ext_rescapture.py for example
772 usage.
776 usage.
773
777
774 * ext_rescapture.py, Magic.py: Better system command output capture
778 * ext_rescapture.py, Magic.py: Better system command output capture
775 through 'var = !ls' (deprecates user-visible %sc). Same notation
779 through 'var = !ls' (deprecates user-visible %sc). Same notation
776 applies for magics, 'var = %alias' assigns alias list to var.
780 applies for magics, 'var = %alias' assigns alias list to var.
777
781
778 * ipapi.py: added meta() for accessing extension-usable data store.
782 * ipapi.py: added meta() for accessing extension-usable data store.
779
783
780 * iplib.py: added InteractiveShell.getapi(). New magics should be
784 * iplib.py: added InteractiveShell.getapi(). New magics should be
781 written doing self.getapi() instead of using the shell directly.
785 written doing self.getapi() instead of using the shell directly.
782
786
783 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
787 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
784 %store foo >> ~/myfoo.txt to store variables to files (in clean
788 %store foo >> ~/myfoo.txt to store variables to files (in clean
785 textual form, not a restorable pickle).
789 textual form, not a restorable pickle).
786
790
787 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
791 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
788
792
789 * usage.py, Magic.py: added %quickref
793 * usage.py, Magic.py: added %quickref
790
794
791 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
795 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
792
796
793 * GetoptErrors when invoking magics etc. with wrong args
797 * GetoptErrors when invoking magics etc. with wrong args
794 are now more helpful:
798 are now more helpful:
795 GetoptError: option -l not recognized (allowed: "qb" )
799 GetoptError: option -l not recognized (allowed: "qb" )
796
800
797 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
801 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
798
802
799 * IPython/demo.py (Demo.show): Flush stdout after each block, so
803 * IPython/demo.py (Demo.show): Flush stdout after each block, so
800 computationally intensive blocks don't appear to stall the demo.
804 computationally intensive blocks don't appear to stall the demo.
801
805
802 2006-01-24 Ville Vainio <vivainio@gmail.com>
806 2006-01-24 Ville Vainio <vivainio@gmail.com>
803
807
804 * iplib.py, hooks.py: 'result_display' hook can return a non-None
808 * iplib.py, hooks.py: 'result_display' hook can return a non-None
805 value to manipulate resulting history entry.
809 value to manipulate resulting history entry.
806
810
807 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
811 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
808 to instance methods of IPApi class, to make extending an embedded
812 to instance methods of IPApi class, to make extending an embedded
809 IPython feasible. See ext_rehashdir.py for example usage.
813 IPython feasible. See ext_rehashdir.py for example usage.
810
814
811 * Merged 1071-1076 from branches/0.7.1
815 * Merged 1071-1076 from branches/0.7.1
812
816
813
817
814 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
818 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
815
819
816 * tools/release (daystamp): Fix build tools to use the new
820 * tools/release (daystamp): Fix build tools to use the new
817 eggsetup.py script to build lightweight eggs.
821 eggsetup.py script to build lightweight eggs.
818
822
819 * Applied changesets 1062 and 1064 before 0.7.1 release.
823 * Applied changesets 1062 and 1064 before 0.7.1 release.
820
824
821 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
825 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
822 see the raw input history (without conversions like %ls ->
826 see the raw input history (without conversions like %ls ->
823 ipmagic("ls")). After a request from W. Stein, SAGE
827 ipmagic("ls")). After a request from W. Stein, SAGE
824 (http://modular.ucsd.edu/sage) developer. This information is
828 (http://modular.ucsd.edu/sage) developer. This information is
825 stored in the input_hist_raw attribute of the IPython instance, so
829 stored in the input_hist_raw attribute of the IPython instance, so
826 developers can access it if needed (it's an InputList instance).
830 developers can access it if needed (it's an InputList instance).
827
831
828 * Versionstring = 0.7.2.svn
832 * Versionstring = 0.7.2.svn
829
833
830 * eggsetup.py: A separate script for constructing eggs, creates
834 * eggsetup.py: A separate script for constructing eggs, creates
831 proper launch scripts even on Windows (an .exe file in
835 proper launch scripts even on Windows (an .exe file in
832 \python24\scripts).
836 \python24\scripts).
833
837
834 * ipapi.py: launch_new_instance, launch entry point needed for the
838 * ipapi.py: launch_new_instance, launch entry point needed for the
835 egg.
839 egg.
836
840
837 2006-01-23 Ville Vainio <vivainio@gmail.com>
841 2006-01-23 Ville Vainio <vivainio@gmail.com>
838
842
839 * Added %cpaste magic for pasting python code
843 * Added %cpaste magic for pasting python code
840
844
841 2006-01-22 Ville Vainio <vivainio@gmail.com>
845 2006-01-22 Ville Vainio <vivainio@gmail.com>
842
846
843 * Merge from branches/0.7.1 into trunk, revs 1052-1057
847 * Merge from branches/0.7.1 into trunk, revs 1052-1057
844
848
845 * Versionstring = 0.7.2.svn
849 * Versionstring = 0.7.2.svn
846
850
847 * eggsetup.py: A separate script for constructing eggs, creates
851 * eggsetup.py: A separate script for constructing eggs, creates
848 proper launch scripts even on Windows (an .exe file in
852 proper launch scripts even on Windows (an .exe file in
849 \python24\scripts).
853 \python24\scripts).
850
854
851 * ipapi.py: launch_new_instance, launch entry point needed for the
855 * ipapi.py: launch_new_instance, launch entry point needed for the
852 egg.
856 egg.
853
857
854 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
858 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
855
859
856 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
860 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
857 %pfile foo would print the file for foo even if it was a binary.
861 %pfile foo would print the file for foo even if it was a binary.
858 Now, extensions '.so' and '.dll' are skipped.
862 Now, extensions '.so' and '.dll' are skipped.
859
863
860 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
864 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
861 bug, where macros would fail in all threaded modes. I'm not 100%
865 bug, where macros would fail in all threaded modes. I'm not 100%
862 sure, so I'm going to put out an rc instead of making a release
866 sure, so I'm going to put out an rc instead of making a release
863 today, and wait for feedback for at least a few days.
867 today, and wait for feedback for at least a few days.
864
868
865 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
869 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
866 it...) the handling of pasting external code with autoindent on.
870 it...) the handling of pasting external code with autoindent on.
867 To get out of a multiline input, the rule will appear for most
871 To get out of a multiline input, the rule will appear for most
868 users unchanged: two blank lines or change the indent level
872 users unchanged: two blank lines or change the indent level
869 proposed by IPython. But there is a twist now: you can
873 proposed by IPython. But there is a twist now: you can
870 add/subtract only *one or two spaces*. If you add/subtract three
874 add/subtract only *one or two spaces*. If you add/subtract three
871 or more (unless you completely delete the line), IPython will
875 or more (unless you completely delete the line), IPython will
872 accept that line, and you'll need to enter a second one of pure
876 accept that line, and you'll need to enter a second one of pure
873 whitespace. I know it sounds complicated, but I can't find a
877 whitespace. I know it sounds complicated, but I can't find a
874 different solution that covers all the cases, with the right
878 different solution that covers all the cases, with the right
875 heuristics. Hopefully in actual use, nobody will really notice
879 heuristics. Hopefully in actual use, nobody will really notice
876 all these strange rules and things will 'just work'.
880 all these strange rules and things will 'just work'.
877
881
878 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
882 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
879
883
880 * IPython/iplib.py (interact): catch exceptions which can be
884 * IPython/iplib.py (interact): catch exceptions which can be
881 triggered asynchronously by signal handlers. Thanks to an
885 triggered asynchronously by signal handlers. Thanks to an
882 automatic crash report, submitted by Colin Kingsley
886 automatic crash report, submitted by Colin Kingsley
883 <tercel-AT-gentoo.org>.
887 <tercel-AT-gentoo.org>.
884
888
885 2006-01-20 Ville Vainio <vivainio@gmail.com>
889 2006-01-20 Ville Vainio <vivainio@gmail.com>
886
890
887 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
891 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
888 (%rehashdir, very useful, try it out) of how to extend ipython
892 (%rehashdir, very useful, try it out) of how to extend ipython
889 with new magics. Also added Extensions dir to pythonpath to make
893 with new magics. Also added Extensions dir to pythonpath to make
890 importing extensions easy.
894 importing extensions easy.
891
895
892 * %store now complains when trying to store interactively declared
896 * %store now complains when trying to store interactively declared
893 classes / instances of those classes.
897 classes / instances of those classes.
894
898
895 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
899 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
896 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
900 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
897 if they exist, and ipy_user_conf.py with some defaults is created for
901 if they exist, and ipy_user_conf.py with some defaults is created for
898 the user.
902 the user.
899
903
900 * Startup rehashing done by the config file, not InterpreterExec.
904 * Startup rehashing done by the config file, not InterpreterExec.
901 This means system commands are available even without selecting the
905 This means system commands are available even without selecting the
902 pysh profile. It's the sensible default after all.
906 pysh profile. It's the sensible default after all.
903
907
904 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
908 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
905
909
906 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
910 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
907 multiline code with autoindent on working. But I am really not
911 multiline code with autoindent on working. But I am really not
908 sure, so this needs more testing. Will commit a debug-enabled
912 sure, so this needs more testing. Will commit a debug-enabled
909 version for now, while I test it some more, so that Ville and
913 version for now, while I test it some more, so that Ville and
910 others may also catch any problems. Also made
914 others may also catch any problems. Also made
911 self.indent_current_str() a method, to ensure that there's no
915 self.indent_current_str() a method, to ensure that there's no
912 chance of the indent space count and the corresponding string
916 chance of the indent space count and the corresponding string
913 falling out of sync. All code needing the string should just call
917 falling out of sync. All code needing the string should just call
914 the method.
918 the method.
915
919
916 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
920 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
917
921
918 * IPython/Magic.py (magic_edit): fix check for when users don't
922 * IPython/Magic.py (magic_edit): fix check for when users don't
919 save their output files, the try/except was in the wrong section.
923 save their output files, the try/except was in the wrong section.
920
924
921 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
925 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
922
926
923 * IPython/Magic.py (magic_run): fix __file__ global missing from
927 * IPython/Magic.py (magic_run): fix __file__ global missing from
924 script's namespace when executed via %run. After a report by
928 script's namespace when executed via %run. After a report by
925 Vivian.
929 Vivian.
926
930
927 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
931 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
928 when using python 2.4. The parent constructor changed in 2.4, and
932 when using python 2.4. The parent constructor changed in 2.4, and
929 we need to track it directly (we can't call it, as it messes up
933 we need to track it directly (we can't call it, as it messes up
930 readline and tab-completion inside our pdb would stop working).
934 readline and tab-completion inside our pdb would stop working).
931 After a bug report by R. Bernstein <rocky-AT-panix.com>.
935 After a bug report by R. Bernstein <rocky-AT-panix.com>.
932
936
933 2006-01-16 Ville Vainio <vivainio@gmail.com>
937 2006-01-16 Ville Vainio <vivainio@gmail.com>
934
938
935 * Ipython/magic.py: Reverted back to old %edit functionality
939 * Ipython/magic.py: Reverted back to old %edit functionality
936 that returns file contents on exit.
940 that returns file contents on exit.
937
941
938 * IPython/path.py: Added Jason Orendorff's "path" module to
942 * IPython/path.py: Added Jason Orendorff's "path" module to
939 IPython tree, http://www.jorendorff.com/articles/python/path/.
943 IPython tree, http://www.jorendorff.com/articles/python/path/.
940 You can get path objects conveniently through %sc, and !!, e.g.:
944 You can get path objects conveniently through %sc, and !!, e.g.:
941 sc files=ls
945 sc files=ls
942 for p in files.paths: # or files.p
946 for p in files.paths: # or files.p
943 print p,p.mtime
947 print p,p.mtime
944
948
945 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
949 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
946 now work again without considering the exclusion regexp -
950 now work again without considering the exclusion regexp -
947 hence, things like ',foo my/path' turn to 'foo("my/path")'
951 hence, things like ',foo my/path' turn to 'foo("my/path")'
948 instead of syntax error.
952 instead of syntax error.
949
953
950
954
951 2006-01-14 Ville Vainio <vivainio@gmail.com>
955 2006-01-14 Ville Vainio <vivainio@gmail.com>
952
956
953 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
957 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
954 ipapi decorators for python 2.4 users, options() provides access to rc
958 ipapi decorators for python 2.4 users, options() provides access to rc
955 data.
959 data.
956
960
957 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
961 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
958 as path separators (even on Linux ;-). Space character after
962 as path separators (even on Linux ;-). Space character after
959 backslash (as yielded by tab completer) is still space;
963 backslash (as yielded by tab completer) is still space;
960 "%cd long\ name" works as expected.
964 "%cd long\ name" works as expected.
961
965
962 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
966 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
963 as "chain of command", with priority. API stays the same,
967 as "chain of command", with priority. API stays the same,
964 TryNext exception raised by a hook function signals that
968 TryNext exception raised by a hook function signals that
965 current hook failed and next hook should try handling it, as
969 current hook failed and next hook should try handling it, as
966 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
970 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
967 requested configurable display hook, which is now implemented.
971 requested configurable display hook, which is now implemented.
968
972
969 2006-01-13 Ville Vainio <vivainio@gmail.com>
973 2006-01-13 Ville Vainio <vivainio@gmail.com>
970
974
971 * IPython/platutils*.py: platform specific utility functions,
975 * IPython/platutils*.py: platform specific utility functions,
972 so far only set_term_title is implemented (change terminal
976 so far only set_term_title is implemented (change terminal
973 label in windowing systems). %cd now changes the title to
977 label in windowing systems). %cd now changes the title to
974 current dir.
978 current dir.
975
979
976 * IPython/Release.py: Added myself to "authors" list,
980 * IPython/Release.py: Added myself to "authors" list,
977 had to create new files.
981 had to create new files.
978
982
979 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
983 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
980 shell escape; not a known bug but had potential to be one in the
984 shell escape; not a known bug but had potential to be one in the
981 future.
985 future.
982
986
983 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
987 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
984 extension API for IPython! See the module for usage example. Fix
988 extension API for IPython! See the module for usage example. Fix
985 OInspect for docstring-less magic functions.
989 OInspect for docstring-less magic functions.
986
990
987
991
988 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
992 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
989
993
990 * IPython/iplib.py (raw_input): temporarily deactivate all
994 * IPython/iplib.py (raw_input): temporarily deactivate all
991 attempts at allowing pasting of code with autoindent on. It
995 attempts at allowing pasting of code with autoindent on. It
992 introduced bugs (reported by Prabhu) and I can't seem to find a
996 introduced bugs (reported by Prabhu) and I can't seem to find a
993 robust combination which works in all cases. Will have to revisit
997 robust combination which works in all cases. Will have to revisit
994 later.
998 later.
995
999
996 * IPython/genutils.py: remove isspace() function. We've dropped
1000 * IPython/genutils.py: remove isspace() function. We've dropped
997 2.2 compatibility, so it's OK to use the string method.
1001 2.2 compatibility, so it's OK to use the string method.
998
1002
999 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1003 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1000
1004
1001 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1005 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1002 matching what NOT to autocall on, to include all python binary
1006 matching what NOT to autocall on, to include all python binary
1003 operators (including things like 'and', 'or', 'is' and 'in').
1007 operators (including things like 'and', 'or', 'is' and 'in').
1004 Prompted by a bug report on 'foo & bar', but I realized we had
1008 Prompted by a bug report on 'foo & bar', but I realized we had
1005 many more potential bug cases with other operators. The regexp is
1009 many more potential bug cases with other operators. The regexp is
1006 self.re_exclude_auto, it's fairly commented.
1010 self.re_exclude_auto, it's fairly commented.
1007
1011
1008 2006-01-12 Ville Vainio <vivainio@gmail.com>
1012 2006-01-12 Ville Vainio <vivainio@gmail.com>
1009
1013
1010 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1014 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1011 Prettified and hardened string/backslash quoting with ipsystem(),
1015 Prettified and hardened string/backslash quoting with ipsystem(),
1012 ipalias() and ipmagic(). Now even \ characters are passed to
1016 ipalias() and ipmagic(). Now even \ characters are passed to
1013 %magics, !shell escapes and aliases exactly as they are in the
1017 %magics, !shell escapes and aliases exactly as they are in the
1014 ipython command line. Should improve backslash experience,
1018 ipython command line. Should improve backslash experience,
1015 particularly in Windows (path delimiter for some commands that
1019 particularly in Windows (path delimiter for some commands that
1016 won't understand '/'), but Unix benefits as well (regexps). %cd
1020 won't understand '/'), but Unix benefits as well (regexps). %cd
1017 magic still doesn't support backslash path delimiters, though. Also
1021 magic still doesn't support backslash path delimiters, though. Also
1018 deleted all pretense of supporting multiline command strings in
1022 deleted all pretense of supporting multiline command strings in
1019 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1023 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1020
1024
1021 * doc/build_doc_instructions.txt added. Documentation on how to
1025 * doc/build_doc_instructions.txt added. Documentation on how to
1022 use doc/update_manual.py, added yesterday. Both files contributed
1026 use doc/update_manual.py, added yesterday. Both files contributed
1023 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1027 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1024 doc/*.sh for deprecation at a later date.
1028 doc/*.sh for deprecation at a later date.
1025
1029
1026 * /ipython.py Added ipython.py to root directory for
1030 * /ipython.py Added ipython.py to root directory for
1027 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1031 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1028 ipython.py) and development convenience (no need to keep doing
1032 ipython.py) and development convenience (no need to keep doing
1029 "setup.py install" between changes).
1033 "setup.py install" between changes).
1030
1034
1031 * Made ! and !! shell escapes work (again) in multiline expressions:
1035 * Made ! and !! shell escapes work (again) in multiline expressions:
1032 if 1:
1036 if 1:
1033 !ls
1037 !ls
1034 !!ls
1038 !!ls
1035
1039
1036 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1040 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1037
1041
1038 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1042 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1039 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1043 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1040 module in case-insensitive installation. Was causing crashes
1044 module in case-insensitive installation. Was causing crashes
1041 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1045 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1042
1046
1043 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1047 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1044 <marienz-AT-gentoo.org>, closes
1048 <marienz-AT-gentoo.org>, closes
1045 http://www.scipy.net/roundup/ipython/issue51.
1049 http://www.scipy.net/roundup/ipython/issue51.
1046
1050
1047 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1051 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1048
1052
1049 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1053 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1050 problem of excessive CPU usage under *nix and keyboard lag under
1054 problem of excessive CPU usage under *nix and keyboard lag under
1051 win32.
1055 win32.
1052
1056
1053 2006-01-10 *** Released version 0.7.0
1057 2006-01-10 *** Released version 0.7.0
1054
1058
1055 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1059 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1056
1060
1057 * IPython/Release.py (revision): tag version number to 0.7.0,
1061 * IPython/Release.py (revision): tag version number to 0.7.0,
1058 ready for release.
1062 ready for release.
1059
1063
1060 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1064 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1061 it informs the user of the name of the temp. file used. This can
1065 it informs the user of the name of the temp. file used. This can
1062 help if you decide later to reuse that same file, so you know
1066 help if you decide later to reuse that same file, so you know
1063 where to copy the info from.
1067 where to copy the info from.
1064
1068
1065 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1069 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1066
1070
1067 * setup_bdist_egg.py: little script to build an egg. Added
1071 * setup_bdist_egg.py: little script to build an egg. Added
1068 support in the release tools as well.
1072 support in the release tools as well.
1069
1073
1070 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1074 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1071
1075
1072 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1076 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1073 version selection (new -wxversion command line and ipythonrc
1077 version selection (new -wxversion command line and ipythonrc
1074 parameter). Patch contributed by Arnd Baecker
1078 parameter). Patch contributed by Arnd Baecker
1075 <arnd.baecker-AT-web.de>.
1079 <arnd.baecker-AT-web.de>.
1076
1080
1077 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1081 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1078 embedded instances, for variables defined at the interactive
1082 embedded instances, for variables defined at the interactive
1079 prompt of the embedded ipython. Reported by Arnd.
1083 prompt of the embedded ipython. Reported by Arnd.
1080
1084
1081 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1085 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1082 it can be used as a (stateful) toggle, or with a direct parameter.
1086 it can be used as a (stateful) toggle, or with a direct parameter.
1083
1087
1084 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1088 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1085 could be triggered in certain cases and cause the traceback
1089 could be triggered in certain cases and cause the traceback
1086 printer not to work.
1090 printer not to work.
1087
1091
1088 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1092 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1089
1093
1090 * IPython/iplib.py (_should_recompile): Small fix, closes
1094 * IPython/iplib.py (_should_recompile): Small fix, closes
1091 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1095 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1092
1096
1093 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1097 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1094
1098
1095 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1099 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1096 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1100 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1097 Moad for help with tracking it down.
1101 Moad for help with tracking it down.
1098
1102
1099 * IPython/iplib.py (handle_auto): fix autocall handling for
1103 * IPython/iplib.py (handle_auto): fix autocall handling for
1100 objects which support BOTH __getitem__ and __call__ (so that f [x]
1104 objects which support BOTH __getitem__ and __call__ (so that f [x]
1101 is left alone, instead of becoming f([x]) automatically).
1105 is left alone, instead of becoming f([x]) automatically).
1102
1106
1103 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1107 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1104 Ville's patch.
1108 Ville's patch.
1105
1109
1106 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1110 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1107
1111
1108 * IPython/iplib.py (handle_auto): changed autocall semantics to
1112 * IPython/iplib.py (handle_auto): changed autocall semantics to
1109 include 'smart' mode, where the autocall transformation is NOT
1113 include 'smart' mode, where the autocall transformation is NOT
1110 applied if there are no arguments on the line. This allows you to
1114 applied if there are no arguments on the line. This allows you to
1111 just type 'foo' if foo is a callable to see its internal form,
1115 just type 'foo' if foo is a callable to see its internal form,
1112 instead of having it called with no arguments (typically a
1116 instead of having it called with no arguments (typically a
1113 mistake). The old 'full' autocall still exists: for that, you
1117 mistake). The old 'full' autocall still exists: for that, you
1114 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1118 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1115
1119
1116 * IPython/completer.py (Completer.attr_matches): add
1120 * IPython/completer.py (Completer.attr_matches): add
1117 tab-completion support for Enthoughts' traits. After a report by
1121 tab-completion support for Enthoughts' traits. After a report by
1118 Arnd and a patch by Prabhu.
1122 Arnd and a patch by Prabhu.
1119
1123
1120 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1124 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1121
1125
1122 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1126 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1123 Schmolck's patch to fix inspect.getinnerframes().
1127 Schmolck's patch to fix inspect.getinnerframes().
1124
1128
1125 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1129 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1126 for embedded instances, regarding handling of namespaces and items
1130 for embedded instances, regarding handling of namespaces and items
1127 added to the __builtin__ one. Multiple embedded instances and
1131 added to the __builtin__ one. Multiple embedded instances and
1128 recursive embeddings should work better now (though I'm not sure
1132 recursive embeddings should work better now (though I'm not sure
1129 I've got all the corner cases fixed, that code is a bit of a brain
1133 I've got all the corner cases fixed, that code is a bit of a brain
1130 twister).
1134 twister).
1131
1135
1132 * IPython/Magic.py (magic_edit): added support to edit in-memory
1136 * IPython/Magic.py (magic_edit): added support to edit in-memory
1133 macros (automatically creates the necessary temp files). %edit
1137 macros (automatically creates the necessary temp files). %edit
1134 also doesn't return the file contents anymore, it's just noise.
1138 also doesn't return the file contents anymore, it's just noise.
1135
1139
1136 * IPython/completer.py (Completer.attr_matches): revert change to
1140 * IPython/completer.py (Completer.attr_matches): revert change to
1137 complete only on attributes listed in __all__. I realized it
1141 complete only on attributes listed in __all__. I realized it
1138 cripples the tab-completion system as a tool for exploring the
1142 cripples the tab-completion system as a tool for exploring the
1139 internals of unknown libraries (it renders any non-__all__
1143 internals of unknown libraries (it renders any non-__all__
1140 attribute off-limits). I got bit by this when trying to see
1144 attribute off-limits). I got bit by this when trying to see
1141 something inside the dis module.
1145 something inside the dis module.
1142
1146
1143 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1147 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1144
1148
1145 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1149 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1146 namespace for users and extension writers to hold data in. This
1150 namespace for users and extension writers to hold data in. This
1147 follows the discussion in
1151 follows the discussion in
1148 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1152 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1149
1153
1150 * IPython/completer.py (IPCompleter.complete): small patch to help
1154 * IPython/completer.py (IPCompleter.complete): small patch to help
1151 tab-completion under Emacs, after a suggestion by John Barnard
1155 tab-completion under Emacs, after a suggestion by John Barnard
1152 <barnarj-AT-ccf.org>.
1156 <barnarj-AT-ccf.org>.
1153
1157
1154 * IPython/Magic.py (Magic.extract_input_slices): added support for
1158 * IPython/Magic.py (Magic.extract_input_slices): added support for
1155 the slice notation in magics to use N-M to represent numbers N...M
1159 the slice notation in magics to use N-M to represent numbers N...M
1156 (closed endpoints). This is used by %macro and %save.
1160 (closed endpoints). This is used by %macro and %save.
1157
1161
1158 * IPython/completer.py (Completer.attr_matches): for modules which
1162 * IPython/completer.py (Completer.attr_matches): for modules which
1159 define __all__, complete only on those. After a patch by Jeffrey
1163 define __all__, complete only on those. After a patch by Jeffrey
1160 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1164 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1161 speed up this routine.
1165 speed up this routine.
1162
1166
1163 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1167 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1164 don't know if this is the end of it, but the behavior now is
1168 don't know if this is the end of it, but the behavior now is
1165 certainly much more correct. Note that coupled with macros,
1169 certainly much more correct. Note that coupled with macros,
1166 slightly surprising (at first) behavior may occur: a macro will in
1170 slightly surprising (at first) behavior may occur: a macro will in
1167 general expand to multiple lines of input, so upon exiting, the
1171 general expand to multiple lines of input, so upon exiting, the
1168 in/out counters will both be bumped by the corresponding amount
1172 in/out counters will both be bumped by the corresponding amount
1169 (as if the macro's contents had been typed interactively). Typing
1173 (as if the macro's contents had been typed interactively). Typing
1170 %hist will reveal the intermediate (silently processed) lines.
1174 %hist will reveal the intermediate (silently processed) lines.
1171
1175
1172 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1176 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1173 pickle to fail (%run was overwriting __main__ and not restoring
1177 pickle to fail (%run was overwriting __main__ and not restoring
1174 it, but pickle relies on __main__ to operate).
1178 it, but pickle relies on __main__ to operate).
1175
1179
1176 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1180 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1177 using properties, but forgot to make the main InteractiveShell
1181 using properties, but forgot to make the main InteractiveShell
1178 class a new-style class. Properties fail silently, and
1182 class a new-style class. Properties fail silently, and
1179 mysteriously, with old-style class (getters work, but
1183 mysteriously, with old-style class (getters work, but
1180 setters don't do anything).
1184 setters don't do anything).
1181
1185
1182 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1186 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1183
1187
1184 * IPython/Magic.py (magic_history): fix history reporting bug (I
1188 * IPython/Magic.py (magic_history): fix history reporting bug (I
1185 know some nasties are still there, I just can't seem to find a
1189 know some nasties are still there, I just can't seem to find a
1186 reproducible test case to track them down; the input history is
1190 reproducible test case to track them down; the input history is
1187 falling out of sync...)
1191 falling out of sync...)
1188
1192
1189 * IPython/iplib.py (handle_shell_escape): fix bug where both
1193 * IPython/iplib.py (handle_shell_escape): fix bug where both
1190 aliases and system accesses where broken for indented code (such
1194 aliases and system accesses where broken for indented code (such
1191 as loops).
1195 as loops).
1192
1196
1193 * IPython/genutils.py (shell): fix small but critical bug for
1197 * IPython/genutils.py (shell): fix small but critical bug for
1194 win32 system access.
1198 win32 system access.
1195
1199
1196 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1200 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1197
1201
1198 * IPython/iplib.py (showtraceback): remove use of the
1202 * IPython/iplib.py (showtraceback): remove use of the
1199 sys.last_{type/value/traceback} structures, which are non
1203 sys.last_{type/value/traceback} structures, which are non
1200 thread-safe.
1204 thread-safe.
1201 (_prefilter): change control flow to ensure that we NEVER
1205 (_prefilter): change control flow to ensure that we NEVER
1202 introspect objects when autocall is off. This will guarantee that
1206 introspect objects when autocall is off. This will guarantee that
1203 having an input line of the form 'x.y', where access to attribute
1207 having an input line of the form 'x.y', where access to attribute
1204 'y' has side effects, doesn't trigger the side effect TWICE. It
1208 'y' has side effects, doesn't trigger the side effect TWICE. It
1205 is important to note that, with autocall on, these side effects
1209 is important to note that, with autocall on, these side effects
1206 can still happen.
1210 can still happen.
1207 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1211 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1208 trio. IPython offers these three kinds of special calls which are
1212 trio. IPython offers these three kinds of special calls which are
1209 not python code, and it's a good thing to have their call method
1213 not python code, and it's a good thing to have their call method
1210 be accessible as pure python functions (not just special syntax at
1214 be accessible as pure python functions (not just special syntax at
1211 the command line). It gives us a better internal implementation
1215 the command line). It gives us a better internal implementation
1212 structure, as well as exposing these for user scripting more
1216 structure, as well as exposing these for user scripting more
1213 cleanly.
1217 cleanly.
1214
1218
1215 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1219 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1216 file. Now that they'll be more likely to be used with the
1220 file. Now that they'll be more likely to be used with the
1217 persistance system (%store), I want to make sure their module path
1221 persistance system (%store), I want to make sure their module path
1218 doesn't change in the future, so that we don't break things for
1222 doesn't change in the future, so that we don't break things for
1219 users' persisted data.
1223 users' persisted data.
1220
1224
1221 * IPython/iplib.py (autoindent_update): move indentation
1225 * IPython/iplib.py (autoindent_update): move indentation
1222 management into the _text_ processing loop, not the keyboard
1226 management into the _text_ processing loop, not the keyboard
1223 interactive one. This is necessary to correctly process non-typed
1227 interactive one. This is necessary to correctly process non-typed
1224 multiline input (such as macros).
1228 multiline input (such as macros).
1225
1229
1226 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1230 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1227 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1231 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1228 which was producing problems in the resulting manual.
1232 which was producing problems in the resulting manual.
1229 (magic_whos): improve reporting of instances (show their class,
1233 (magic_whos): improve reporting of instances (show their class,
1230 instead of simply printing 'instance' which isn't terribly
1234 instead of simply printing 'instance' which isn't terribly
1231 informative).
1235 informative).
1232
1236
1233 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1237 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1234 (minor mods) to support network shares under win32.
1238 (minor mods) to support network shares under win32.
1235
1239
1236 * IPython/winconsole.py (get_console_size): add new winconsole
1240 * IPython/winconsole.py (get_console_size): add new winconsole
1237 module and fixes to page_dumb() to improve its behavior under
1241 module and fixes to page_dumb() to improve its behavior under
1238 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1242 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1239
1243
1240 * IPython/Magic.py (Macro): simplified Macro class to just
1244 * IPython/Magic.py (Macro): simplified Macro class to just
1241 subclass list. We've had only 2.2 compatibility for a very long
1245 subclass list. We've had only 2.2 compatibility for a very long
1242 time, yet I was still avoiding subclassing the builtin types. No
1246 time, yet I was still avoiding subclassing the builtin types. No
1243 more (I'm also starting to use properties, though I won't shift to
1247 more (I'm also starting to use properties, though I won't shift to
1244 2.3-specific features quite yet).
1248 2.3-specific features quite yet).
1245 (magic_store): added Ville's patch for lightweight variable
1249 (magic_store): added Ville's patch for lightweight variable
1246 persistence, after a request on the user list by Matt Wilkie
1250 persistence, after a request on the user list by Matt Wilkie
1247 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1251 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1248 details.
1252 details.
1249
1253
1250 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1254 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1251 changed the default logfile name from 'ipython.log' to
1255 changed the default logfile name from 'ipython.log' to
1252 'ipython_log.py'. These logs are real python files, and now that
1256 'ipython_log.py'. These logs are real python files, and now that
1253 we have much better multiline support, people are more likely to
1257 we have much better multiline support, people are more likely to
1254 want to use them as such. Might as well name them correctly.
1258 want to use them as such. Might as well name them correctly.
1255
1259
1256 * IPython/Magic.py: substantial cleanup. While we can't stop
1260 * IPython/Magic.py: substantial cleanup. While we can't stop
1257 using magics as mixins, due to the existing customizations 'out
1261 using magics as mixins, due to the existing customizations 'out
1258 there' which rely on the mixin naming conventions, at least I
1262 there' which rely on the mixin naming conventions, at least I
1259 cleaned out all cross-class name usage. So once we are OK with
1263 cleaned out all cross-class name usage. So once we are OK with
1260 breaking compatibility, the two systems can be separated.
1264 breaking compatibility, the two systems can be separated.
1261
1265
1262 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1266 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1263 anymore, and the class is a fair bit less hideous as well. New
1267 anymore, and the class is a fair bit less hideous as well. New
1264 features were also introduced: timestamping of input, and logging
1268 features were also introduced: timestamping of input, and logging
1265 of output results. These are user-visible with the -t and -o
1269 of output results. These are user-visible with the -t and -o
1266 options to %logstart. Closes
1270 options to %logstart. Closes
1267 http://www.scipy.net/roundup/ipython/issue11 and a request by
1271 http://www.scipy.net/roundup/ipython/issue11 and a request by
1268 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1272 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1269
1273
1270 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1274 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1271
1275
1272 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1276 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1273 better handle backslashes in paths. See the thread 'More Windows
1277 better handle backslashes in paths. See the thread 'More Windows
1274 questions part 2 - \/ characters revisited' on the iypthon user
1278 questions part 2 - \/ characters revisited' on the iypthon user
1275 list:
1279 list:
1276 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1280 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1277
1281
1278 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1282 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1279
1283
1280 (InteractiveShell.__init__): change threaded shells to not use the
1284 (InteractiveShell.__init__): change threaded shells to not use the
1281 ipython crash handler. This was causing more problems than not,
1285 ipython crash handler. This was causing more problems than not,
1282 as exceptions in the main thread (GUI code, typically) would
1286 as exceptions in the main thread (GUI code, typically) would
1283 always show up as a 'crash', when they really weren't.
1287 always show up as a 'crash', when they really weren't.
1284
1288
1285 The colors and exception mode commands (%colors/%xmode) have been
1289 The colors and exception mode commands (%colors/%xmode) have been
1286 synchronized to also take this into account, so users can get
1290 synchronized to also take this into account, so users can get
1287 verbose exceptions for their threaded code as well. I also added
1291 verbose exceptions for their threaded code as well. I also added
1288 support for activating pdb inside this exception handler as well,
1292 support for activating pdb inside this exception handler as well,
1289 so now GUI authors can use IPython's enhanced pdb at runtime.
1293 so now GUI authors can use IPython's enhanced pdb at runtime.
1290
1294
1291 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1295 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1292 true by default, and add it to the shipped ipythonrc file. Since
1296 true by default, and add it to the shipped ipythonrc file. Since
1293 this asks the user before proceeding, I think it's OK to make it
1297 this asks the user before proceeding, I think it's OK to make it
1294 true by default.
1298 true by default.
1295
1299
1296 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1300 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1297 of the previous special-casing of input in the eval loop. I think
1301 of the previous special-casing of input in the eval loop. I think
1298 this is cleaner, as they really are commands and shouldn't have
1302 this is cleaner, as they really are commands and shouldn't have
1299 a special role in the middle of the core code.
1303 a special role in the middle of the core code.
1300
1304
1301 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1305 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1302
1306
1303 * IPython/iplib.py (edit_syntax_error): added support for
1307 * IPython/iplib.py (edit_syntax_error): added support for
1304 automatically reopening the editor if the file had a syntax error
1308 automatically reopening the editor if the file had a syntax error
1305 in it. Thanks to scottt who provided the patch at:
1309 in it. Thanks to scottt who provided the patch at:
1306 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1310 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1307 version committed).
1311 version committed).
1308
1312
1309 * IPython/iplib.py (handle_normal): add suport for multi-line
1313 * IPython/iplib.py (handle_normal): add suport for multi-line
1310 input with emtpy lines. This fixes
1314 input with emtpy lines. This fixes
1311 http://www.scipy.net/roundup/ipython/issue43 and a similar
1315 http://www.scipy.net/roundup/ipython/issue43 and a similar
1312 discussion on the user list.
1316 discussion on the user list.
1313
1317
1314 WARNING: a behavior change is necessarily introduced to support
1318 WARNING: a behavior change is necessarily introduced to support
1315 blank lines: now a single blank line with whitespace does NOT
1319 blank lines: now a single blank line with whitespace does NOT
1316 break the input loop, which means that when autoindent is on, by
1320 break the input loop, which means that when autoindent is on, by
1317 default hitting return on the next (indented) line does NOT exit.
1321 default hitting return on the next (indented) line does NOT exit.
1318
1322
1319 Instead, to exit a multiline input you can either have:
1323 Instead, to exit a multiline input you can either have:
1320
1324
1321 - TWO whitespace lines (just hit return again), or
1325 - TWO whitespace lines (just hit return again), or
1322 - a single whitespace line of a different length than provided
1326 - a single whitespace line of a different length than provided
1323 by the autoindent (add or remove a space).
1327 by the autoindent (add or remove a space).
1324
1328
1325 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1329 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1326 module to better organize all readline-related functionality.
1330 module to better organize all readline-related functionality.
1327 I've deleted FlexCompleter and put all completion clases here.
1331 I've deleted FlexCompleter and put all completion clases here.
1328
1332
1329 * IPython/iplib.py (raw_input): improve indentation management.
1333 * IPython/iplib.py (raw_input): improve indentation management.
1330 It is now possible to paste indented code with autoindent on, and
1334 It is now possible to paste indented code with autoindent on, and
1331 the code is interpreted correctly (though it still looks bad on
1335 the code is interpreted correctly (though it still looks bad on
1332 screen, due to the line-oriented nature of ipython).
1336 screen, due to the line-oriented nature of ipython).
1333 (MagicCompleter.complete): change behavior so that a TAB key on an
1337 (MagicCompleter.complete): change behavior so that a TAB key on an
1334 otherwise empty line actually inserts a tab, instead of completing
1338 otherwise empty line actually inserts a tab, instead of completing
1335 on the entire global namespace. This makes it easier to use the
1339 on the entire global namespace. This makes it easier to use the
1336 TAB key for indentation. After a request by Hans Meine
1340 TAB key for indentation. After a request by Hans Meine
1337 <hans_meine-AT-gmx.net>
1341 <hans_meine-AT-gmx.net>
1338 (_prefilter): add support so that typing plain 'exit' or 'quit'
1342 (_prefilter): add support so that typing plain 'exit' or 'quit'
1339 does a sensible thing. Originally I tried to deviate as little as
1343 does a sensible thing. Originally I tried to deviate as little as
1340 possible from the default python behavior, but even that one may
1344 possible from the default python behavior, but even that one may
1341 change in this direction (thread on python-dev to that effect).
1345 change in this direction (thread on python-dev to that effect).
1342 Regardless, ipython should do the right thing even if CPython's
1346 Regardless, ipython should do the right thing even if CPython's
1343 '>>>' prompt doesn't.
1347 '>>>' prompt doesn't.
1344 (InteractiveShell): removed subclassing code.InteractiveConsole
1348 (InteractiveShell): removed subclassing code.InteractiveConsole
1345 class. By now we'd overridden just about all of its methods: I've
1349 class. By now we'd overridden just about all of its methods: I've
1346 copied the remaining two over, and now ipython is a standalone
1350 copied the remaining two over, and now ipython is a standalone
1347 class. This will provide a clearer picture for the chainsaw
1351 class. This will provide a clearer picture for the chainsaw
1348 branch refactoring.
1352 branch refactoring.
1349
1353
1350 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1354 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1351
1355
1352 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1356 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1353 failures for objects which break when dir() is called on them.
1357 failures for objects which break when dir() is called on them.
1354
1358
1355 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1359 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1356 distinct local and global namespaces in the completer API. This
1360 distinct local and global namespaces in the completer API. This
1357 change allows us to properly handle completion with distinct
1361 change allows us to properly handle completion with distinct
1358 scopes, including in embedded instances (this had never really
1362 scopes, including in embedded instances (this had never really
1359 worked correctly).
1363 worked correctly).
1360
1364
1361 Note: this introduces a change in the constructor for
1365 Note: this introduces a change in the constructor for
1362 MagicCompleter, as a new global_namespace parameter is now the
1366 MagicCompleter, as a new global_namespace parameter is now the
1363 second argument (the others were bumped one position).
1367 second argument (the others were bumped one position).
1364
1368
1365 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1369 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1366
1370
1367 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1371 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1368 embedded instances (which can be done now thanks to Vivian's
1372 embedded instances (which can be done now thanks to Vivian's
1369 frame-handling fixes for pdb).
1373 frame-handling fixes for pdb).
1370 (InteractiveShell.__init__): Fix namespace handling problem in
1374 (InteractiveShell.__init__): Fix namespace handling problem in
1371 embedded instances. We were overwriting __main__ unconditionally,
1375 embedded instances. We were overwriting __main__ unconditionally,
1372 and this should only be done for 'full' (non-embedded) IPython;
1376 and this should only be done for 'full' (non-embedded) IPython;
1373 embedded instances must respect the caller's __main__. Thanks to
1377 embedded instances must respect the caller's __main__. Thanks to
1374 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1378 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1375
1379
1376 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1380 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1377
1381
1378 * setup.py: added download_url to setup(). This registers the
1382 * setup.py: added download_url to setup(). This registers the
1379 download address at PyPI, which is not only useful to humans
1383 download address at PyPI, which is not only useful to humans
1380 browsing the site, but is also picked up by setuptools (the Eggs
1384 browsing the site, but is also picked up by setuptools (the Eggs
1381 machinery). Thanks to Ville and R. Kern for the info/discussion
1385 machinery). Thanks to Ville and R. Kern for the info/discussion
1382 on this.
1386 on this.
1383
1387
1384 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1388 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1385
1389
1386 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1390 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1387 This brings a lot of nice functionality to the pdb mode, which now
1391 This brings a lot of nice functionality to the pdb mode, which now
1388 has tab-completion, syntax highlighting, and better stack handling
1392 has tab-completion, syntax highlighting, and better stack handling
1389 than before. Many thanks to Vivian De Smedt
1393 than before. Many thanks to Vivian De Smedt
1390 <vivian-AT-vdesmedt.com> for the original patches.
1394 <vivian-AT-vdesmedt.com> for the original patches.
1391
1395
1392 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1396 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1393
1397
1394 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1398 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1395 sequence to consistently accept the banner argument. The
1399 sequence to consistently accept the banner argument. The
1396 inconsistency was tripping SAGE, thanks to Gary Zablackis
1400 inconsistency was tripping SAGE, thanks to Gary Zablackis
1397 <gzabl-AT-yahoo.com> for the report.
1401 <gzabl-AT-yahoo.com> for the report.
1398
1402
1399 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1403 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1400
1404
1401 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1405 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1402 Fix bug where a naked 'alias' call in the ipythonrc file would
1406 Fix bug where a naked 'alias' call in the ipythonrc file would
1403 cause a crash. Bug reported by Jorgen Stenarson.
1407 cause a crash. Bug reported by Jorgen Stenarson.
1404
1408
1405 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1409 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1406
1410
1407 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1411 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1408 startup time.
1412 startup time.
1409
1413
1410 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1414 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1411 instances had introduced a bug with globals in normal code. Now
1415 instances had introduced a bug with globals in normal code. Now
1412 it's working in all cases.
1416 it's working in all cases.
1413
1417
1414 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1418 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1415 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1419 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1416 has been introduced to set the default case sensitivity of the
1420 has been introduced to set the default case sensitivity of the
1417 searches. Users can still select either mode at runtime on a
1421 searches. Users can still select either mode at runtime on a
1418 per-search basis.
1422 per-search basis.
1419
1423
1420 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1424 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1421
1425
1422 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1426 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1423 attributes in wildcard searches for subclasses. Modified version
1427 attributes in wildcard searches for subclasses. Modified version
1424 of a patch by Jorgen.
1428 of a patch by Jorgen.
1425
1429
1426 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1430 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1427
1431
1428 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1432 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1429 embedded instances. I added a user_global_ns attribute to the
1433 embedded instances. I added a user_global_ns attribute to the
1430 InteractiveShell class to handle this.
1434 InteractiveShell class to handle this.
1431
1435
1432 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1436 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1433
1437
1434 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1438 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1435 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1439 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1436 (reported under win32, but may happen also in other platforms).
1440 (reported under win32, but may happen also in other platforms).
1437 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1441 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1438
1442
1439 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1443 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1440
1444
1441 * IPython/Magic.py (magic_psearch): new support for wildcard
1445 * IPython/Magic.py (magic_psearch): new support for wildcard
1442 patterns. Now, typing ?a*b will list all names which begin with a
1446 patterns. Now, typing ?a*b will list all names which begin with a
1443 and end in b, for example. The %psearch magic has full
1447 and end in b, for example. The %psearch magic has full
1444 docstrings. Many thanks to JΓΆrgen Stenarson
1448 docstrings. Many thanks to JΓΆrgen Stenarson
1445 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1449 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1446 implementing this functionality.
1450 implementing this functionality.
1447
1451
1448 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1452 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1449
1453
1450 * Manual: fixed long-standing annoyance of double-dashes (as in
1454 * Manual: fixed long-standing annoyance of double-dashes (as in
1451 --prefix=~, for example) being stripped in the HTML version. This
1455 --prefix=~, for example) being stripped in the HTML version. This
1452 is a latex2html bug, but a workaround was provided. Many thanks
1456 is a latex2html bug, but a workaround was provided. Many thanks
1453 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1457 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1454 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1458 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1455 rolling. This seemingly small issue had tripped a number of users
1459 rolling. This seemingly small issue had tripped a number of users
1456 when first installing, so I'm glad to see it gone.
1460 when first installing, so I'm glad to see it gone.
1457
1461
1458 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1462 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1459
1463
1460 * IPython/Extensions/numeric_formats.py: fix missing import,
1464 * IPython/Extensions/numeric_formats.py: fix missing import,
1461 reported by Stephen Walton.
1465 reported by Stephen Walton.
1462
1466
1463 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1467 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1464
1468
1465 * IPython/demo.py: finish demo module, fully documented now.
1469 * IPython/demo.py: finish demo module, fully documented now.
1466
1470
1467 * IPython/genutils.py (file_read): simple little utility to read a
1471 * IPython/genutils.py (file_read): simple little utility to read a
1468 file and ensure it's closed afterwards.
1472 file and ensure it's closed afterwards.
1469
1473
1470 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1474 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1471
1475
1472 * IPython/demo.py (Demo.__init__): added support for individually
1476 * IPython/demo.py (Demo.__init__): added support for individually
1473 tagging blocks for automatic execution.
1477 tagging blocks for automatic execution.
1474
1478
1475 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1479 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1476 syntax-highlighted python sources, requested by John.
1480 syntax-highlighted python sources, requested by John.
1477
1481
1478 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1482 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1479
1483
1480 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1484 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1481 finishing.
1485 finishing.
1482
1486
1483 * IPython/genutils.py (shlex_split): moved from Magic to here,
1487 * IPython/genutils.py (shlex_split): moved from Magic to here,
1484 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1488 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1485
1489
1486 * IPython/demo.py (Demo.__init__): added support for silent
1490 * IPython/demo.py (Demo.__init__): added support for silent
1487 blocks, improved marks as regexps, docstrings written.
1491 blocks, improved marks as regexps, docstrings written.
1488 (Demo.__init__): better docstring, added support for sys.argv.
1492 (Demo.__init__): better docstring, added support for sys.argv.
1489
1493
1490 * IPython/genutils.py (marquee): little utility used by the demo
1494 * IPython/genutils.py (marquee): little utility used by the demo
1491 code, handy in general.
1495 code, handy in general.
1492
1496
1493 * IPython/demo.py (Demo.__init__): new class for interactive
1497 * IPython/demo.py (Demo.__init__): new class for interactive
1494 demos. Not documented yet, I just wrote it in a hurry for
1498 demos. Not documented yet, I just wrote it in a hurry for
1495 scipy'05. Will docstring later.
1499 scipy'05. Will docstring later.
1496
1500
1497 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1501 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1498
1502
1499 * IPython/Shell.py (sigint_handler): Drastic simplification which
1503 * IPython/Shell.py (sigint_handler): Drastic simplification which
1500 also seems to make Ctrl-C work correctly across threads! This is
1504 also seems to make Ctrl-C work correctly across threads! This is
1501 so simple, that I can't beleive I'd missed it before. Needs more
1505 so simple, that I can't beleive I'd missed it before. Needs more
1502 testing, though.
1506 testing, though.
1503 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1507 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1504 like this before...
1508 like this before...
1505
1509
1506 * IPython/genutils.py (get_home_dir): add protection against
1510 * IPython/genutils.py (get_home_dir): add protection against
1507 non-dirs in win32 registry.
1511 non-dirs in win32 registry.
1508
1512
1509 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1513 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1510 bug where dict was mutated while iterating (pysh crash).
1514 bug where dict was mutated while iterating (pysh crash).
1511
1515
1512 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1516 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1513
1517
1514 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1518 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1515 spurious newlines added by this routine. After a report by
1519 spurious newlines added by this routine. After a report by
1516 F. Mantegazza.
1520 F. Mantegazza.
1517
1521
1518 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1522 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1519
1523
1520 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1524 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1521 calls. These were a leftover from the GTK 1.x days, and can cause
1525 calls. These were a leftover from the GTK 1.x days, and can cause
1522 problems in certain cases (after a report by John Hunter).
1526 problems in certain cases (after a report by John Hunter).
1523
1527
1524 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1528 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1525 os.getcwd() fails at init time. Thanks to patch from David Remahl
1529 os.getcwd() fails at init time. Thanks to patch from David Remahl
1526 <chmod007-AT-mac.com>.
1530 <chmod007-AT-mac.com>.
1527 (InteractiveShell.__init__): prevent certain special magics from
1531 (InteractiveShell.__init__): prevent certain special magics from
1528 being shadowed by aliases. Closes
1532 being shadowed by aliases. Closes
1529 http://www.scipy.net/roundup/ipython/issue41.
1533 http://www.scipy.net/roundup/ipython/issue41.
1530
1534
1531 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1535 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1532
1536
1533 * IPython/iplib.py (InteractiveShell.complete): Added new
1537 * IPython/iplib.py (InteractiveShell.complete): Added new
1534 top-level completion method to expose the completion mechanism
1538 top-level completion method to expose the completion mechanism
1535 beyond readline-based environments.
1539 beyond readline-based environments.
1536
1540
1537 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1541 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1538
1542
1539 * tools/ipsvnc (svnversion): fix svnversion capture.
1543 * tools/ipsvnc (svnversion): fix svnversion capture.
1540
1544
1541 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1545 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1542 attribute to self, which was missing. Before, it was set by a
1546 attribute to self, which was missing. Before, it was set by a
1543 routine which in certain cases wasn't being called, so the
1547 routine which in certain cases wasn't being called, so the
1544 instance could end up missing the attribute. This caused a crash.
1548 instance could end up missing the attribute. This caused a crash.
1545 Closes http://www.scipy.net/roundup/ipython/issue40.
1549 Closes http://www.scipy.net/roundup/ipython/issue40.
1546
1550
1547 2005-08-16 Fernando Perez <fperez@colorado.edu>
1551 2005-08-16 Fernando Perez <fperez@colorado.edu>
1548
1552
1549 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1553 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1550 contains non-string attribute. Closes
1554 contains non-string attribute. Closes
1551 http://www.scipy.net/roundup/ipython/issue38.
1555 http://www.scipy.net/roundup/ipython/issue38.
1552
1556
1553 2005-08-14 Fernando Perez <fperez@colorado.edu>
1557 2005-08-14 Fernando Perez <fperez@colorado.edu>
1554
1558
1555 * tools/ipsvnc: Minor improvements, to add changeset info.
1559 * tools/ipsvnc: Minor improvements, to add changeset info.
1556
1560
1557 2005-08-12 Fernando Perez <fperez@colorado.edu>
1561 2005-08-12 Fernando Perez <fperez@colorado.edu>
1558
1562
1559 * IPython/iplib.py (runsource): remove self.code_to_run_src
1563 * IPython/iplib.py (runsource): remove self.code_to_run_src
1560 attribute. I realized this is nothing more than
1564 attribute. I realized this is nothing more than
1561 '\n'.join(self.buffer), and having the same data in two different
1565 '\n'.join(self.buffer), and having the same data in two different
1562 places is just asking for synchronization bugs. This may impact
1566 places is just asking for synchronization bugs. This may impact
1563 people who have custom exception handlers, so I need to warn
1567 people who have custom exception handlers, so I need to warn
1564 ipython-dev about it (F. Mantegazza may use them).
1568 ipython-dev about it (F. Mantegazza may use them).
1565
1569
1566 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1570 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1567
1571
1568 * IPython/genutils.py: fix 2.2 compatibility (generators)
1572 * IPython/genutils.py: fix 2.2 compatibility (generators)
1569
1573
1570 2005-07-18 Fernando Perez <fperez@colorado.edu>
1574 2005-07-18 Fernando Perez <fperez@colorado.edu>
1571
1575
1572 * IPython/genutils.py (get_home_dir): fix to help users with
1576 * IPython/genutils.py (get_home_dir): fix to help users with
1573 invalid $HOME under win32.
1577 invalid $HOME under win32.
1574
1578
1575 2005-07-17 Fernando Perez <fperez@colorado.edu>
1579 2005-07-17 Fernando Perez <fperez@colorado.edu>
1576
1580
1577 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1581 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1578 some old hacks and clean up a bit other routines; code should be
1582 some old hacks and clean up a bit other routines; code should be
1579 simpler and a bit faster.
1583 simpler and a bit faster.
1580
1584
1581 * IPython/iplib.py (interact): removed some last-resort attempts
1585 * IPython/iplib.py (interact): removed some last-resort attempts
1582 to survive broken stdout/stderr. That code was only making it
1586 to survive broken stdout/stderr. That code was only making it
1583 harder to abstract out the i/o (necessary for gui integration),
1587 harder to abstract out the i/o (necessary for gui integration),
1584 and the crashes it could prevent were extremely rare in practice
1588 and the crashes it could prevent were extremely rare in practice
1585 (besides being fully user-induced in a pretty violent manner).
1589 (besides being fully user-induced in a pretty violent manner).
1586
1590
1587 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1591 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1588 Nothing major yet, but the code is simpler to read; this should
1592 Nothing major yet, but the code is simpler to read; this should
1589 make it easier to do more serious modifications in the future.
1593 make it easier to do more serious modifications in the future.
1590
1594
1591 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1595 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1592 which broke in .15 (thanks to a report by Ville).
1596 which broke in .15 (thanks to a report by Ville).
1593
1597
1594 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1598 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1595 be quite correct, I know next to nothing about unicode). This
1599 be quite correct, I know next to nothing about unicode). This
1596 will allow unicode strings to be used in prompts, amongst other
1600 will allow unicode strings to be used in prompts, amongst other
1597 cases. It also will prevent ipython from crashing when unicode
1601 cases. It also will prevent ipython from crashing when unicode
1598 shows up unexpectedly in many places. If ascii encoding fails, we
1602 shows up unexpectedly in many places. If ascii encoding fails, we
1599 assume utf_8. Currently the encoding is not a user-visible
1603 assume utf_8. Currently the encoding is not a user-visible
1600 setting, though it could be made so if there is demand for it.
1604 setting, though it could be made so if there is demand for it.
1601
1605
1602 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1606 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1603
1607
1604 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1608 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1605
1609
1606 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1610 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1607
1611
1608 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1612 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1609 code can work transparently for 2.2/2.3.
1613 code can work transparently for 2.2/2.3.
1610
1614
1611 2005-07-16 Fernando Perez <fperez@colorado.edu>
1615 2005-07-16 Fernando Perez <fperez@colorado.edu>
1612
1616
1613 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1617 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1614 out of the color scheme table used for coloring exception
1618 out of the color scheme table used for coloring exception
1615 tracebacks. This allows user code to add new schemes at runtime.
1619 tracebacks. This allows user code to add new schemes at runtime.
1616 This is a minimally modified version of the patch at
1620 This is a minimally modified version of the patch at
1617 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1621 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1618 for the contribution.
1622 for the contribution.
1619
1623
1620 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1624 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1621 slightly modified version of the patch in
1625 slightly modified version of the patch in
1622 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1626 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1623 to remove the previous try/except solution (which was costlier).
1627 to remove the previous try/except solution (which was costlier).
1624 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1628 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1625
1629
1626 2005-06-08 Fernando Perez <fperez@colorado.edu>
1630 2005-06-08 Fernando Perez <fperez@colorado.edu>
1627
1631
1628 * IPython/iplib.py (write/write_err): Add methods to abstract all
1632 * IPython/iplib.py (write/write_err): Add methods to abstract all
1629 I/O a bit more.
1633 I/O a bit more.
1630
1634
1631 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1635 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1632 warning, reported by Aric Hagberg, fix by JD Hunter.
1636 warning, reported by Aric Hagberg, fix by JD Hunter.
1633
1637
1634 2005-06-02 *** Released version 0.6.15
1638 2005-06-02 *** Released version 0.6.15
1635
1639
1636 2005-06-01 Fernando Perez <fperez@colorado.edu>
1640 2005-06-01 Fernando Perez <fperez@colorado.edu>
1637
1641
1638 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1642 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1639 tab-completion of filenames within open-quoted strings. Note that
1643 tab-completion of filenames within open-quoted strings. Note that
1640 this requires that in ~/.ipython/ipythonrc, users change the
1644 this requires that in ~/.ipython/ipythonrc, users change the
1641 readline delimiters configuration to read:
1645 readline delimiters configuration to read:
1642
1646
1643 readline_remove_delims -/~
1647 readline_remove_delims -/~
1644
1648
1645
1649
1646 2005-05-31 *** Released version 0.6.14
1650 2005-05-31 *** Released version 0.6.14
1647
1651
1648 2005-05-29 Fernando Perez <fperez@colorado.edu>
1652 2005-05-29 Fernando Perez <fperez@colorado.edu>
1649
1653
1650 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1654 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1651 with files not on the filesystem. Reported by Eliyahu Sandler
1655 with files not on the filesystem. Reported by Eliyahu Sandler
1652 <eli@gondolin.net>
1656 <eli@gondolin.net>
1653
1657
1654 2005-05-22 Fernando Perez <fperez@colorado.edu>
1658 2005-05-22 Fernando Perez <fperez@colorado.edu>
1655
1659
1656 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1660 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1657 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1661 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1658
1662
1659 2005-05-19 Fernando Perez <fperez@colorado.edu>
1663 2005-05-19 Fernando Perez <fperez@colorado.edu>
1660
1664
1661 * IPython/iplib.py (safe_execfile): close a file which could be
1665 * IPython/iplib.py (safe_execfile): close a file which could be
1662 left open (causing problems in win32, which locks open files).
1666 left open (causing problems in win32, which locks open files).
1663 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1667 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1664
1668
1665 2005-05-18 Fernando Perez <fperez@colorado.edu>
1669 2005-05-18 Fernando Perez <fperez@colorado.edu>
1666
1670
1667 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1671 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1668 keyword arguments correctly to safe_execfile().
1672 keyword arguments correctly to safe_execfile().
1669
1673
1670 2005-05-13 Fernando Perez <fperez@colorado.edu>
1674 2005-05-13 Fernando Perez <fperez@colorado.edu>
1671
1675
1672 * ipython.1: Added info about Qt to manpage, and threads warning
1676 * ipython.1: Added info about Qt to manpage, and threads warning
1673 to usage page (invoked with --help).
1677 to usage page (invoked with --help).
1674
1678
1675 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1679 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1676 new matcher (it goes at the end of the priority list) to do
1680 new matcher (it goes at the end of the priority list) to do
1677 tab-completion on named function arguments. Submitted by George
1681 tab-completion on named function arguments. Submitted by George
1678 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1682 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1679 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1683 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1680 for more details.
1684 for more details.
1681
1685
1682 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1686 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1683 SystemExit exceptions in the script being run. Thanks to a report
1687 SystemExit exceptions in the script being run. Thanks to a report
1684 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1688 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1685 producing very annoying behavior when running unit tests.
1689 producing very annoying behavior when running unit tests.
1686
1690
1687 2005-05-12 Fernando Perez <fperez@colorado.edu>
1691 2005-05-12 Fernando Perez <fperez@colorado.edu>
1688
1692
1689 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1693 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1690 which I'd broken (again) due to a changed regexp. In the process,
1694 which I'd broken (again) due to a changed regexp. In the process,
1691 added ';' as an escape to auto-quote the whole line without
1695 added ';' as an escape to auto-quote the whole line without
1692 splitting its arguments. Thanks to a report by Jerry McRae
1696 splitting its arguments. Thanks to a report by Jerry McRae
1693 <qrs0xyc02-AT-sneakemail.com>.
1697 <qrs0xyc02-AT-sneakemail.com>.
1694
1698
1695 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1699 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1696 possible crashes caused by a TokenError. Reported by Ed Schofield
1700 possible crashes caused by a TokenError. Reported by Ed Schofield
1697 <schofield-AT-ftw.at>.
1701 <schofield-AT-ftw.at>.
1698
1702
1699 2005-05-06 Fernando Perez <fperez@colorado.edu>
1703 2005-05-06 Fernando Perez <fperez@colorado.edu>
1700
1704
1701 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1705 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1702
1706
1703 2005-04-29 Fernando Perez <fperez@colorado.edu>
1707 2005-04-29 Fernando Perez <fperez@colorado.edu>
1704
1708
1705 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1709 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1706 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1710 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1707 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1711 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1708 which provides support for Qt interactive usage (similar to the
1712 which provides support for Qt interactive usage (similar to the
1709 existing one for WX and GTK). This had been often requested.
1713 existing one for WX and GTK). This had been often requested.
1710
1714
1711 2005-04-14 *** Released version 0.6.13
1715 2005-04-14 *** Released version 0.6.13
1712
1716
1713 2005-04-08 Fernando Perez <fperez@colorado.edu>
1717 2005-04-08 Fernando Perez <fperez@colorado.edu>
1714
1718
1715 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1719 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1716 from _ofind, which gets called on almost every input line. Now,
1720 from _ofind, which gets called on almost every input line. Now,
1717 we only try to get docstrings if they are actually going to be
1721 we only try to get docstrings if they are actually going to be
1718 used (the overhead of fetching unnecessary docstrings can be
1722 used (the overhead of fetching unnecessary docstrings can be
1719 noticeable for certain objects, such as Pyro proxies).
1723 noticeable for certain objects, such as Pyro proxies).
1720
1724
1721 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1725 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1722 for completers. For some reason I had been passing them the state
1726 for completers. For some reason I had been passing them the state
1723 variable, which completers never actually need, and was in
1727 variable, which completers never actually need, and was in
1724 conflict with the rlcompleter API. Custom completers ONLY need to
1728 conflict with the rlcompleter API. Custom completers ONLY need to
1725 take the text parameter.
1729 take the text parameter.
1726
1730
1727 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1731 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1728 work correctly in pysh. I've also moved all the logic which used
1732 work correctly in pysh. I've also moved all the logic which used
1729 to be in pysh.py here, which will prevent problems with future
1733 to be in pysh.py here, which will prevent problems with future
1730 upgrades. However, this time I must warn users to update their
1734 upgrades. However, this time I must warn users to update their
1731 pysh profile to include the line
1735 pysh profile to include the line
1732
1736
1733 import_all IPython.Extensions.InterpreterExec
1737 import_all IPython.Extensions.InterpreterExec
1734
1738
1735 because otherwise things won't work for them. They MUST also
1739 because otherwise things won't work for them. They MUST also
1736 delete pysh.py and the line
1740 delete pysh.py and the line
1737
1741
1738 execfile pysh.py
1742 execfile pysh.py
1739
1743
1740 from their ipythonrc-pysh.
1744 from their ipythonrc-pysh.
1741
1745
1742 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1746 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1743 robust in the face of objects whose dir() returns non-strings
1747 robust in the face of objects whose dir() returns non-strings
1744 (which it shouldn't, but some broken libs like ITK do). Thanks to
1748 (which it shouldn't, but some broken libs like ITK do). Thanks to
1745 a patch by John Hunter (implemented differently, though). Also
1749 a patch by John Hunter (implemented differently, though). Also
1746 minor improvements by using .extend instead of + on lists.
1750 minor improvements by using .extend instead of + on lists.
1747
1751
1748 * pysh.py:
1752 * pysh.py:
1749
1753
1750 2005-04-06 Fernando Perez <fperez@colorado.edu>
1754 2005-04-06 Fernando Perez <fperez@colorado.edu>
1751
1755
1752 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1756 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1753 by default, so that all users benefit from it. Those who don't
1757 by default, so that all users benefit from it. Those who don't
1754 want it can still turn it off.
1758 want it can still turn it off.
1755
1759
1756 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1760 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1757 config file, I'd forgotten about this, so users were getting it
1761 config file, I'd forgotten about this, so users were getting it
1758 off by default.
1762 off by default.
1759
1763
1760 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1764 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1761 consistency. Now magics can be called in multiline statements,
1765 consistency. Now magics can be called in multiline statements,
1762 and python variables can be expanded in magic calls via $var.
1766 and python variables can be expanded in magic calls via $var.
1763 This makes the magic system behave just like aliases or !system
1767 This makes the magic system behave just like aliases or !system
1764 calls.
1768 calls.
1765
1769
1766 2005-03-28 Fernando Perez <fperez@colorado.edu>
1770 2005-03-28 Fernando Perez <fperez@colorado.edu>
1767
1771
1768 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1772 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1769 expensive string additions for building command. Add support for
1773 expensive string additions for building command. Add support for
1770 trailing ';' when autocall is used.
1774 trailing ';' when autocall is used.
1771
1775
1772 2005-03-26 Fernando Perez <fperez@colorado.edu>
1776 2005-03-26 Fernando Perez <fperez@colorado.edu>
1773
1777
1774 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1778 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1775 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1779 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1776 ipython.el robust against prompts with any number of spaces
1780 ipython.el robust against prompts with any number of spaces
1777 (including 0) after the ':' character.
1781 (including 0) after the ':' character.
1778
1782
1779 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1783 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1780 continuation prompt, which misled users to think the line was
1784 continuation prompt, which misled users to think the line was
1781 already indented. Closes debian Bug#300847, reported to me by
1785 already indented. Closes debian Bug#300847, reported to me by
1782 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1786 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1783
1787
1784 2005-03-23 Fernando Perez <fperez@colorado.edu>
1788 2005-03-23 Fernando Perez <fperez@colorado.edu>
1785
1789
1786 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1790 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1787 properly aligned if they have embedded newlines.
1791 properly aligned if they have embedded newlines.
1788
1792
1789 * IPython/iplib.py (runlines): Add a public method to expose
1793 * IPython/iplib.py (runlines): Add a public method to expose
1790 IPython's code execution machinery, so that users can run strings
1794 IPython's code execution machinery, so that users can run strings
1791 as if they had been typed at the prompt interactively.
1795 as if they had been typed at the prompt interactively.
1792 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1796 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1793 methods which can call the system shell, but with python variable
1797 methods which can call the system shell, but with python variable
1794 expansion. The three such methods are: __IPYTHON__.system,
1798 expansion. The three such methods are: __IPYTHON__.system,
1795 .getoutput and .getoutputerror. These need to be documented in a
1799 .getoutput and .getoutputerror. These need to be documented in a
1796 'public API' section (to be written) of the manual.
1800 'public API' section (to be written) of the manual.
1797
1801
1798 2005-03-20 Fernando Perez <fperez@colorado.edu>
1802 2005-03-20 Fernando Perez <fperez@colorado.edu>
1799
1803
1800 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1804 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1801 for custom exception handling. This is quite powerful, and it
1805 for custom exception handling. This is quite powerful, and it
1802 allows for user-installable exception handlers which can trap
1806 allows for user-installable exception handlers which can trap
1803 custom exceptions at runtime and treat them separately from
1807 custom exceptions at runtime and treat them separately from
1804 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1808 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1805 Mantegazza <mantegazza-AT-ill.fr>.
1809 Mantegazza <mantegazza-AT-ill.fr>.
1806 (InteractiveShell.set_custom_completer): public API function to
1810 (InteractiveShell.set_custom_completer): public API function to
1807 add new completers at runtime.
1811 add new completers at runtime.
1808
1812
1809 2005-03-19 Fernando Perez <fperez@colorado.edu>
1813 2005-03-19 Fernando Perez <fperez@colorado.edu>
1810
1814
1811 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1815 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1812 allow objects which provide their docstrings via non-standard
1816 allow objects which provide their docstrings via non-standard
1813 mechanisms (like Pyro proxies) to still be inspected by ipython's
1817 mechanisms (like Pyro proxies) to still be inspected by ipython's
1814 ? system.
1818 ? system.
1815
1819
1816 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1820 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1817 automatic capture system. I tried quite hard to make it work
1821 automatic capture system. I tried quite hard to make it work
1818 reliably, and simply failed. I tried many combinations with the
1822 reliably, and simply failed. I tried many combinations with the
1819 subprocess module, but eventually nothing worked in all needed
1823 subprocess module, but eventually nothing worked in all needed
1820 cases (not blocking stdin for the child, duplicating stdout
1824 cases (not blocking stdin for the child, duplicating stdout
1821 without blocking, etc). The new %sc/%sx still do capture to these
1825 without blocking, etc). The new %sc/%sx still do capture to these
1822 magical list/string objects which make shell use much more
1826 magical list/string objects which make shell use much more
1823 conveninent, so not all is lost.
1827 conveninent, so not all is lost.
1824
1828
1825 XXX - FIX MANUAL for the change above!
1829 XXX - FIX MANUAL for the change above!
1826
1830
1827 (runsource): I copied code.py's runsource() into ipython to modify
1831 (runsource): I copied code.py's runsource() into ipython to modify
1828 it a bit. Now the code object and source to be executed are
1832 it a bit. Now the code object and source to be executed are
1829 stored in ipython. This makes this info accessible to third-party
1833 stored in ipython. This makes this info accessible to third-party
1830 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1834 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1831 Mantegazza <mantegazza-AT-ill.fr>.
1835 Mantegazza <mantegazza-AT-ill.fr>.
1832
1836
1833 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1837 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1834 history-search via readline (like C-p/C-n). I'd wanted this for a
1838 history-search via readline (like C-p/C-n). I'd wanted this for a
1835 long time, but only recently found out how to do it. For users
1839 long time, but only recently found out how to do it. For users
1836 who already have their ipythonrc files made and want this, just
1840 who already have their ipythonrc files made and want this, just
1837 add:
1841 add:
1838
1842
1839 readline_parse_and_bind "\e[A": history-search-backward
1843 readline_parse_and_bind "\e[A": history-search-backward
1840 readline_parse_and_bind "\e[B": history-search-forward
1844 readline_parse_and_bind "\e[B": history-search-forward
1841
1845
1842 2005-03-18 Fernando Perez <fperez@colorado.edu>
1846 2005-03-18 Fernando Perez <fperez@colorado.edu>
1843
1847
1844 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1848 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1845 LSString and SList classes which allow transparent conversions
1849 LSString and SList classes which allow transparent conversions
1846 between list mode and whitespace-separated string.
1850 between list mode and whitespace-separated string.
1847 (magic_r): Fix recursion problem in %r.
1851 (magic_r): Fix recursion problem in %r.
1848
1852
1849 * IPython/genutils.py (LSString): New class to be used for
1853 * IPython/genutils.py (LSString): New class to be used for
1850 automatic storage of the results of all alias/system calls in _o
1854 automatic storage of the results of all alias/system calls in _o
1851 and _e (stdout/err). These provide a .l/.list attribute which
1855 and _e (stdout/err). These provide a .l/.list attribute which
1852 does automatic splitting on newlines. This means that for most
1856 does automatic splitting on newlines. This means that for most
1853 uses, you'll never need to do capturing of output with %sc/%sx
1857 uses, you'll never need to do capturing of output with %sc/%sx
1854 anymore, since ipython keeps this always done for you. Note that
1858 anymore, since ipython keeps this always done for you. Note that
1855 only the LAST results are stored, the _o/e variables are
1859 only the LAST results are stored, the _o/e variables are
1856 overwritten on each call. If you need to save their contents
1860 overwritten on each call. If you need to save their contents
1857 further, simply bind them to any other name.
1861 further, simply bind them to any other name.
1858
1862
1859 2005-03-17 Fernando Perez <fperez@colorado.edu>
1863 2005-03-17 Fernando Perez <fperez@colorado.edu>
1860
1864
1861 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1865 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1862 prompt namespace handling.
1866 prompt namespace handling.
1863
1867
1864 2005-03-16 Fernando Perez <fperez@colorado.edu>
1868 2005-03-16 Fernando Perez <fperez@colorado.edu>
1865
1869
1866 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1870 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1867 classic prompts to be '>>> ' (final space was missing, and it
1871 classic prompts to be '>>> ' (final space was missing, and it
1868 trips the emacs python mode).
1872 trips the emacs python mode).
1869 (BasePrompt.__str__): Added safe support for dynamic prompt
1873 (BasePrompt.__str__): Added safe support for dynamic prompt
1870 strings. Now you can set your prompt string to be '$x', and the
1874 strings. Now you can set your prompt string to be '$x', and the
1871 value of x will be printed from your interactive namespace. The
1875 value of x will be printed from your interactive namespace. The
1872 interpolation syntax includes the full Itpl support, so
1876 interpolation syntax includes the full Itpl support, so
1873 ${foo()+x+bar()} is a valid prompt string now, and the function
1877 ${foo()+x+bar()} is a valid prompt string now, and the function
1874 calls will be made at runtime.
1878 calls will be made at runtime.
1875
1879
1876 2005-03-15 Fernando Perez <fperez@colorado.edu>
1880 2005-03-15 Fernando Perez <fperez@colorado.edu>
1877
1881
1878 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1882 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1879 avoid name clashes in pylab. %hist still works, it just forwards
1883 avoid name clashes in pylab. %hist still works, it just forwards
1880 the call to %history.
1884 the call to %history.
1881
1885
1882 2005-03-02 *** Released version 0.6.12
1886 2005-03-02 *** Released version 0.6.12
1883
1887
1884 2005-03-02 Fernando Perez <fperez@colorado.edu>
1888 2005-03-02 Fernando Perez <fperez@colorado.edu>
1885
1889
1886 * IPython/iplib.py (handle_magic): log magic calls properly as
1890 * IPython/iplib.py (handle_magic): log magic calls properly as
1887 ipmagic() function calls.
1891 ipmagic() function calls.
1888
1892
1889 * IPython/Magic.py (magic_time): Improved %time to support
1893 * IPython/Magic.py (magic_time): Improved %time to support
1890 statements and provide wall-clock as well as CPU time.
1894 statements and provide wall-clock as well as CPU time.
1891
1895
1892 2005-02-27 Fernando Perez <fperez@colorado.edu>
1896 2005-02-27 Fernando Perez <fperez@colorado.edu>
1893
1897
1894 * IPython/hooks.py: New hooks module, to expose user-modifiable
1898 * IPython/hooks.py: New hooks module, to expose user-modifiable
1895 IPython functionality in a clean manner. For now only the editor
1899 IPython functionality in a clean manner. For now only the editor
1896 hook is actually written, and other thigns which I intend to turn
1900 hook is actually written, and other thigns which I intend to turn
1897 into proper hooks aren't yet there. The display and prefilter
1901 into proper hooks aren't yet there. The display and prefilter
1898 stuff, for example, should be hooks. But at least now the
1902 stuff, for example, should be hooks. But at least now the
1899 framework is in place, and the rest can be moved here with more
1903 framework is in place, and the rest can be moved here with more
1900 time later. IPython had had a .hooks variable for a long time for
1904 time later. IPython had had a .hooks variable for a long time for
1901 this purpose, but I'd never actually used it for anything.
1905 this purpose, but I'd never actually used it for anything.
1902
1906
1903 2005-02-26 Fernando Perez <fperez@colorado.edu>
1907 2005-02-26 Fernando Perez <fperez@colorado.edu>
1904
1908
1905 * IPython/ipmaker.py (make_IPython): make the default ipython
1909 * IPython/ipmaker.py (make_IPython): make the default ipython
1906 directory be called _ipython under win32, to follow more the
1910 directory be called _ipython under win32, to follow more the
1907 naming peculiarities of that platform (where buggy software like
1911 naming peculiarities of that platform (where buggy software like
1908 Visual Sourcesafe breaks with .named directories). Reported by
1912 Visual Sourcesafe breaks with .named directories). Reported by
1909 Ville Vainio.
1913 Ville Vainio.
1910
1914
1911 2005-02-23 Fernando Perez <fperez@colorado.edu>
1915 2005-02-23 Fernando Perez <fperez@colorado.edu>
1912
1916
1913 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1917 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1914 auto_aliases for win32 which were causing problems. Users can
1918 auto_aliases for win32 which were causing problems. Users can
1915 define the ones they personally like.
1919 define the ones they personally like.
1916
1920
1917 2005-02-21 Fernando Perez <fperez@colorado.edu>
1921 2005-02-21 Fernando Perez <fperez@colorado.edu>
1918
1922
1919 * IPython/Magic.py (magic_time): new magic to time execution of
1923 * IPython/Magic.py (magic_time): new magic to time execution of
1920 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1924 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1921
1925
1922 2005-02-19 Fernando Perez <fperez@colorado.edu>
1926 2005-02-19 Fernando Perez <fperez@colorado.edu>
1923
1927
1924 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1928 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1925 into keys (for prompts, for example).
1929 into keys (for prompts, for example).
1926
1930
1927 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1931 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1928 prompts in case users want them. This introduces a small behavior
1932 prompts in case users want them. This introduces a small behavior
1929 change: ipython does not automatically add a space to all prompts
1933 change: ipython does not automatically add a space to all prompts
1930 anymore. To get the old prompts with a space, users should add it
1934 anymore. To get the old prompts with a space, users should add it
1931 manually to their ipythonrc file, so for example prompt_in1 should
1935 manually to their ipythonrc file, so for example prompt_in1 should
1932 now read 'In [\#]: ' instead of 'In [\#]:'.
1936 now read 'In [\#]: ' instead of 'In [\#]:'.
1933 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1937 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1934 file) to control left-padding of secondary prompts.
1938 file) to control left-padding of secondary prompts.
1935
1939
1936 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1940 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1937 the profiler can't be imported. Fix for Debian, which removed
1941 the profiler can't be imported. Fix for Debian, which removed
1938 profile.py because of License issues. I applied a slightly
1942 profile.py because of License issues. I applied a slightly
1939 modified version of the original Debian patch at
1943 modified version of the original Debian patch at
1940 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1944 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1941
1945
1942 2005-02-17 Fernando Perez <fperez@colorado.edu>
1946 2005-02-17 Fernando Perez <fperez@colorado.edu>
1943
1947
1944 * IPython/genutils.py (native_line_ends): Fix bug which would
1948 * IPython/genutils.py (native_line_ends): Fix bug which would
1945 cause improper line-ends under win32 b/c I was not opening files
1949 cause improper line-ends under win32 b/c I was not opening files
1946 in binary mode. Bug report and fix thanks to Ville.
1950 in binary mode. Bug report and fix thanks to Ville.
1947
1951
1948 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1952 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1949 trying to catch spurious foo[1] autocalls. My fix actually broke
1953 trying to catch spurious foo[1] autocalls. My fix actually broke
1950 ',/' autoquote/call with explicit escape (bad regexp).
1954 ',/' autoquote/call with explicit escape (bad regexp).
1951
1955
1952 2005-02-15 *** Released version 0.6.11
1956 2005-02-15 *** Released version 0.6.11
1953
1957
1954 2005-02-14 Fernando Perez <fperez@colorado.edu>
1958 2005-02-14 Fernando Perez <fperez@colorado.edu>
1955
1959
1956 * IPython/background_jobs.py: New background job management
1960 * IPython/background_jobs.py: New background job management
1957 subsystem. This is implemented via a new set of classes, and
1961 subsystem. This is implemented via a new set of classes, and
1958 IPython now provides a builtin 'jobs' object for background job
1962 IPython now provides a builtin 'jobs' object for background job
1959 execution. A convenience %bg magic serves as a lightweight
1963 execution. A convenience %bg magic serves as a lightweight
1960 frontend for starting the more common type of calls. This was
1964 frontend for starting the more common type of calls. This was
1961 inspired by discussions with B. Granger and the BackgroundCommand
1965 inspired by discussions with B. Granger and the BackgroundCommand
1962 class described in the book Python Scripting for Computational
1966 class described in the book Python Scripting for Computational
1963 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1967 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1964 (although ultimately no code from this text was used, as IPython's
1968 (although ultimately no code from this text was used, as IPython's
1965 system is a separate implementation).
1969 system is a separate implementation).
1966
1970
1967 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1971 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1968 to control the completion of single/double underscore names
1972 to control the completion of single/double underscore names
1969 separately. As documented in the example ipytonrc file, the
1973 separately. As documented in the example ipytonrc file, the
1970 readline_omit__names variable can now be set to 2, to omit even
1974 readline_omit__names variable can now be set to 2, to omit even
1971 single underscore names. Thanks to a patch by Brian Wong
1975 single underscore names. Thanks to a patch by Brian Wong
1972 <BrianWong-AT-AirgoNetworks.Com>.
1976 <BrianWong-AT-AirgoNetworks.Com>.
1973 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1977 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1974 be autocalled as foo([1]) if foo were callable. A problem for
1978 be autocalled as foo([1]) if foo were callable. A problem for
1975 things which are both callable and implement __getitem__.
1979 things which are both callable and implement __getitem__.
1976 (init_readline): Fix autoindentation for win32. Thanks to a patch
1980 (init_readline): Fix autoindentation for win32. Thanks to a patch
1977 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1981 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1978
1982
1979 2005-02-12 Fernando Perez <fperez@colorado.edu>
1983 2005-02-12 Fernando Perez <fperez@colorado.edu>
1980
1984
1981 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1985 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1982 which I had written long ago to sort out user error messages which
1986 which I had written long ago to sort out user error messages which
1983 may occur during startup. This seemed like a good idea initially,
1987 may occur during startup. This seemed like a good idea initially,
1984 but it has proven a disaster in retrospect. I don't want to
1988 but it has proven a disaster in retrospect. I don't want to
1985 change much code for now, so my fix is to set the internal 'debug'
1989 change much code for now, so my fix is to set the internal 'debug'
1986 flag to true everywhere, whose only job was precisely to control
1990 flag to true everywhere, whose only job was precisely to control
1987 this subsystem. This closes issue 28 (as well as avoiding all
1991 this subsystem. This closes issue 28 (as well as avoiding all
1988 sorts of strange hangups which occur from time to time).
1992 sorts of strange hangups which occur from time to time).
1989
1993
1990 2005-02-07 Fernando Perez <fperez@colorado.edu>
1994 2005-02-07 Fernando Perez <fperez@colorado.edu>
1991
1995
1992 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1996 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1993 previous call produced a syntax error.
1997 previous call produced a syntax error.
1994
1998
1995 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1999 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1996 classes without constructor.
2000 classes without constructor.
1997
2001
1998 2005-02-06 Fernando Perez <fperez@colorado.edu>
2002 2005-02-06 Fernando Perez <fperez@colorado.edu>
1999
2003
2000 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2004 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2001 completions with the results of each matcher, so we return results
2005 completions with the results of each matcher, so we return results
2002 to the user from all namespaces. This breaks with ipython
2006 to the user from all namespaces. This breaks with ipython
2003 tradition, but I think it's a nicer behavior. Now you get all
2007 tradition, but I think it's a nicer behavior. Now you get all
2004 possible completions listed, from all possible namespaces (python,
2008 possible completions listed, from all possible namespaces (python,
2005 filesystem, magics...) After a request by John Hunter
2009 filesystem, magics...) After a request by John Hunter
2006 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2010 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2007
2011
2008 2005-02-05 Fernando Perez <fperez@colorado.edu>
2012 2005-02-05 Fernando Perez <fperez@colorado.edu>
2009
2013
2010 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2014 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2011 the call had quote characters in it (the quotes were stripped).
2015 the call had quote characters in it (the quotes were stripped).
2012
2016
2013 2005-01-31 Fernando Perez <fperez@colorado.edu>
2017 2005-01-31 Fernando Perez <fperez@colorado.edu>
2014
2018
2015 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2019 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2016 Itpl.itpl() to make the code more robust against psyco
2020 Itpl.itpl() to make the code more robust against psyco
2017 optimizations.
2021 optimizations.
2018
2022
2019 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2023 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2020 of causing an exception. Quicker, cleaner.
2024 of causing an exception. Quicker, cleaner.
2021
2025
2022 2005-01-28 Fernando Perez <fperez@colorado.edu>
2026 2005-01-28 Fernando Perez <fperez@colorado.edu>
2023
2027
2024 * scripts/ipython_win_post_install.py (install): hardcode
2028 * scripts/ipython_win_post_install.py (install): hardcode
2025 sys.prefix+'python.exe' as the executable path. It turns out that
2029 sys.prefix+'python.exe' as the executable path. It turns out that
2026 during the post-installation run, sys.executable resolves to the
2030 during the post-installation run, sys.executable resolves to the
2027 name of the binary installer! I should report this as a distutils
2031 name of the binary installer! I should report this as a distutils
2028 bug, I think. I updated the .10 release with this tiny fix, to
2032 bug, I think. I updated the .10 release with this tiny fix, to
2029 avoid annoying the lists further.
2033 avoid annoying the lists further.
2030
2034
2031 2005-01-27 *** Released version 0.6.10
2035 2005-01-27 *** Released version 0.6.10
2032
2036
2033 2005-01-27 Fernando Perez <fperez@colorado.edu>
2037 2005-01-27 Fernando Perez <fperez@colorado.edu>
2034
2038
2035 * IPython/numutils.py (norm): Added 'inf' as optional name for
2039 * IPython/numutils.py (norm): Added 'inf' as optional name for
2036 L-infinity norm, included references to mathworld.com for vector
2040 L-infinity norm, included references to mathworld.com for vector
2037 norm definitions.
2041 norm definitions.
2038 (amin/amax): added amin/amax for array min/max. Similar to what
2042 (amin/amax): added amin/amax for array min/max. Similar to what
2039 pylab ships with after the recent reorganization of names.
2043 pylab ships with after the recent reorganization of names.
2040 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2044 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2041
2045
2042 * ipython.el: committed Alex's recent fixes and improvements.
2046 * ipython.el: committed Alex's recent fixes and improvements.
2043 Tested with python-mode from CVS, and it looks excellent. Since
2047 Tested with python-mode from CVS, and it looks excellent. Since
2044 python-mode hasn't released anything in a while, I'm temporarily
2048 python-mode hasn't released anything in a while, I'm temporarily
2045 putting a copy of today's CVS (v 4.70) of python-mode in:
2049 putting a copy of today's CVS (v 4.70) of python-mode in:
2046 http://ipython.scipy.org/tmp/python-mode.el
2050 http://ipython.scipy.org/tmp/python-mode.el
2047
2051
2048 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2052 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2049 sys.executable for the executable name, instead of assuming it's
2053 sys.executable for the executable name, instead of assuming it's
2050 called 'python.exe' (the post-installer would have produced broken
2054 called 'python.exe' (the post-installer would have produced broken
2051 setups on systems with a differently named python binary).
2055 setups on systems with a differently named python binary).
2052
2056
2053 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2057 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2054 references to os.linesep, to make the code more
2058 references to os.linesep, to make the code more
2055 platform-independent. This is also part of the win32 coloring
2059 platform-independent. This is also part of the win32 coloring
2056 fixes.
2060 fixes.
2057
2061
2058 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2062 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2059 lines, which actually cause coloring bugs because the length of
2063 lines, which actually cause coloring bugs because the length of
2060 the line is very difficult to correctly compute with embedded
2064 the line is very difficult to correctly compute with embedded
2061 escapes. This was the source of all the coloring problems under
2065 escapes. This was the source of all the coloring problems under
2062 Win32. I think that _finally_, Win32 users have a properly
2066 Win32. I think that _finally_, Win32 users have a properly
2063 working ipython in all respects. This would never have happened
2067 working ipython in all respects. This would never have happened
2064 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2068 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2065
2069
2066 2005-01-26 *** Released version 0.6.9
2070 2005-01-26 *** Released version 0.6.9
2067
2071
2068 2005-01-25 Fernando Perez <fperez@colorado.edu>
2072 2005-01-25 Fernando Perez <fperez@colorado.edu>
2069
2073
2070 * setup.py: finally, we have a true Windows installer, thanks to
2074 * setup.py: finally, we have a true Windows installer, thanks to
2071 the excellent work of Viktor Ransmayr
2075 the excellent work of Viktor Ransmayr
2072 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2076 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2073 Windows users. The setup routine is quite a bit cleaner thanks to
2077 Windows users. The setup routine is quite a bit cleaner thanks to
2074 this, and the post-install script uses the proper functions to
2078 this, and the post-install script uses the proper functions to
2075 allow a clean de-installation using the standard Windows Control
2079 allow a clean de-installation using the standard Windows Control
2076 Panel.
2080 Panel.
2077
2081
2078 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2082 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2079 environment variable under all OSes (including win32) if
2083 environment variable under all OSes (including win32) if
2080 available. This will give consistency to win32 users who have set
2084 available. This will give consistency to win32 users who have set
2081 this variable for any reason. If os.environ['HOME'] fails, the
2085 this variable for any reason. If os.environ['HOME'] fails, the
2082 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2086 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2083
2087
2084 2005-01-24 Fernando Perez <fperez@colorado.edu>
2088 2005-01-24 Fernando Perez <fperez@colorado.edu>
2085
2089
2086 * IPython/numutils.py (empty_like): add empty_like(), similar to
2090 * IPython/numutils.py (empty_like): add empty_like(), similar to
2087 zeros_like() but taking advantage of the new empty() Numeric routine.
2091 zeros_like() but taking advantage of the new empty() Numeric routine.
2088
2092
2089 2005-01-23 *** Released version 0.6.8
2093 2005-01-23 *** Released version 0.6.8
2090
2094
2091 2005-01-22 Fernando Perez <fperez@colorado.edu>
2095 2005-01-22 Fernando Perez <fperez@colorado.edu>
2092
2096
2093 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2097 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2094 automatic show() calls. After discussing things with JDH, it
2098 automatic show() calls. After discussing things with JDH, it
2095 turns out there are too many corner cases where this can go wrong.
2099 turns out there are too many corner cases where this can go wrong.
2096 It's best not to try to be 'too smart', and simply have ipython
2100 It's best not to try to be 'too smart', and simply have ipython
2097 reproduce as much as possible the default behavior of a normal
2101 reproduce as much as possible the default behavior of a normal
2098 python shell.
2102 python shell.
2099
2103
2100 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2104 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2101 line-splitting regexp and _prefilter() to avoid calling getattr()
2105 line-splitting regexp and _prefilter() to avoid calling getattr()
2102 on assignments. This closes
2106 on assignments. This closes
2103 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2107 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2104 readline uses getattr(), so a simple <TAB> keypress is still
2108 readline uses getattr(), so a simple <TAB> keypress is still
2105 enough to trigger getattr() calls on an object.
2109 enough to trigger getattr() calls on an object.
2106
2110
2107 2005-01-21 Fernando Perez <fperez@colorado.edu>
2111 2005-01-21 Fernando Perez <fperez@colorado.edu>
2108
2112
2109 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2113 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2110 docstring under pylab so it doesn't mask the original.
2114 docstring under pylab so it doesn't mask the original.
2111
2115
2112 2005-01-21 *** Released version 0.6.7
2116 2005-01-21 *** Released version 0.6.7
2113
2117
2114 2005-01-21 Fernando Perez <fperez@colorado.edu>
2118 2005-01-21 Fernando Perez <fperez@colorado.edu>
2115
2119
2116 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2120 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2117 signal handling for win32 users in multithreaded mode.
2121 signal handling for win32 users in multithreaded mode.
2118
2122
2119 2005-01-17 Fernando Perez <fperez@colorado.edu>
2123 2005-01-17 Fernando Perez <fperez@colorado.edu>
2120
2124
2121 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2125 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2122 instances with no __init__. After a crash report by Norbert Nemec
2126 instances with no __init__. After a crash report by Norbert Nemec
2123 <Norbert-AT-nemec-online.de>.
2127 <Norbert-AT-nemec-online.de>.
2124
2128
2125 2005-01-14 Fernando Perez <fperez@colorado.edu>
2129 2005-01-14 Fernando Perez <fperez@colorado.edu>
2126
2130
2127 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2131 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2128 names for verbose exceptions, when multiple dotted names and the
2132 names for verbose exceptions, when multiple dotted names and the
2129 'parent' object were present on the same line.
2133 'parent' object were present on the same line.
2130
2134
2131 2005-01-11 Fernando Perez <fperez@colorado.edu>
2135 2005-01-11 Fernando Perez <fperez@colorado.edu>
2132
2136
2133 * IPython/genutils.py (flag_calls): new utility to trap and flag
2137 * IPython/genutils.py (flag_calls): new utility to trap and flag
2134 calls in functions. I need it to clean up matplotlib support.
2138 calls in functions. I need it to clean up matplotlib support.
2135 Also removed some deprecated code in genutils.
2139 Also removed some deprecated code in genutils.
2136
2140
2137 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2141 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2138 that matplotlib scripts called with %run, which don't call show()
2142 that matplotlib scripts called with %run, which don't call show()
2139 themselves, still have their plotting windows open.
2143 themselves, still have their plotting windows open.
2140
2144
2141 2005-01-05 Fernando Perez <fperez@colorado.edu>
2145 2005-01-05 Fernando Perez <fperez@colorado.edu>
2142
2146
2143 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2147 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2144 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2148 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2145
2149
2146 2004-12-19 Fernando Perez <fperez@colorado.edu>
2150 2004-12-19 Fernando Perez <fperez@colorado.edu>
2147
2151
2148 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2152 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2149 parent_runcode, which was an eyesore. The same result can be
2153 parent_runcode, which was an eyesore. The same result can be
2150 obtained with Python's regular superclass mechanisms.
2154 obtained with Python's regular superclass mechanisms.
2151
2155
2152 2004-12-17 Fernando Perez <fperez@colorado.edu>
2156 2004-12-17 Fernando Perez <fperez@colorado.edu>
2153
2157
2154 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2158 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2155 reported by Prabhu.
2159 reported by Prabhu.
2156 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2160 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2157 sys.stderr) instead of explicitly calling sys.stderr. This helps
2161 sys.stderr) instead of explicitly calling sys.stderr. This helps
2158 maintain our I/O abstractions clean, for future GUI embeddings.
2162 maintain our I/O abstractions clean, for future GUI embeddings.
2159
2163
2160 * IPython/genutils.py (info): added new utility for sys.stderr
2164 * IPython/genutils.py (info): added new utility for sys.stderr
2161 unified info message handling (thin wrapper around warn()).
2165 unified info message handling (thin wrapper around warn()).
2162
2166
2163 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2167 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2164 composite (dotted) names on verbose exceptions.
2168 composite (dotted) names on verbose exceptions.
2165 (VerboseTB.nullrepr): harden against another kind of errors which
2169 (VerboseTB.nullrepr): harden against another kind of errors which
2166 Python's inspect module can trigger, and which were crashing
2170 Python's inspect module can trigger, and which were crashing
2167 IPython. Thanks to a report by Marco Lombardi
2171 IPython. Thanks to a report by Marco Lombardi
2168 <mlombard-AT-ma010192.hq.eso.org>.
2172 <mlombard-AT-ma010192.hq.eso.org>.
2169
2173
2170 2004-12-13 *** Released version 0.6.6
2174 2004-12-13 *** Released version 0.6.6
2171
2175
2172 2004-12-12 Fernando Perez <fperez@colorado.edu>
2176 2004-12-12 Fernando Perez <fperez@colorado.edu>
2173
2177
2174 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2178 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2175 generated by pygtk upon initialization if it was built without
2179 generated by pygtk upon initialization if it was built without
2176 threads (for matplotlib users). After a crash reported by
2180 threads (for matplotlib users). After a crash reported by
2177 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2181 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2178
2182
2179 * IPython/ipmaker.py (make_IPython): fix small bug in the
2183 * IPython/ipmaker.py (make_IPython): fix small bug in the
2180 import_some parameter for multiple imports.
2184 import_some parameter for multiple imports.
2181
2185
2182 * IPython/iplib.py (ipmagic): simplified the interface of
2186 * IPython/iplib.py (ipmagic): simplified the interface of
2183 ipmagic() to take a single string argument, just as it would be
2187 ipmagic() to take a single string argument, just as it would be
2184 typed at the IPython cmd line.
2188 typed at the IPython cmd line.
2185 (ipalias): Added new ipalias() with an interface identical to
2189 (ipalias): Added new ipalias() with an interface identical to
2186 ipmagic(). This completes exposing a pure python interface to the
2190 ipmagic(). This completes exposing a pure python interface to the
2187 alias and magic system, which can be used in loops or more complex
2191 alias and magic system, which can be used in loops or more complex
2188 code where IPython's automatic line mangling is not active.
2192 code where IPython's automatic line mangling is not active.
2189
2193
2190 * IPython/genutils.py (timing): changed interface of timing to
2194 * IPython/genutils.py (timing): changed interface of timing to
2191 simply run code once, which is the most common case. timings()
2195 simply run code once, which is the most common case. timings()
2192 remains unchanged, for the cases where you want multiple runs.
2196 remains unchanged, for the cases where you want multiple runs.
2193
2197
2194 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2198 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2195 bug where Python2.2 crashes with exec'ing code which does not end
2199 bug where Python2.2 crashes with exec'ing code which does not end
2196 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2200 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2197 before.
2201 before.
2198
2202
2199 2004-12-10 Fernando Perez <fperez@colorado.edu>
2203 2004-12-10 Fernando Perez <fperez@colorado.edu>
2200
2204
2201 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2205 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2202 -t to -T, to accomodate the new -t flag in %run (the %run and
2206 -t to -T, to accomodate the new -t flag in %run (the %run and
2203 %prun options are kind of intermixed, and it's not easy to change
2207 %prun options are kind of intermixed, and it's not easy to change
2204 this with the limitations of python's getopt).
2208 this with the limitations of python's getopt).
2205
2209
2206 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2210 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2207 the execution of scripts. It's not as fine-tuned as timeit.py,
2211 the execution of scripts. It's not as fine-tuned as timeit.py,
2208 but it works from inside ipython (and under 2.2, which lacks
2212 but it works from inside ipython (and under 2.2, which lacks
2209 timeit.py). Optionally a number of runs > 1 can be given for
2213 timeit.py). Optionally a number of runs > 1 can be given for
2210 timing very short-running code.
2214 timing very short-running code.
2211
2215
2212 * IPython/genutils.py (uniq_stable): new routine which returns a
2216 * IPython/genutils.py (uniq_stable): new routine which returns a
2213 list of unique elements in any iterable, but in stable order of
2217 list of unique elements in any iterable, but in stable order of
2214 appearance. I needed this for the ultraTB fixes, and it's a handy
2218 appearance. I needed this for the ultraTB fixes, and it's a handy
2215 utility.
2219 utility.
2216
2220
2217 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2221 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2218 dotted names in Verbose exceptions. This had been broken since
2222 dotted names in Verbose exceptions. This had been broken since
2219 the very start, now x.y will properly be printed in a Verbose
2223 the very start, now x.y will properly be printed in a Verbose
2220 traceback, instead of x being shown and y appearing always as an
2224 traceback, instead of x being shown and y appearing always as an
2221 'undefined global'. Getting this to work was a bit tricky,
2225 'undefined global'. Getting this to work was a bit tricky,
2222 because by default python tokenizers are stateless. Saved by
2226 because by default python tokenizers are stateless. Saved by
2223 python's ability to easily add a bit of state to an arbitrary
2227 python's ability to easily add a bit of state to an arbitrary
2224 function (without needing to build a full-blown callable object).
2228 function (without needing to build a full-blown callable object).
2225
2229
2226 Also big cleanup of this code, which had horrendous runtime
2230 Also big cleanup of this code, which had horrendous runtime
2227 lookups of zillions of attributes for colorization. Moved all
2231 lookups of zillions of attributes for colorization. Moved all
2228 this code into a few templates, which make it cleaner and quicker.
2232 this code into a few templates, which make it cleaner and quicker.
2229
2233
2230 Printout quality was also improved for Verbose exceptions: one
2234 Printout quality was also improved for Verbose exceptions: one
2231 variable per line, and memory addresses are printed (this can be
2235 variable per line, and memory addresses are printed (this can be
2232 quite handy in nasty debugging situations, which is what Verbose
2236 quite handy in nasty debugging situations, which is what Verbose
2233 is for).
2237 is for).
2234
2238
2235 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2239 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2236 the command line as scripts to be loaded by embedded instances.
2240 the command line as scripts to be loaded by embedded instances.
2237 Doing so has the potential for an infinite recursion if there are
2241 Doing so has the potential for an infinite recursion if there are
2238 exceptions thrown in the process. This fixes a strange crash
2242 exceptions thrown in the process. This fixes a strange crash
2239 reported by Philippe MULLER <muller-AT-irit.fr>.
2243 reported by Philippe MULLER <muller-AT-irit.fr>.
2240
2244
2241 2004-12-09 Fernando Perez <fperez@colorado.edu>
2245 2004-12-09 Fernando Perez <fperez@colorado.edu>
2242
2246
2243 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2247 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2244 to reflect new names in matplotlib, which now expose the
2248 to reflect new names in matplotlib, which now expose the
2245 matlab-compatible interface via a pylab module instead of the
2249 matlab-compatible interface via a pylab module instead of the
2246 'matlab' name. The new code is backwards compatible, so users of
2250 'matlab' name. The new code is backwards compatible, so users of
2247 all matplotlib versions are OK. Patch by J. Hunter.
2251 all matplotlib versions are OK. Patch by J. Hunter.
2248
2252
2249 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2253 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2250 of __init__ docstrings for instances (class docstrings are already
2254 of __init__ docstrings for instances (class docstrings are already
2251 automatically printed). Instances with customized docstrings
2255 automatically printed). Instances with customized docstrings
2252 (indep. of the class) are also recognized and all 3 separate
2256 (indep. of the class) are also recognized and all 3 separate
2253 docstrings are printed (instance, class, constructor). After some
2257 docstrings are printed (instance, class, constructor). After some
2254 comments/suggestions by J. Hunter.
2258 comments/suggestions by J. Hunter.
2255
2259
2256 2004-12-05 Fernando Perez <fperez@colorado.edu>
2260 2004-12-05 Fernando Perez <fperez@colorado.edu>
2257
2261
2258 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2262 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2259 warnings when tab-completion fails and triggers an exception.
2263 warnings when tab-completion fails and triggers an exception.
2260
2264
2261 2004-12-03 Fernando Perez <fperez@colorado.edu>
2265 2004-12-03 Fernando Perez <fperez@colorado.edu>
2262
2266
2263 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2267 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2264 be triggered when using 'run -p'. An incorrect option flag was
2268 be triggered when using 'run -p'. An incorrect option flag was
2265 being set ('d' instead of 'D').
2269 being set ('d' instead of 'D').
2266 (manpage): fix missing escaped \- sign.
2270 (manpage): fix missing escaped \- sign.
2267
2271
2268 2004-11-30 *** Released version 0.6.5
2272 2004-11-30 *** Released version 0.6.5
2269
2273
2270 2004-11-30 Fernando Perez <fperez@colorado.edu>
2274 2004-11-30 Fernando Perez <fperez@colorado.edu>
2271
2275
2272 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2276 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2273 setting with -d option.
2277 setting with -d option.
2274
2278
2275 * setup.py (docfiles): Fix problem where the doc glob I was using
2279 * setup.py (docfiles): Fix problem where the doc glob I was using
2276 was COMPLETELY BROKEN. It was giving the right files by pure
2280 was COMPLETELY BROKEN. It was giving the right files by pure
2277 accident, but failed once I tried to include ipython.el. Note:
2281 accident, but failed once I tried to include ipython.el. Note:
2278 glob() does NOT allow you to do exclusion on multiple endings!
2282 glob() does NOT allow you to do exclusion on multiple endings!
2279
2283
2280 2004-11-29 Fernando Perez <fperez@colorado.edu>
2284 2004-11-29 Fernando Perez <fperez@colorado.edu>
2281
2285
2282 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2286 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2283 the manpage as the source. Better formatting & consistency.
2287 the manpage as the source. Better formatting & consistency.
2284
2288
2285 * IPython/Magic.py (magic_run): Added new -d option, to run
2289 * IPython/Magic.py (magic_run): Added new -d option, to run
2286 scripts under the control of the python pdb debugger. Note that
2290 scripts under the control of the python pdb debugger. Note that
2287 this required changing the %prun option -d to -D, to avoid a clash
2291 this required changing the %prun option -d to -D, to avoid a clash
2288 (since %run must pass options to %prun, and getopt is too dumb to
2292 (since %run must pass options to %prun, and getopt is too dumb to
2289 handle options with string values with embedded spaces). Thanks
2293 handle options with string values with embedded spaces). Thanks
2290 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2294 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2291 (magic_who_ls): added type matching to %who and %whos, so that one
2295 (magic_who_ls): added type matching to %who and %whos, so that one
2292 can filter their output to only include variables of certain
2296 can filter their output to only include variables of certain
2293 types. Another suggestion by Matthew.
2297 types. Another suggestion by Matthew.
2294 (magic_whos): Added memory summaries in kb and Mb for arrays.
2298 (magic_whos): Added memory summaries in kb and Mb for arrays.
2295 (magic_who): Improve formatting (break lines every 9 vars).
2299 (magic_who): Improve formatting (break lines every 9 vars).
2296
2300
2297 2004-11-28 Fernando Perez <fperez@colorado.edu>
2301 2004-11-28 Fernando Perez <fperez@colorado.edu>
2298
2302
2299 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2303 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2300 cache when empty lines were present.
2304 cache when empty lines were present.
2301
2305
2302 2004-11-24 Fernando Perez <fperez@colorado.edu>
2306 2004-11-24 Fernando Perez <fperez@colorado.edu>
2303
2307
2304 * IPython/usage.py (__doc__): document the re-activated threading
2308 * IPython/usage.py (__doc__): document the re-activated threading
2305 options for WX and GTK.
2309 options for WX and GTK.
2306
2310
2307 2004-11-23 Fernando Perez <fperez@colorado.edu>
2311 2004-11-23 Fernando Perez <fperez@colorado.edu>
2308
2312
2309 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2313 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2310 the -wthread and -gthread options, along with a new -tk one to try
2314 the -wthread and -gthread options, along with a new -tk one to try
2311 and coordinate Tk threading with wx/gtk. The tk support is very
2315 and coordinate Tk threading with wx/gtk. The tk support is very
2312 platform dependent, since it seems to require Tcl and Tk to be
2316 platform dependent, since it seems to require Tcl and Tk to be
2313 built with threads (Fedora1/2 appears NOT to have it, but in
2317 built with threads (Fedora1/2 appears NOT to have it, but in
2314 Prabhu's Debian boxes it works OK). But even with some Tk
2318 Prabhu's Debian boxes it works OK). But even with some Tk
2315 limitations, this is a great improvement.
2319 limitations, this is a great improvement.
2316
2320
2317 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2321 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2318 info in user prompts. Patch by Prabhu.
2322 info in user prompts. Patch by Prabhu.
2319
2323
2320 2004-11-18 Fernando Perez <fperez@colorado.edu>
2324 2004-11-18 Fernando Perez <fperez@colorado.edu>
2321
2325
2322 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2326 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2323 EOFErrors and bail, to avoid infinite loops if a non-terminating
2327 EOFErrors and bail, to avoid infinite loops if a non-terminating
2324 file is fed into ipython. Patch submitted in issue 19 by user,
2328 file is fed into ipython. Patch submitted in issue 19 by user,
2325 many thanks.
2329 many thanks.
2326
2330
2327 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2331 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2328 autoquote/parens in continuation prompts, which can cause lots of
2332 autoquote/parens in continuation prompts, which can cause lots of
2329 problems. Closes roundup issue 20.
2333 problems. Closes roundup issue 20.
2330
2334
2331 2004-11-17 Fernando Perez <fperez@colorado.edu>
2335 2004-11-17 Fernando Perez <fperez@colorado.edu>
2332
2336
2333 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2337 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2334 reported as debian bug #280505. I'm not sure my local changelog
2338 reported as debian bug #280505. I'm not sure my local changelog
2335 entry has the proper debian format (Jack?).
2339 entry has the proper debian format (Jack?).
2336
2340
2337 2004-11-08 *** Released version 0.6.4
2341 2004-11-08 *** Released version 0.6.4
2338
2342
2339 2004-11-08 Fernando Perez <fperez@colorado.edu>
2343 2004-11-08 Fernando Perez <fperez@colorado.edu>
2340
2344
2341 * IPython/iplib.py (init_readline): Fix exit message for Windows
2345 * IPython/iplib.py (init_readline): Fix exit message for Windows
2342 when readline is active. Thanks to a report by Eric Jones
2346 when readline is active. Thanks to a report by Eric Jones
2343 <eric-AT-enthought.com>.
2347 <eric-AT-enthought.com>.
2344
2348
2345 2004-11-07 Fernando Perez <fperez@colorado.edu>
2349 2004-11-07 Fernando Perez <fperez@colorado.edu>
2346
2350
2347 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2351 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2348 sometimes seen by win2k/cygwin users.
2352 sometimes seen by win2k/cygwin users.
2349
2353
2350 2004-11-06 Fernando Perez <fperez@colorado.edu>
2354 2004-11-06 Fernando Perez <fperez@colorado.edu>
2351
2355
2352 * IPython/iplib.py (interact): Change the handling of %Exit from
2356 * IPython/iplib.py (interact): Change the handling of %Exit from
2353 trying to propagate a SystemExit to an internal ipython flag.
2357 trying to propagate a SystemExit to an internal ipython flag.
2354 This is less elegant than using Python's exception mechanism, but
2358 This is less elegant than using Python's exception mechanism, but
2355 I can't get that to work reliably with threads, so under -pylab
2359 I can't get that to work reliably with threads, so under -pylab
2356 %Exit was hanging IPython. Cross-thread exception handling is
2360 %Exit was hanging IPython. Cross-thread exception handling is
2357 really a bitch. Thaks to a bug report by Stephen Walton
2361 really a bitch. Thaks to a bug report by Stephen Walton
2358 <stephen.walton-AT-csun.edu>.
2362 <stephen.walton-AT-csun.edu>.
2359
2363
2360 2004-11-04 Fernando Perez <fperez@colorado.edu>
2364 2004-11-04 Fernando Perez <fperez@colorado.edu>
2361
2365
2362 * IPython/iplib.py (raw_input_original): store a pointer to the
2366 * IPython/iplib.py (raw_input_original): store a pointer to the
2363 true raw_input to harden against code which can modify it
2367 true raw_input to harden against code which can modify it
2364 (wx.py.PyShell does this and would otherwise crash ipython).
2368 (wx.py.PyShell does this and would otherwise crash ipython).
2365 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2369 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2366
2370
2367 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2371 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2368 Ctrl-C problem, which does not mess up the input line.
2372 Ctrl-C problem, which does not mess up the input line.
2369
2373
2370 2004-11-03 Fernando Perez <fperez@colorado.edu>
2374 2004-11-03 Fernando Perez <fperez@colorado.edu>
2371
2375
2372 * IPython/Release.py: Changed licensing to BSD, in all files.
2376 * IPython/Release.py: Changed licensing to BSD, in all files.
2373 (name): lowercase name for tarball/RPM release.
2377 (name): lowercase name for tarball/RPM release.
2374
2378
2375 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2379 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2376 use throughout ipython.
2380 use throughout ipython.
2377
2381
2378 * IPython/Magic.py (Magic._ofind): Switch to using the new
2382 * IPython/Magic.py (Magic._ofind): Switch to using the new
2379 OInspect.getdoc() function.
2383 OInspect.getdoc() function.
2380
2384
2381 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2385 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2382 of the line currently being canceled via Ctrl-C. It's extremely
2386 of the line currently being canceled via Ctrl-C. It's extremely
2383 ugly, but I don't know how to do it better (the problem is one of
2387 ugly, but I don't know how to do it better (the problem is one of
2384 handling cross-thread exceptions).
2388 handling cross-thread exceptions).
2385
2389
2386 2004-10-28 Fernando Perez <fperez@colorado.edu>
2390 2004-10-28 Fernando Perez <fperez@colorado.edu>
2387
2391
2388 * IPython/Shell.py (signal_handler): add signal handlers to trap
2392 * IPython/Shell.py (signal_handler): add signal handlers to trap
2389 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2393 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2390 report by Francesc Alted.
2394 report by Francesc Alted.
2391
2395
2392 2004-10-21 Fernando Perez <fperez@colorado.edu>
2396 2004-10-21 Fernando Perez <fperez@colorado.edu>
2393
2397
2394 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2398 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2395 to % for pysh syntax extensions.
2399 to % for pysh syntax extensions.
2396
2400
2397 2004-10-09 Fernando Perez <fperez@colorado.edu>
2401 2004-10-09 Fernando Perez <fperez@colorado.edu>
2398
2402
2399 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2403 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2400 arrays to print a more useful summary, without calling str(arr).
2404 arrays to print a more useful summary, without calling str(arr).
2401 This avoids the problem of extremely lengthy computations which
2405 This avoids the problem of extremely lengthy computations which
2402 occur if arr is large, and appear to the user as a system lockup
2406 occur if arr is large, and appear to the user as a system lockup
2403 with 100% cpu activity. After a suggestion by Kristian Sandberg
2407 with 100% cpu activity. After a suggestion by Kristian Sandberg
2404 <Kristian.Sandberg@colorado.edu>.
2408 <Kristian.Sandberg@colorado.edu>.
2405 (Magic.__init__): fix bug in global magic escapes not being
2409 (Magic.__init__): fix bug in global magic escapes not being
2406 correctly set.
2410 correctly set.
2407
2411
2408 2004-10-08 Fernando Perez <fperez@colorado.edu>
2412 2004-10-08 Fernando Perez <fperez@colorado.edu>
2409
2413
2410 * IPython/Magic.py (__license__): change to absolute imports of
2414 * IPython/Magic.py (__license__): change to absolute imports of
2411 ipython's own internal packages, to start adapting to the absolute
2415 ipython's own internal packages, to start adapting to the absolute
2412 import requirement of PEP-328.
2416 import requirement of PEP-328.
2413
2417
2414 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2418 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2415 files, and standardize author/license marks through the Release
2419 files, and standardize author/license marks through the Release
2416 module instead of having per/file stuff (except for files with
2420 module instead of having per/file stuff (except for files with
2417 particular licenses, like the MIT/PSF-licensed codes).
2421 particular licenses, like the MIT/PSF-licensed codes).
2418
2422
2419 * IPython/Debugger.py: remove dead code for python 2.1
2423 * IPython/Debugger.py: remove dead code for python 2.1
2420
2424
2421 2004-10-04 Fernando Perez <fperez@colorado.edu>
2425 2004-10-04 Fernando Perez <fperez@colorado.edu>
2422
2426
2423 * IPython/iplib.py (ipmagic): New function for accessing magics
2427 * IPython/iplib.py (ipmagic): New function for accessing magics
2424 via a normal python function call.
2428 via a normal python function call.
2425
2429
2426 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2430 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2427 from '@' to '%', to accomodate the new @decorator syntax of python
2431 from '@' to '%', to accomodate the new @decorator syntax of python
2428 2.4.
2432 2.4.
2429
2433
2430 2004-09-29 Fernando Perez <fperez@colorado.edu>
2434 2004-09-29 Fernando Perez <fperez@colorado.edu>
2431
2435
2432 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2436 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2433 matplotlib.use to prevent running scripts which try to switch
2437 matplotlib.use to prevent running scripts which try to switch
2434 interactive backends from within ipython. This will just crash
2438 interactive backends from within ipython. This will just crash
2435 the python interpreter, so we can't allow it (but a detailed error
2439 the python interpreter, so we can't allow it (but a detailed error
2436 is given to the user).
2440 is given to the user).
2437
2441
2438 2004-09-28 Fernando Perez <fperez@colorado.edu>
2442 2004-09-28 Fernando Perez <fperez@colorado.edu>
2439
2443
2440 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2444 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2441 matplotlib-related fixes so that using @run with non-matplotlib
2445 matplotlib-related fixes so that using @run with non-matplotlib
2442 scripts doesn't pop up spurious plot windows. This requires
2446 scripts doesn't pop up spurious plot windows. This requires
2443 matplotlib >= 0.63, where I had to make some changes as well.
2447 matplotlib >= 0.63, where I had to make some changes as well.
2444
2448
2445 * IPython/ipmaker.py (make_IPython): update version requirement to
2449 * IPython/ipmaker.py (make_IPython): update version requirement to
2446 python 2.2.
2450 python 2.2.
2447
2451
2448 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2452 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2449 banner arg for embedded customization.
2453 banner arg for embedded customization.
2450
2454
2451 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2455 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2452 explicit uses of __IP as the IPython's instance name. Now things
2456 explicit uses of __IP as the IPython's instance name. Now things
2453 are properly handled via the shell.name value. The actual code
2457 are properly handled via the shell.name value. The actual code
2454 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2458 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2455 is much better than before. I'll clean things completely when the
2459 is much better than before. I'll clean things completely when the
2456 magic stuff gets a real overhaul.
2460 magic stuff gets a real overhaul.
2457
2461
2458 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2462 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2459 minor changes to debian dir.
2463 minor changes to debian dir.
2460
2464
2461 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2465 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2462 pointer to the shell itself in the interactive namespace even when
2466 pointer to the shell itself in the interactive namespace even when
2463 a user-supplied dict is provided. This is needed for embedding
2467 a user-supplied dict is provided. This is needed for embedding
2464 purposes (found by tests with Michel Sanner).
2468 purposes (found by tests with Michel Sanner).
2465
2469
2466 2004-09-27 Fernando Perez <fperez@colorado.edu>
2470 2004-09-27 Fernando Perez <fperez@colorado.edu>
2467
2471
2468 * IPython/UserConfig/ipythonrc: remove []{} from
2472 * IPython/UserConfig/ipythonrc: remove []{} from
2469 readline_remove_delims, so that things like [modname.<TAB> do
2473 readline_remove_delims, so that things like [modname.<TAB> do
2470 proper completion. This disables [].TAB, but that's a less common
2474 proper completion. This disables [].TAB, but that's a less common
2471 case than module names in list comprehensions, for example.
2475 case than module names in list comprehensions, for example.
2472 Thanks to a report by Andrea Riciputi.
2476 Thanks to a report by Andrea Riciputi.
2473
2477
2474 2004-09-09 Fernando Perez <fperez@colorado.edu>
2478 2004-09-09 Fernando Perez <fperez@colorado.edu>
2475
2479
2476 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2480 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2477 blocking problems in win32 and osx. Fix by John.
2481 blocking problems in win32 and osx. Fix by John.
2478
2482
2479 2004-09-08 Fernando Perez <fperez@colorado.edu>
2483 2004-09-08 Fernando Perez <fperez@colorado.edu>
2480
2484
2481 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2485 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2482 for Win32 and OSX. Fix by John Hunter.
2486 for Win32 and OSX. Fix by John Hunter.
2483
2487
2484 2004-08-30 *** Released version 0.6.3
2488 2004-08-30 *** Released version 0.6.3
2485
2489
2486 2004-08-30 Fernando Perez <fperez@colorado.edu>
2490 2004-08-30 Fernando Perez <fperez@colorado.edu>
2487
2491
2488 * setup.py (isfile): Add manpages to list of dependent files to be
2492 * setup.py (isfile): Add manpages to list of dependent files to be
2489 updated.
2493 updated.
2490
2494
2491 2004-08-27 Fernando Perez <fperez@colorado.edu>
2495 2004-08-27 Fernando Perez <fperez@colorado.edu>
2492
2496
2493 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2497 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2494 for now. They don't really work with standalone WX/GTK code
2498 for now. They don't really work with standalone WX/GTK code
2495 (though matplotlib IS working fine with both of those backends).
2499 (though matplotlib IS working fine with both of those backends).
2496 This will neeed much more testing. I disabled most things with
2500 This will neeed much more testing. I disabled most things with
2497 comments, so turning it back on later should be pretty easy.
2501 comments, so turning it back on later should be pretty easy.
2498
2502
2499 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2503 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2500 autocalling of expressions like r'foo', by modifying the line
2504 autocalling of expressions like r'foo', by modifying the line
2501 split regexp. Closes
2505 split regexp. Closes
2502 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2506 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2503 Riley <ipythonbugs-AT-sabi.net>.
2507 Riley <ipythonbugs-AT-sabi.net>.
2504 (InteractiveShell.mainloop): honor --nobanner with banner
2508 (InteractiveShell.mainloop): honor --nobanner with banner
2505 extensions.
2509 extensions.
2506
2510
2507 * IPython/Shell.py: Significant refactoring of all classes, so
2511 * IPython/Shell.py: Significant refactoring of all classes, so
2508 that we can really support ALL matplotlib backends and threading
2512 that we can really support ALL matplotlib backends and threading
2509 models (John spotted a bug with Tk which required this). Now we
2513 models (John spotted a bug with Tk which required this). Now we
2510 should support single-threaded, WX-threads and GTK-threads, both
2514 should support single-threaded, WX-threads and GTK-threads, both
2511 for generic code and for matplotlib.
2515 for generic code and for matplotlib.
2512
2516
2513 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2517 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2514 -pylab, to simplify things for users. Will also remove the pylab
2518 -pylab, to simplify things for users. Will also remove the pylab
2515 profile, since now all of matplotlib configuration is directly
2519 profile, since now all of matplotlib configuration is directly
2516 handled here. This also reduces startup time.
2520 handled here. This also reduces startup time.
2517
2521
2518 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2522 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2519 shell wasn't being correctly called. Also in IPShellWX.
2523 shell wasn't being correctly called. Also in IPShellWX.
2520
2524
2521 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2525 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2522 fine-tune banner.
2526 fine-tune banner.
2523
2527
2524 * IPython/numutils.py (spike): Deprecate these spike functions,
2528 * IPython/numutils.py (spike): Deprecate these spike functions,
2525 delete (long deprecated) gnuplot_exec handler.
2529 delete (long deprecated) gnuplot_exec handler.
2526
2530
2527 2004-08-26 Fernando Perez <fperez@colorado.edu>
2531 2004-08-26 Fernando Perez <fperez@colorado.edu>
2528
2532
2529 * ipython.1: Update for threading options, plus some others which
2533 * ipython.1: Update for threading options, plus some others which
2530 were missing.
2534 were missing.
2531
2535
2532 * IPython/ipmaker.py (__call__): Added -wthread option for
2536 * IPython/ipmaker.py (__call__): Added -wthread option for
2533 wxpython thread handling. Make sure threading options are only
2537 wxpython thread handling. Make sure threading options are only
2534 valid at the command line.
2538 valid at the command line.
2535
2539
2536 * scripts/ipython: moved shell selection into a factory function
2540 * scripts/ipython: moved shell selection into a factory function
2537 in Shell.py, to keep the starter script to a minimum.
2541 in Shell.py, to keep the starter script to a minimum.
2538
2542
2539 2004-08-25 Fernando Perez <fperez@colorado.edu>
2543 2004-08-25 Fernando Perez <fperez@colorado.edu>
2540
2544
2541 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2545 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2542 John. Along with some recent changes he made to matplotlib, the
2546 John. Along with some recent changes he made to matplotlib, the
2543 next versions of both systems should work very well together.
2547 next versions of both systems should work very well together.
2544
2548
2545 2004-08-24 Fernando Perez <fperez@colorado.edu>
2549 2004-08-24 Fernando Perez <fperez@colorado.edu>
2546
2550
2547 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2551 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2548 tried to switch the profiling to using hotshot, but I'm getting
2552 tried to switch the profiling to using hotshot, but I'm getting
2549 strange errors from prof.runctx() there. I may be misreading the
2553 strange errors from prof.runctx() there. I may be misreading the
2550 docs, but it looks weird. For now the profiling code will
2554 docs, but it looks weird. For now the profiling code will
2551 continue to use the standard profiler.
2555 continue to use the standard profiler.
2552
2556
2553 2004-08-23 Fernando Perez <fperez@colorado.edu>
2557 2004-08-23 Fernando Perez <fperez@colorado.edu>
2554
2558
2555 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2559 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2556 threaded shell, by John Hunter. It's not quite ready yet, but
2560 threaded shell, by John Hunter. It's not quite ready yet, but
2557 close.
2561 close.
2558
2562
2559 2004-08-22 Fernando Perez <fperez@colorado.edu>
2563 2004-08-22 Fernando Perez <fperez@colorado.edu>
2560
2564
2561 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2565 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2562 in Magic and ultraTB.
2566 in Magic and ultraTB.
2563
2567
2564 * ipython.1: document threading options in manpage.
2568 * ipython.1: document threading options in manpage.
2565
2569
2566 * scripts/ipython: Changed name of -thread option to -gthread,
2570 * scripts/ipython: Changed name of -thread option to -gthread,
2567 since this is GTK specific. I want to leave the door open for a
2571 since this is GTK specific. I want to leave the door open for a
2568 -wthread option for WX, which will most likely be necessary. This
2572 -wthread option for WX, which will most likely be necessary. This
2569 change affects usage and ipmaker as well.
2573 change affects usage and ipmaker as well.
2570
2574
2571 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2575 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2572 handle the matplotlib shell issues. Code by John Hunter
2576 handle the matplotlib shell issues. Code by John Hunter
2573 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2577 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2574 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2578 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2575 broken (and disabled for end users) for now, but it puts the
2579 broken (and disabled for end users) for now, but it puts the
2576 infrastructure in place.
2580 infrastructure in place.
2577
2581
2578 2004-08-21 Fernando Perez <fperez@colorado.edu>
2582 2004-08-21 Fernando Perez <fperez@colorado.edu>
2579
2583
2580 * ipythonrc-pylab: Add matplotlib support.
2584 * ipythonrc-pylab: Add matplotlib support.
2581
2585
2582 * matplotlib_config.py: new files for matplotlib support, part of
2586 * matplotlib_config.py: new files for matplotlib support, part of
2583 the pylab profile.
2587 the pylab profile.
2584
2588
2585 * IPython/usage.py (__doc__): documented the threading options.
2589 * IPython/usage.py (__doc__): documented the threading options.
2586
2590
2587 2004-08-20 Fernando Perez <fperez@colorado.edu>
2591 2004-08-20 Fernando Perez <fperez@colorado.edu>
2588
2592
2589 * ipython: Modified the main calling routine to handle the -thread
2593 * ipython: Modified the main calling routine to handle the -thread
2590 and -mpthread options. This needs to be done as a top-level hack,
2594 and -mpthread options. This needs to be done as a top-level hack,
2591 because it determines which class to instantiate for IPython
2595 because it determines which class to instantiate for IPython
2592 itself.
2596 itself.
2593
2597
2594 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2598 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2595 classes to support multithreaded GTK operation without blocking,
2599 classes to support multithreaded GTK operation without blocking,
2596 and matplotlib with all backends. This is a lot of still very
2600 and matplotlib with all backends. This is a lot of still very
2597 experimental code, and threads are tricky. So it may still have a
2601 experimental code, and threads are tricky. So it may still have a
2598 few rough edges... This code owes a lot to
2602 few rough edges... This code owes a lot to
2599 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2603 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2600 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2604 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2601 to John Hunter for all the matplotlib work.
2605 to John Hunter for all the matplotlib work.
2602
2606
2603 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2607 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2604 options for gtk thread and matplotlib support.
2608 options for gtk thread and matplotlib support.
2605
2609
2606 2004-08-16 Fernando Perez <fperez@colorado.edu>
2610 2004-08-16 Fernando Perez <fperez@colorado.edu>
2607
2611
2608 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2612 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2609 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2613 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2610 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2614 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2611
2615
2612 2004-08-11 Fernando Perez <fperez@colorado.edu>
2616 2004-08-11 Fernando Perez <fperez@colorado.edu>
2613
2617
2614 * setup.py (isfile): Fix build so documentation gets updated for
2618 * setup.py (isfile): Fix build so documentation gets updated for
2615 rpms (it was only done for .tgz builds).
2619 rpms (it was only done for .tgz builds).
2616
2620
2617 2004-08-10 Fernando Perez <fperez@colorado.edu>
2621 2004-08-10 Fernando Perez <fperez@colorado.edu>
2618
2622
2619 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2623 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2620
2624
2621 * iplib.py : Silence syntax error exceptions in tab-completion.
2625 * iplib.py : Silence syntax error exceptions in tab-completion.
2622
2626
2623 2004-08-05 Fernando Perez <fperez@colorado.edu>
2627 2004-08-05 Fernando Perez <fperez@colorado.edu>
2624
2628
2625 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2629 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2626 'color off' mark for continuation prompts. This was causing long
2630 'color off' mark for continuation prompts. This was causing long
2627 continuation lines to mis-wrap.
2631 continuation lines to mis-wrap.
2628
2632
2629 2004-08-01 Fernando Perez <fperez@colorado.edu>
2633 2004-08-01 Fernando Perez <fperez@colorado.edu>
2630
2634
2631 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2635 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2632 for building ipython to be a parameter. All this is necessary
2636 for building ipython to be a parameter. All this is necessary
2633 right now to have a multithreaded version, but this insane
2637 right now to have a multithreaded version, but this insane
2634 non-design will be cleaned up soon. For now, it's a hack that
2638 non-design will be cleaned up soon. For now, it's a hack that
2635 works.
2639 works.
2636
2640
2637 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2641 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2638 args in various places. No bugs so far, but it's a dangerous
2642 args in various places. No bugs so far, but it's a dangerous
2639 practice.
2643 practice.
2640
2644
2641 2004-07-31 Fernando Perez <fperez@colorado.edu>
2645 2004-07-31 Fernando Perez <fperez@colorado.edu>
2642
2646
2643 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2647 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2644 fix completion of files with dots in their names under most
2648 fix completion of files with dots in their names under most
2645 profiles (pysh was OK because the completion order is different).
2649 profiles (pysh was OK because the completion order is different).
2646
2650
2647 2004-07-27 Fernando Perez <fperez@colorado.edu>
2651 2004-07-27 Fernando Perez <fperez@colorado.edu>
2648
2652
2649 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2653 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2650 keywords manually, b/c the one in keyword.py was removed in python
2654 keywords manually, b/c the one in keyword.py was removed in python
2651 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2655 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2652 This is NOT a bug under python 2.3 and earlier.
2656 This is NOT a bug under python 2.3 and earlier.
2653
2657
2654 2004-07-26 Fernando Perez <fperez@colorado.edu>
2658 2004-07-26 Fernando Perez <fperez@colorado.edu>
2655
2659
2656 * IPython/ultraTB.py (VerboseTB.text): Add another
2660 * IPython/ultraTB.py (VerboseTB.text): Add another
2657 linecache.checkcache() call to try to prevent inspect.py from
2661 linecache.checkcache() call to try to prevent inspect.py from
2658 crashing under python 2.3. I think this fixes
2662 crashing under python 2.3. I think this fixes
2659 http://www.scipy.net/roundup/ipython/issue17.
2663 http://www.scipy.net/roundup/ipython/issue17.
2660
2664
2661 2004-07-26 *** Released version 0.6.2
2665 2004-07-26 *** Released version 0.6.2
2662
2666
2663 2004-07-26 Fernando Perez <fperez@colorado.edu>
2667 2004-07-26 Fernando Perez <fperez@colorado.edu>
2664
2668
2665 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2669 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2666 fail for any number.
2670 fail for any number.
2667 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2671 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2668 empty bookmarks.
2672 empty bookmarks.
2669
2673
2670 2004-07-26 *** Released version 0.6.1
2674 2004-07-26 *** Released version 0.6.1
2671
2675
2672 2004-07-26 Fernando Perez <fperez@colorado.edu>
2676 2004-07-26 Fernando Perez <fperez@colorado.edu>
2673
2677
2674 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2678 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2675
2679
2676 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2680 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2677 escaping '()[]{}' in filenames.
2681 escaping '()[]{}' in filenames.
2678
2682
2679 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2683 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2680 Python 2.2 users who lack a proper shlex.split.
2684 Python 2.2 users who lack a proper shlex.split.
2681
2685
2682 2004-07-19 Fernando Perez <fperez@colorado.edu>
2686 2004-07-19 Fernando Perez <fperez@colorado.edu>
2683
2687
2684 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2688 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2685 for reading readline's init file. I follow the normal chain:
2689 for reading readline's init file. I follow the normal chain:
2686 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2690 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2687 report by Mike Heeter. This closes
2691 report by Mike Heeter. This closes
2688 http://www.scipy.net/roundup/ipython/issue16.
2692 http://www.scipy.net/roundup/ipython/issue16.
2689
2693
2690 2004-07-18 Fernando Perez <fperez@colorado.edu>
2694 2004-07-18 Fernando Perez <fperez@colorado.edu>
2691
2695
2692 * IPython/iplib.py (__init__): Add better handling of '\' under
2696 * IPython/iplib.py (__init__): Add better handling of '\' under
2693 Win32 for filenames. After a patch by Ville.
2697 Win32 for filenames. After a patch by Ville.
2694
2698
2695 2004-07-17 Fernando Perez <fperez@colorado.edu>
2699 2004-07-17 Fernando Perez <fperez@colorado.edu>
2696
2700
2697 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2701 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2698 autocalling would be triggered for 'foo is bar' if foo is
2702 autocalling would be triggered for 'foo is bar' if foo is
2699 callable. I also cleaned up the autocall detection code to use a
2703 callable. I also cleaned up the autocall detection code to use a
2700 regexp, which is faster. Bug reported by Alexander Schmolck.
2704 regexp, which is faster. Bug reported by Alexander Schmolck.
2701
2705
2702 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2706 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2703 '?' in them would confuse the help system. Reported by Alex
2707 '?' in them would confuse the help system. Reported by Alex
2704 Schmolck.
2708 Schmolck.
2705
2709
2706 2004-07-16 Fernando Perez <fperez@colorado.edu>
2710 2004-07-16 Fernando Perez <fperez@colorado.edu>
2707
2711
2708 * IPython/GnuplotInteractive.py (__all__): added plot2.
2712 * IPython/GnuplotInteractive.py (__all__): added plot2.
2709
2713
2710 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2714 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2711 plotting dictionaries, lists or tuples of 1d arrays.
2715 plotting dictionaries, lists or tuples of 1d arrays.
2712
2716
2713 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2717 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2714 optimizations.
2718 optimizations.
2715
2719
2716 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2720 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2717 the information which was there from Janko's original IPP code:
2721 the information which was there from Janko's original IPP code:
2718
2722
2719 03.05.99 20:53 porto.ifm.uni-kiel.de
2723 03.05.99 20:53 porto.ifm.uni-kiel.de
2720 --Started changelog.
2724 --Started changelog.
2721 --make clear do what it say it does
2725 --make clear do what it say it does
2722 --added pretty output of lines from inputcache
2726 --added pretty output of lines from inputcache
2723 --Made Logger a mixin class, simplifies handling of switches
2727 --Made Logger a mixin class, simplifies handling of switches
2724 --Added own completer class. .string<TAB> expands to last history
2728 --Added own completer class. .string<TAB> expands to last history
2725 line which starts with string. The new expansion is also present
2729 line which starts with string. The new expansion is also present
2726 with Ctrl-r from the readline library. But this shows, who this
2730 with Ctrl-r from the readline library. But this shows, who this
2727 can be done for other cases.
2731 can be done for other cases.
2728 --Added convention that all shell functions should accept a
2732 --Added convention that all shell functions should accept a
2729 parameter_string This opens the door for different behaviour for
2733 parameter_string This opens the door for different behaviour for
2730 each function. @cd is a good example of this.
2734 each function. @cd is a good example of this.
2731
2735
2732 04.05.99 12:12 porto.ifm.uni-kiel.de
2736 04.05.99 12:12 porto.ifm.uni-kiel.de
2733 --added logfile rotation
2737 --added logfile rotation
2734 --added new mainloop method which freezes first the namespace
2738 --added new mainloop method which freezes first the namespace
2735
2739
2736 07.05.99 21:24 porto.ifm.uni-kiel.de
2740 07.05.99 21:24 porto.ifm.uni-kiel.de
2737 --added the docreader classes. Now there is a help system.
2741 --added the docreader classes. Now there is a help system.
2738 -This is only a first try. Currently it's not easy to put new
2742 -This is only a first try. Currently it's not easy to put new
2739 stuff in the indices. But this is the way to go. Info would be
2743 stuff in the indices. But this is the way to go. Info would be
2740 better, but HTML is every where and not everybody has an info
2744 better, but HTML is every where and not everybody has an info
2741 system installed and it's not so easy to change html-docs to info.
2745 system installed and it's not so easy to change html-docs to info.
2742 --added global logfile option
2746 --added global logfile option
2743 --there is now a hook for object inspection method pinfo needs to
2747 --there is now a hook for object inspection method pinfo needs to
2744 be provided for this. Can be reached by two '??'.
2748 be provided for this. Can be reached by two '??'.
2745
2749
2746 08.05.99 20:51 porto.ifm.uni-kiel.de
2750 08.05.99 20:51 porto.ifm.uni-kiel.de
2747 --added a README
2751 --added a README
2748 --bug in rc file. Something has changed so functions in the rc
2752 --bug in rc file. Something has changed so functions in the rc
2749 file need to reference the shell and not self. Not clear if it's a
2753 file need to reference the shell and not self. Not clear if it's a
2750 bug or feature.
2754 bug or feature.
2751 --changed rc file for new behavior
2755 --changed rc file for new behavior
2752
2756
2753 2004-07-15 Fernando Perez <fperez@colorado.edu>
2757 2004-07-15 Fernando Perez <fperez@colorado.edu>
2754
2758
2755 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2759 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2756 cache was falling out of sync in bizarre manners when multi-line
2760 cache was falling out of sync in bizarre manners when multi-line
2757 input was present. Minor optimizations and cleanup.
2761 input was present. Minor optimizations and cleanup.
2758
2762
2759 (Logger): Remove old Changelog info for cleanup. This is the
2763 (Logger): Remove old Changelog info for cleanup. This is the
2760 information which was there from Janko's original code:
2764 information which was there from Janko's original code:
2761
2765
2762 Changes to Logger: - made the default log filename a parameter
2766 Changes to Logger: - made the default log filename a parameter
2763
2767
2764 - put a check for lines beginning with !@? in log(). Needed
2768 - put a check for lines beginning with !@? in log(). Needed
2765 (even if the handlers properly log their lines) for mid-session
2769 (even if the handlers properly log their lines) for mid-session
2766 logging activation to work properly. Without this, lines logged
2770 logging activation to work properly. Without this, lines logged
2767 in mid session, which get read from the cache, would end up
2771 in mid session, which get read from the cache, would end up
2768 'bare' (with !@? in the open) in the log. Now they are caught
2772 'bare' (with !@? in the open) in the log. Now they are caught
2769 and prepended with a #.
2773 and prepended with a #.
2770
2774
2771 * IPython/iplib.py (InteractiveShell.init_readline): added check
2775 * IPython/iplib.py (InteractiveShell.init_readline): added check
2772 in case MagicCompleter fails to be defined, so we don't crash.
2776 in case MagicCompleter fails to be defined, so we don't crash.
2773
2777
2774 2004-07-13 Fernando Perez <fperez@colorado.edu>
2778 2004-07-13 Fernando Perez <fperez@colorado.edu>
2775
2779
2776 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2780 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2777 of EPS if the requested filename ends in '.eps'.
2781 of EPS if the requested filename ends in '.eps'.
2778
2782
2779 2004-07-04 Fernando Perez <fperez@colorado.edu>
2783 2004-07-04 Fernando Perez <fperez@colorado.edu>
2780
2784
2781 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2785 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2782 escaping of quotes when calling the shell.
2786 escaping of quotes when calling the shell.
2783
2787
2784 2004-07-02 Fernando Perez <fperez@colorado.edu>
2788 2004-07-02 Fernando Perez <fperez@colorado.edu>
2785
2789
2786 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2790 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2787 gettext not working because we were clobbering '_'. Fixes
2791 gettext not working because we were clobbering '_'. Fixes
2788 http://www.scipy.net/roundup/ipython/issue6.
2792 http://www.scipy.net/roundup/ipython/issue6.
2789
2793
2790 2004-07-01 Fernando Perez <fperez@colorado.edu>
2794 2004-07-01 Fernando Perez <fperez@colorado.edu>
2791
2795
2792 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2796 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2793 into @cd. Patch by Ville.
2797 into @cd. Patch by Ville.
2794
2798
2795 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2799 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2796 new function to store things after ipmaker runs. Patch by Ville.
2800 new function to store things after ipmaker runs. Patch by Ville.
2797 Eventually this will go away once ipmaker is removed and the class
2801 Eventually this will go away once ipmaker is removed and the class
2798 gets cleaned up, but for now it's ok. Key functionality here is
2802 gets cleaned up, but for now it's ok. Key functionality here is
2799 the addition of the persistent storage mechanism, a dict for
2803 the addition of the persistent storage mechanism, a dict for
2800 keeping data across sessions (for now just bookmarks, but more can
2804 keeping data across sessions (for now just bookmarks, but more can
2801 be implemented later).
2805 be implemented later).
2802
2806
2803 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2807 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2804 persistent across sections. Patch by Ville, I modified it
2808 persistent across sections. Patch by Ville, I modified it
2805 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2809 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2806 added a '-l' option to list all bookmarks.
2810 added a '-l' option to list all bookmarks.
2807
2811
2808 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2812 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2809 center for cleanup. Registered with atexit.register(). I moved
2813 center for cleanup. Registered with atexit.register(). I moved
2810 here the old exit_cleanup(). After a patch by Ville.
2814 here the old exit_cleanup(). After a patch by Ville.
2811
2815
2812 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2816 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2813 characters in the hacked shlex_split for python 2.2.
2817 characters in the hacked shlex_split for python 2.2.
2814
2818
2815 * IPython/iplib.py (file_matches): more fixes to filenames with
2819 * IPython/iplib.py (file_matches): more fixes to filenames with
2816 whitespace in them. It's not perfect, but limitations in python's
2820 whitespace in them. It's not perfect, but limitations in python's
2817 readline make it impossible to go further.
2821 readline make it impossible to go further.
2818
2822
2819 2004-06-29 Fernando Perez <fperez@colorado.edu>
2823 2004-06-29 Fernando Perez <fperez@colorado.edu>
2820
2824
2821 * IPython/iplib.py (file_matches): escape whitespace correctly in
2825 * IPython/iplib.py (file_matches): escape whitespace correctly in
2822 filename completions. Bug reported by Ville.
2826 filename completions. Bug reported by Ville.
2823
2827
2824 2004-06-28 Fernando Perez <fperez@colorado.edu>
2828 2004-06-28 Fernando Perez <fperez@colorado.edu>
2825
2829
2826 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2830 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2827 the history file will be called 'history-PROFNAME' (or just
2831 the history file will be called 'history-PROFNAME' (or just
2828 'history' if no profile is loaded). I was getting annoyed at
2832 'history' if no profile is loaded). I was getting annoyed at
2829 getting my Numerical work history clobbered by pysh sessions.
2833 getting my Numerical work history clobbered by pysh sessions.
2830
2834
2831 * IPython/iplib.py (InteractiveShell.__init__): Internal
2835 * IPython/iplib.py (InteractiveShell.__init__): Internal
2832 getoutputerror() function so that we can honor the system_verbose
2836 getoutputerror() function so that we can honor the system_verbose
2833 flag for _all_ system calls. I also added escaping of #
2837 flag for _all_ system calls. I also added escaping of #
2834 characters here to avoid confusing Itpl.
2838 characters here to avoid confusing Itpl.
2835
2839
2836 * IPython/Magic.py (shlex_split): removed call to shell in
2840 * IPython/Magic.py (shlex_split): removed call to shell in
2837 parse_options and replaced it with shlex.split(). The annoying
2841 parse_options and replaced it with shlex.split(). The annoying
2838 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2842 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2839 to backport it from 2.3, with several frail hacks (the shlex
2843 to backport it from 2.3, with several frail hacks (the shlex
2840 module is rather limited in 2.2). Thanks to a suggestion by Ville
2844 module is rather limited in 2.2). Thanks to a suggestion by Ville
2841 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2845 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2842 problem.
2846 problem.
2843
2847
2844 (Magic.magic_system_verbose): new toggle to print the actual
2848 (Magic.magic_system_verbose): new toggle to print the actual
2845 system calls made by ipython. Mainly for debugging purposes.
2849 system calls made by ipython. Mainly for debugging purposes.
2846
2850
2847 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2851 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2848 doesn't support persistence. Reported (and fix suggested) by
2852 doesn't support persistence. Reported (and fix suggested) by
2849 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2853 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2850
2854
2851 2004-06-26 Fernando Perez <fperez@colorado.edu>
2855 2004-06-26 Fernando Perez <fperez@colorado.edu>
2852
2856
2853 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2857 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2854 continue prompts.
2858 continue prompts.
2855
2859
2856 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2860 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2857 function (basically a big docstring) and a few more things here to
2861 function (basically a big docstring) and a few more things here to
2858 speedup startup. pysh.py is now very lightweight. We want because
2862 speedup startup. pysh.py is now very lightweight. We want because
2859 it gets execfile'd, while InterpreterExec gets imported, so
2863 it gets execfile'd, while InterpreterExec gets imported, so
2860 byte-compilation saves time.
2864 byte-compilation saves time.
2861
2865
2862 2004-06-25 Fernando Perez <fperez@colorado.edu>
2866 2004-06-25 Fernando Perez <fperez@colorado.edu>
2863
2867
2864 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2868 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2865 -NUM', which was recently broken.
2869 -NUM', which was recently broken.
2866
2870
2867 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2871 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2868 in multi-line input (but not !!, which doesn't make sense there).
2872 in multi-line input (but not !!, which doesn't make sense there).
2869
2873
2870 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2874 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2871 It's just too useful, and people can turn it off in the less
2875 It's just too useful, and people can turn it off in the less
2872 common cases where it's a problem.
2876 common cases where it's a problem.
2873
2877
2874 2004-06-24 Fernando Perez <fperez@colorado.edu>
2878 2004-06-24 Fernando Perez <fperez@colorado.edu>
2875
2879
2876 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2880 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2877 special syntaxes (like alias calling) is now allied in multi-line
2881 special syntaxes (like alias calling) is now allied in multi-line
2878 input. This is still _very_ experimental, but it's necessary for
2882 input. This is still _very_ experimental, but it's necessary for
2879 efficient shell usage combining python looping syntax with system
2883 efficient shell usage combining python looping syntax with system
2880 calls. For now it's restricted to aliases, I don't think it
2884 calls. For now it's restricted to aliases, I don't think it
2881 really even makes sense to have this for magics.
2885 really even makes sense to have this for magics.
2882
2886
2883 2004-06-23 Fernando Perez <fperez@colorado.edu>
2887 2004-06-23 Fernando Perez <fperez@colorado.edu>
2884
2888
2885 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2889 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2886 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2890 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2887
2891
2888 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2892 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2889 extensions under Windows (after code sent by Gary Bishop). The
2893 extensions under Windows (after code sent by Gary Bishop). The
2890 extensions considered 'executable' are stored in IPython's rc
2894 extensions considered 'executable' are stored in IPython's rc
2891 structure as win_exec_ext.
2895 structure as win_exec_ext.
2892
2896
2893 * IPython/genutils.py (shell): new function, like system() but
2897 * IPython/genutils.py (shell): new function, like system() but
2894 without return value. Very useful for interactive shell work.
2898 without return value. Very useful for interactive shell work.
2895
2899
2896 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2900 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2897 delete aliases.
2901 delete aliases.
2898
2902
2899 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2903 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2900 sure that the alias table doesn't contain python keywords.
2904 sure that the alias table doesn't contain python keywords.
2901
2905
2902 2004-06-21 Fernando Perez <fperez@colorado.edu>
2906 2004-06-21 Fernando Perez <fperez@colorado.edu>
2903
2907
2904 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2908 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2905 non-existent items are found in $PATH. Reported by Thorsten.
2909 non-existent items are found in $PATH. Reported by Thorsten.
2906
2910
2907 2004-06-20 Fernando Perez <fperez@colorado.edu>
2911 2004-06-20 Fernando Perez <fperez@colorado.edu>
2908
2912
2909 * IPython/iplib.py (complete): modified the completer so that the
2913 * IPython/iplib.py (complete): modified the completer so that the
2910 order of priorities can be easily changed at runtime.
2914 order of priorities can be easily changed at runtime.
2911
2915
2912 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2916 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2913 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2917 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2914
2918
2915 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2919 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2916 expand Python variables prepended with $ in all system calls. The
2920 expand Python variables prepended with $ in all system calls. The
2917 same was done to InteractiveShell.handle_shell_escape. Now all
2921 same was done to InteractiveShell.handle_shell_escape. Now all
2918 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2922 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2919 expansion of python variables and expressions according to the
2923 expansion of python variables and expressions according to the
2920 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2924 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2921
2925
2922 Though PEP-215 has been rejected, a similar (but simpler) one
2926 Though PEP-215 has been rejected, a similar (but simpler) one
2923 seems like it will go into Python 2.4, PEP-292 -
2927 seems like it will go into Python 2.4, PEP-292 -
2924 http://www.python.org/peps/pep-0292.html.
2928 http://www.python.org/peps/pep-0292.html.
2925
2929
2926 I'll keep the full syntax of PEP-215, since IPython has since the
2930 I'll keep the full syntax of PEP-215, since IPython has since the
2927 start used Ka-Ping Yee's reference implementation discussed there
2931 start used Ka-Ping Yee's reference implementation discussed there
2928 (Itpl), and I actually like the powerful semantics it offers.
2932 (Itpl), and I actually like the powerful semantics it offers.
2929
2933
2930 In order to access normal shell variables, the $ has to be escaped
2934 In order to access normal shell variables, the $ has to be escaped
2931 via an extra $. For example:
2935 via an extra $. For example:
2932
2936
2933 In [7]: PATH='a python variable'
2937 In [7]: PATH='a python variable'
2934
2938
2935 In [8]: !echo $PATH
2939 In [8]: !echo $PATH
2936 a python variable
2940 a python variable
2937
2941
2938 In [9]: !echo $$PATH
2942 In [9]: !echo $$PATH
2939 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2943 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2940
2944
2941 (Magic.parse_options): escape $ so the shell doesn't evaluate
2945 (Magic.parse_options): escape $ so the shell doesn't evaluate
2942 things prematurely.
2946 things prematurely.
2943
2947
2944 * IPython/iplib.py (InteractiveShell.call_alias): added the
2948 * IPython/iplib.py (InteractiveShell.call_alias): added the
2945 ability for aliases to expand python variables via $.
2949 ability for aliases to expand python variables via $.
2946
2950
2947 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2951 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2948 system, now there's a @rehash/@rehashx pair of magics. These work
2952 system, now there's a @rehash/@rehashx pair of magics. These work
2949 like the csh rehash command, and can be invoked at any time. They
2953 like the csh rehash command, and can be invoked at any time. They
2950 build a table of aliases to everything in the user's $PATH
2954 build a table of aliases to everything in the user's $PATH
2951 (@rehash uses everything, @rehashx is slower but only adds
2955 (@rehash uses everything, @rehashx is slower but only adds
2952 executable files). With this, the pysh.py-based shell profile can
2956 executable files). With this, the pysh.py-based shell profile can
2953 now simply call rehash upon startup, and full access to all
2957 now simply call rehash upon startup, and full access to all
2954 programs in the user's path is obtained.
2958 programs in the user's path is obtained.
2955
2959
2956 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2960 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2957 functionality is now fully in place. I removed the old dynamic
2961 functionality is now fully in place. I removed the old dynamic
2958 code generation based approach, in favor of a much lighter one
2962 code generation based approach, in favor of a much lighter one
2959 based on a simple dict. The advantage is that this allows me to
2963 based on a simple dict. The advantage is that this allows me to
2960 now have thousands of aliases with negligible cost (unthinkable
2964 now have thousands of aliases with negligible cost (unthinkable
2961 with the old system).
2965 with the old system).
2962
2966
2963 2004-06-19 Fernando Perez <fperez@colorado.edu>
2967 2004-06-19 Fernando Perez <fperez@colorado.edu>
2964
2968
2965 * IPython/iplib.py (__init__): extended MagicCompleter class to
2969 * IPython/iplib.py (__init__): extended MagicCompleter class to
2966 also complete (last in priority) on user aliases.
2970 also complete (last in priority) on user aliases.
2967
2971
2968 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2972 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2969 call to eval.
2973 call to eval.
2970 (ItplNS.__init__): Added a new class which functions like Itpl,
2974 (ItplNS.__init__): Added a new class which functions like Itpl,
2971 but allows configuring the namespace for the evaluation to occur
2975 but allows configuring the namespace for the evaluation to occur
2972 in.
2976 in.
2973
2977
2974 2004-06-18 Fernando Perez <fperez@colorado.edu>
2978 2004-06-18 Fernando Perez <fperez@colorado.edu>
2975
2979
2976 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2980 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2977 better message when 'exit' or 'quit' are typed (a common newbie
2981 better message when 'exit' or 'quit' are typed (a common newbie
2978 confusion).
2982 confusion).
2979
2983
2980 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2984 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2981 check for Windows users.
2985 check for Windows users.
2982
2986
2983 * IPython/iplib.py (InteractiveShell.user_setup): removed
2987 * IPython/iplib.py (InteractiveShell.user_setup): removed
2984 disabling of colors for Windows. I'll test at runtime and issue a
2988 disabling of colors for Windows. I'll test at runtime and issue a
2985 warning if Gary's readline isn't found, as to nudge users to
2989 warning if Gary's readline isn't found, as to nudge users to
2986 download it.
2990 download it.
2987
2991
2988 2004-06-16 Fernando Perez <fperez@colorado.edu>
2992 2004-06-16 Fernando Perez <fperez@colorado.edu>
2989
2993
2990 * IPython/genutils.py (Stream.__init__): changed to print errors
2994 * IPython/genutils.py (Stream.__init__): changed to print errors
2991 to sys.stderr. I had a circular dependency here. Now it's
2995 to sys.stderr. I had a circular dependency here. Now it's
2992 possible to run ipython as IDLE's shell (consider this pre-alpha,
2996 possible to run ipython as IDLE's shell (consider this pre-alpha,
2993 since true stdout things end up in the starting terminal instead
2997 since true stdout things end up in the starting terminal instead
2994 of IDLE's out).
2998 of IDLE's out).
2995
2999
2996 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3000 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2997 users who haven't # updated their prompt_in2 definitions. Remove
3001 users who haven't # updated their prompt_in2 definitions. Remove
2998 eventually.
3002 eventually.
2999 (multiple_replace): added credit to original ASPN recipe.
3003 (multiple_replace): added credit to original ASPN recipe.
3000
3004
3001 2004-06-15 Fernando Perez <fperez@colorado.edu>
3005 2004-06-15 Fernando Perez <fperez@colorado.edu>
3002
3006
3003 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3007 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3004 list of auto-defined aliases.
3008 list of auto-defined aliases.
3005
3009
3006 2004-06-13 Fernando Perez <fperez@colorado.edu>
3010 2004-06-13 Fernando Perez <fperez@colorado.edu>
3007
3011
3008 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3012 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3009 install was really requested (so setup.py can be used for other
3013 install was really requested (so setup.py can be used for other
3010 things under Windows).
3014 things under Windows).
3011
3015
3012 2004-06-10 Fernando Perez <fperez@colorado.edu>
3016 2004-06-10 Fernando Perez <fperez@colorado.edu>
3013
3017
3014 * IPython/Logger.py (Logger.create_log): Manually remove any old
3018 * IPython/Logger.py (Logger.create_log): Manually remove any old
3015 backup, since os.remove may fail under Windows. Fixes bug
3019 backup, since os.remove may fail under Windows. Fixes bug
3016 reported by Thorsten.
3020 reported by Thorsten.
3017
3021
3018 2004-06-09 Fernando Perez <fperez@colorado.edu>
3022 2004-06-09 Fernando Perez <fperez@colorado.edu>
3019
3023
3020 * examples/example-embed.py: fixed all references to %n (replaced
3024 * examples/example-embed.py: fixed all references to %n (replaced
3021 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3025 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3022 for all examples and the manual as well.
3026 for all examples and the manual as well.
3023
3027
3024 2004-06-08 Fernando Perez <fperez@colorado.edu>
3028 2004-06-08 Fernando Perez <fperez@colorado.edu>
3025
3029
3026 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3030 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3027 alignment and color management. All 3 prompt subsystems now
3031 alignment and color management. All 3 prompt subsystems now
3028 inherit from BasePrompt.
3032 inherit from BasePrompt.
3029
3033
3030 * tools/release: updates for windows installer build and tag rpms
3034 * tools/release: updates for windows installer build and tag rpms
3031 with python version (since paths are fixed).
3035 with python version (since paths are fixed).
3032
3036
3033 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3037 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3034 which will become eventually obsolete. Also fixed the default
3038 which will become eventually obsolete. Also fixed the default
3035 prompt_in2 to use \D, so at least new users start with the correct
3039 prompt_in2 to use \D, so at least new users start with the correct
3036 defaults.
3040 defaults.
3037 WARNING: Users with existing ipythonrc files will need to apply
3041 WARNING: Users with existing ipythonrc files will need to apply
3038 this fix manually!
3042 this fix manually!
3039
3043
3040 * setup.py: make windows installer (.exe). This is finally the
3044 * setup.py: make windows installer (.exe). This is finally the
3041 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3045 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3042 which I hadn't included because it required Python 2.3 (or recent
3046 which I hadn't included because it required Python 2.3 (or recent
3043 distutils).
3047 distutils).
3044
3048
3045 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3049 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3046 usage of new '\D' escape.
3050 usage of new '\D' escape.
3047
3051
3048 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3052 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3049 lacks os.getuid())
3053 lacks os.getuid())
3050 (CachedOutput.set_colors): Added the ability to turn coloring
3054 (CachedOutput.set_colors): Added the ability to turn coloring
3051 on/off with @colors even for manually defined prompt colors. It
3055 on/off with @colors even for manually defined prompt colors. It
3052 uses a nasty global, but it works safely and via the generic color
3056 uses a nasty global, but it works safely and via the generic color
3053 handling mechanism.
3057 handling mechanism.
3054 (Prompt2.__init__): Introduced new escape '\D' for continuation
3058 (Prompt2.__init__): Introduced new escape '\D' for continuation
3055 prompts. It represents the counter ('\#') as dots.
3059 prompts. It represents the counter ('\#') as dots.
3056 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3060 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3057 need to update their ipythonrc files and replace '%n' with '\D' in
3061 need to update their ipythonrc files and replace '%n' with '\D' in
3058 their prompt_in2 settings everywhere. Sorry, but there's
3062 their prompt_in2 settings everywhere. Sorry, but there's
3059 otherwise no clean way to get all prompts to properly align. The
3063 otherwise no clean way to get all prompts to properly align. The
3060 ipythonrc shipped with IPython has been updated.
3064 ipythonrc shipped with IPython has been updated.
3061
3065
3062 2004-06-07 Fernando Perez <fperez@colorado.edu>
3066 2004-06-07 Fernando Perez <fperez@colorado.edu>
3063
3067
3064 * setup.py (isfile): Pass local_icons option to latex2html, so the
3068 * setup.py (isfile): Pass local_icons option to latex2html, so the
3065 resulting HTML file is self-contained. Thanks to
3069 resulting HTML file is self-contained. Thanks to
3066 dryice-AT-liu.com.cn for the tip.
3070 dryice-AT-liu.com.cn for the tip.
3067
3071
3068 * pysh.py: I created a new profile 'shell', which implements a
3072 * pysh.py: I created a new profile 'shell', which implements a
3069 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3073 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3070 system shell, nor will it become one anytime soon. It's mainly
3074 system shell, nor will it become one anytime soon. It's mainly
3071 meant to illustrate the use of the new flexible bash-like prompts.
3075 meant to illustrate the use of the new flexible bash-like prompts.
3072 I guess it could be used by hardy souls for true shell management,
3076 I guess it could be used by hardy souls for true shell management,
3073 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3077 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3074 profile. This uses the InterpreterExec extension provided by
3078 profile. This uses the InterpreterExec extension provided by
3075 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3079 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3076
3080
3077 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3081 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3078 auto-align itself with the length of the previous input prompt
3082 auto-align itself with the length of the previous input prompt
3079 (taking into account the invisible color escapes).
3083 (taking into account the invisible color escapes).
3080 (CachedOutput.__init__): Large restructuring of this class. Now
3084 (CachedOutput.__init__): Large restructuring of this class. Now
3081 all three prompts (primary1, primary2, output) are proper objects,
3085 all three prompts (primary1, primary2, output) are proper objects,
3082 managed by the 'parent' CachedOutput class. The code is still a
3086 managed by the 'parent' CachedOutput class. The code is still a
3083 bit hackish (all prompts share state via a pointer to the cache),
3087 bit hackish (all prompts share state via a pointer to the cache),
3084 but it's overall far cleaner than before.
3088 but it's overall far cleaner than before.
3085
3089
3086 * IPython/genutils.py (getoutputerror): modified to add verbose,
3090 * IPython/genutils.py (getoutputerror): modified to add verbose,
3087 debug and header options. This makes the interface of all getout*
3091 debug and header options. This makes the interface of all getout*
3088 functions uniform.
3092 functions uniform.
3089 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3093 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3090
3094
3091 * IPython/Magic.py (Magic.default_option): added a function to
3095 * IPython/Magic.py (Magic.default_option): added a function to
3092 allow registering default options for any magic command. This
3096 allow registering default options for any magic command. This
3093 makes it easy to have profiles which customize the magics globally
3097 makes it easy to have profiles which customize the magics globally
3094 for a certain use. The values set through this function are
3098 for a certain use. The values set through this function are
3095 picked up by the parse_options() method, which all magics should
3099 picked up by the parse_options() method, which all magics should
3096 use to parse their options.
3100 use to parse their options.
3097
3101
3098 * IPython/genutils.py (warn): modified the warnings framework to
3102 * IPython/genutils.py (warn): modified the warnings framework to
3099 use the Term I/O class. I'm trying to slowly unify all of
3103 use the Term I/O class. I'm trying to slowly unify all of
3100 IPython's I/O operations to pass through Term.
3104 IPython's I/O operations to pass through Term.
3101
3105
3102 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3106 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3103 the secondary prompt to correctly match the length of the primary
3107 the secondary prompt to correctly match the length of the primary
3104 one for any prompt. Now multi-line code will properly line up
3108 one for any prompt. Now multi-line code will properly line up
3105 even for path dependent prompts, such as the new ones available
3109 even for path dependent prompts, such as the new ones available
3106 via the prompt_specials.
3110 via the prompt_specials.
3107
3111
3108 2004-06-06 Fernando Perez <fperez@colorado.edu>
3112 2004-06-06 Fernando Perez <fperez@colorado.edu>
3109
3113
3110 * IPython/Prompts.py (prompt_specials): Added the ability to have
3114 * IPython/Prompts.py (prompt_specials): Added the ability to have
3111 bash-like special sequences in the prompts, which get
3115 bash-like special sequences in the prompts, which get
3112 automatically expanded. Things like hostname, current working
3116 automatically expanded. Things like hostname, current working
3113 directory and username are implemented already, but it's easy to
3117 directory and username are implemented already, but it's easy to
3114 add more in the future. Thanks to a patch by W.J. van der Laan
3118 add more in the future. Thanks to a patch by W.J. van der Laan
3115 <gnufnork-AT-hetdigitalegat.nl>
3119 <gnufnork-AT-hetdigitalegat.nl>
3116 (prompt_specials): Added color support for prompt strings, so
3120 (prompt_specials): Added color support for prompt strings, so
3117 users can define arbitrary color setups for their prompts.
3121 users can define arbitrary color setups for their prompts.
3118
3122
3119 2004-06-05 Fernando Perez <fperez@colorado.edu>
3123 2004-06-05 Fernando Perez <fperez@colorado.edu>
3120
3124
3121 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3125 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3122 code to load Gary Bishop's readline and configure it
3126 code to load Gary Bishop's readline and configure it
3123 automatically. Thanks to Gary for help on this.
3127 automatically. Thanks to Gary for help on this.
3124
3128
3125 2004-06-01 Fernando Perez <fperez@colorado.edu>
3129 2004-06-01 Fernando Perez <fperez@colorado.edu>
3126
3130
3127 * IPython/Logger.py (Logger.create_log): fix bug for logging
3131 * IPython/Logger.py (Logger.create_log): fix bug for logging
3128 with no filename (previous fix was incomplete).
3132 with no filename (previous fix was incomplete).
3129
3133
3130 2004-05-25 Fernando Perez <fperez@colorado.edu>
3134 2004-05-25 Fernando Perez <fperez@colorado.edu>
3131
3135
3132 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3136 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3133 parens would get passed to the shell.
3137 parens would get passed to the shell.
3134
3138
3135 2004-05-20 Fernando Perez <fperez@colorado.edu>
3139 2004-05-20 Fernando Perez <fperez@colorado.edu>
3136
3140
3137 * IPython/Magic.py (Magic.magic_prun): changed default profile
3141 * IPython/Magic.py (Magic.magic_prun): changed default profile
3138 sort order to 'time' (the more common profiling need).
3142 sort order to 'time' (the more common profiling need).
3139
3143
3140 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3144 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3141 so that source code shown is guaranteed in sync with the file on
3145 so that source code shown is guaranteed in sync with the file on
3142 disk (also changed in psource). Similar fix to the one for
3146 disk (also changed in psource). Similar fix to the one for
3143 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3147 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3144 <yann.ledu-AT-noos.fr>.
3148 <yann.ledu-AT-noos.fr>.
3145
3149
3146 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3150 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3147 with a single option would not be correctly parsed. Closes
3151 with a single option would not be correctly parsed. Closes
3148 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3152 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3149 introduced in 0.6.0 (on 2004-05-06).
3153 introduced in 0.6.0 (on 2004-05-06).
3150
3154
3151 2004-05-13 *** Released version 0.6.0
3155 2004-05-13 *** Released version 0.6.0
3152
3156
3153 2004-05-13 Fernando Perez <fperez@colorado.edu>
3157 2004-05-13 Fernando Perez <fperez@colorado.edu>
3154
3158
3155 * debian/: Added debian/ directory to CVS, so that debian support
3159 * debian/: Added debian/ directory to CVS, so that debian support
3156 is publicly accessible. The debian package is maintained by Jack
3160 is publicly accessible. The debian package is maintained by Jack
3157 Moffit <jack-AT-xiph.org>.
3161 Moffit <jack-AT-xiph.org>.
3158
3162
3159 * Documentation: included the notes about an ipython-based system
3163 * Documentation: included the notes about an ipython-based system
3160 shell (the hypothetical 'pysh') into the new_design.pdf document,
3164 shell (the hypothetical 'pysh') into the new_design.pdf document,
3161 so that these ideas get distributed to users along with the
3165 so that these ideas get distributed to users along with the
3162 official documentation.
3166 official documentation.
3163
3167
3164 2004-05-10 Fernando Perez <fperez@colorado.edu>
3168 2004-05-10 Fernando Perez <fperez@colorado.edu>
3165
3169
3166 * IPython/Logger.py (Logger.create_log): fix recently introduced
3170 * IPython/Logger.py (Logger.create_log): fix recently introduced
3167 bug (misindented line) where logstart would fail when not given an
3171 bug (misindented line) where logstart would fail when not given an
3168 explicit filename.
3172 explicit filename.
3169
3173
3170 2004-05-09 Fernando Perez <fperez@colorado.edu>
3174 2004-05-09 Fernando Perez <fperez@colorado.edu>
3171
3175
3172 * IPython/Magic.py (Magic.parse_options): skip system call when
3176 * IPython/Magic.py (Magic.parse_options): skip system call when
3173 there are no options to look for. Faster, cleaner for the common
3177 there are no options to look for. Faster, cleaner for the common
3174 case.
3178 case.
3175
3179
3176 * Documentation: many updates to the manual: describing Windows
3180 * Documentation: many updates to the manual: describing Windows
3177 support better, Gnuplot updates, credits, misc small stuff. Also
3181 support better, Gnuplot updates, credits, misc small stuff. Also
3178 updated the new_design doc a bit.
3182 updated the new_design doc a bit.
3179
3183
3180 2004-05-06 *** Released version 0.6.0.rc1
3184 2004-05-06 *** Released version 0.6.0.rc1
3181
3185
3182 2004-05-06 Fernando Perez <fperez@colorado.edu>
3186 2004-05-06 Fernando Perez <fperez@colorado.edu>
3183
3187
3184 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3188 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3185 operations to use the vastly more efficient list/''.join() method.
3189 operations to use the vastly more efficient list/''.join() method.
3186 (FormattedTB.text): Fix
3190 (FormattedTB.text): Fix
3187 http://www.scipy.net/roundup/ipython/issue12 - exception source
3191 http://www.scipy.net/roundup/ipython/issue12 - exception source
3188 extract not updated after reload. Thanks to Mike Salib
3192 extract not updated after reload. Thanks to Mike Salib
3189 <msalib-AT-mit.edu> for pinning the source of the problem.
3193 <msalib-AT-mit.edu> for pinning the source of the problem.
3190 Fortunately, the solution works inside ipython and doesn't require
3194 Fortunately, the solution works inside ipython and doesn't require
3191 any changes to python proper.
3195 any changes to python proper.
3192
3196
3193 * IPython/Magic.py (Magic.parse_options): Improved to process the
3197 * IPython/Magic.py (Magic.parse_options): Improved to process the
3194 argument list as a true shell would (by actually using the
3198 argument list as a true shell would (by actually using the
3195 underlying system shell). This way, all @magics automatically get
3199 underlying system shell). This way, all @magics automatically get
3196 shell expansion for variables. Thanks to a comment by Alex
3200 shell expansion for variables. Thanks to a comment by Alex
3197 Schmolck.
3201 Schmolck.
3198
3202
3199 2004-04-04 Fernando Perez <fperez@colorado.edu>
3203 2004-04-04 Fernando Perez <fperez@colorado.edu>
3200
3204
3201 * IPython/iplib.py (InteractiveShell.interact): Added a special
3205 * IPython/iplib.py (InteractiveShell.interact): Added a special
3202 trap for a debugger quit exception, which is basically impossible
3206 trap for a debugger quit exception, which is basically impossible
3203 to handle by normal mechanisms, given what pdb does to the stack.
3207 to handle by normal mechanisms, given what pdb does to the stack.
3204 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3208 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3205
3209
3206 2004-04-03 Fernando Perez <fperez@colorado.edu>
3210 2004-04-03 Fernando Perez <fperez@colorado.edu>
3207
3211
3208 * IPython/genutils.py (Term): Standardized the names of the Term
3212 * IPython/genutils.py (Term): Standardized the names of the Term
3209 class streams to cin/cout/cerr, following C++ naming conventions
3213 class streams to cin/cout/cerr, following C++ naming conventions
3210 (I can't use in/out/err because 'in' is not a valid attribute
3214 (I can't use in/out/err because 'in' is not a valid attribute
3211 name).
3215 name).
3212
3216
3213 * IPython/iplib.py (InteractiveShell.interact): don't increment
3217 * IPython/iplib.py (InteractiveShell.interact): don't increment
3214 the prompt if there's no user input. By Daniel 'Dang' Griffith
3218 the prompt if there's no user input. By Daniel 'Dang' Griffith
3215 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3219 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3216 Francois Pinard.
3220 Francois Pinard.
3217
3221
3218 2004-04-02 Fernando Perez <fperez@colorado.edu>
3222 2004-04-02 Fernando Perez <fperez@colorado.edu>
3219
3223
3220 * IPython/genutils.py (Stream.__init__): Modified to survive at
3224 * IPython/genutils.py (Stream.__init__): Modified to survive at
3221 least importing in contexts where stdin/out/err aren't true file
3225 least importing in contexts where stdin/out/err aren't true file
3222 objects, such as PyCrust (they lack fileno() and mode). However,
3226 objects, such as PyCrust (they lack fileno() and mode). However,
3223 the recovery facilities which rely on these things existing will
3227 the recovery facilities which rely on these things existing will
3224 not work.
3228 not work.
3225
3229
3226 2004-04-01 Fernando Perez <fperez@colorado.edu>
3230 2004-04-01 Fernando Perez <fperez@colorado.edu>
3227
3231
3228 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3232 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3229 use the new getoutputerror() function, so it properly
3233 use the new getoutputerror() function, so it properly
3230 distinguishes stdout/err.
3234 distinguishes stdout/err.
3231
3235
3232 * IPython/genutils.py (getoutputerror): added a function to
3236 * IPython/genutils.py (getoutputerror): added a function to
3233 capture separately the standard output and error of a command.
3237 capture separately the standard output and error of a command.
3234 After a comment from dang on the mailing lists. This code is
3238 After a comment from dang on the mailing lists. This code is
3235 basically a modified version of commands.getstatusoutput(), from
3239 basically a modified version of commands.getstatusoutput(), from
3236 the standard library.
3240 the standard library.
3237
3241
3238 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3242 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3239 '!!' as a special syntax (shorthand) to access @sx.
3243 '!!' as a special syntax (shorthand) to access @sx.
3240
3244
3241 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3245 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3242 command and return its output as a list split on '\n'.
3246 command and return its output as a list split on '\n'.
3243
3247
3244 2004-03-31 Fernando Perez <fperez@colorado.edu>
3248 2004-03-31 Fernando Perez <fperez@colorado.edu>
3245
3249
3246 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3250 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3247 method to dictionaries used as FakeModule instances if they lack
3251 method to dictionaries used as FakeModule instances if they lack
3248 it. At least pydoc in python2.3 breaks for runtime-defined
3252 it. At least pydoc in python2.3 breaks for runtime-defined
3249 functions without this hack. At some point I need to _really_
3253 functions without this hack. At some point I need to _really_
3250 understand what FakeModule is doing, because it's a gross hack.
3254 understand what FakeModule is doing, because it's a gross hack.
3251 But it solves Arnd's problem for now...
3255 But it solves Arnd's problem for now...
3252
3256
3253 2004-02-27 Fernando Perez <fperez@colorado.edu>
3257 2004-02-27 Fernando Perez <fperez@colorado.edu>
3254
3258
3255 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3259 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3256 mode would behave erratically. Also increased the number of
3260 mode would behave erratically. Also increased the number of
3257 possible logs in rotate mod to 999. Thanks to Rod Holland
3261 possible logs in rotate mod to 999. Thanks to Rod Holland
3258 <rhh@StructureLABS.com> for the report and fixes.
3262 <rhh@StructureLABS.com> for the report and fixes.
3259
3263
3260 2004-02-26 Fernando Perez <fperez@colorado.edu>
3264 2004-02-26 Fernando Perez <fperez@colorado.edu>
3261
3265
3262 * IPython/genutils.py (page): Check that the curses module really
3266 * IPython/genutils.py (page): Check that the curses module really
3263 has the initscr attribute before trying to use it. For some
3267 has the initscr attribute before trying to use it. For some
3264 reason, the Solaris curses module is missing this. I think this
3268 reason, the Solaris curses module is missing this. I think this
3265 should be considered a Solaris python bug, but I'm not sure.
3269 should be considered a Solaris python bug, but I'm not sure.
3266
3270
3267 2004-01-17 Fernando Perez <fperez@colorado.edu>
3271 2004-01-17 Fernando Perez <fperez@colorado.edu>
3268
3272
3269 * IPython/genutils.py (Stream.__init__): Changes to try to make
3273 * IPython/genutils.py (Stream.__init__): Changes to try to make
3270 ipython robust against stdin/out/err being closed by the user.
3274 ipython robust against stdin/out/err being closed by the user.
3271 This is 'user error' (and blocks a normal python session, at least
3275 This is 'user error' (and blocks a normal python session, at least
3272 the stdout case). However, Ipython should be able to survive such
3276 the stdout case). However, Ipython should be able to survive such
3273 instances of abuse as gracefully as possible. To simplify the
3277 instances of abuse as gracefully as possible. To simplify the
3274 coding and maintain compatibility with Gary Bishop's Term
3278 coding and maintain compatibility with Gary Bishop's Term
3275 contributions, I've made use of classmethods for this. I think
3279 contributions, I've made use of classmethods for this. I think
3276 this introduces a dependency on python 2.2.
3280 this introduces a dependency on python 2.2.
3277
3281
3278 2004-01-13 Fernando Perez <fperez@colorado.edu>
3282 2004-01-13 Fernando Perez <fperez@colorado.edu>
3279
3283
3280 * IPython/numutils.py (exp_safe): simplified the code a bit and
3284 * IPython/numutils.py (exp_safe): simplified the code a bit and
3281 removed the need for importing the kinds module altogether.
3285 removed the need for importing the kinds module altogether.
3282
3286
3283 2004-01-06 Fernando Perez <fperez@colorado.edu>
3287 2004-01-06 Fernando Perez <fperez@colorado.edu>
3284
3288
3285 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3289 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3286 a magic function instead, after some community feedback. No
3290 a magic function instead, after some community feedback. No
3287 special syntax will exist for it, but its name is deliberately
3291 special syntax will exist for it, but its name is deliberately
3288 very short.
3292 very short.
3289
3293
3290 2003-12-20 Fernando Perez <fperez@colorado.edu>
3294 2003-12-20 Fernando Perez <fperez@colorado.edu>
3291
3295
3292 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3296 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3293 new functionality, to automagically assign the result of a shell
3297 new functionality, to automagically assign the result of a shell
3294 command to a variable. I'll solicit some community feedback on
3298 command to a variable. I'll solicit some community feedback on
3295 this before making it permanent.
3299 this before making it permanent.
3296
3300
3297 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3301 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3298 requested about callables for which inspect couldn't obtain a
3302 requested about callables for which inspect couldn't obtain a
3299 proper argspec. Thanks to a crash report sent by Etienne
3303 proper argspec. Thanks to a crash report sent by Etienne
3300 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3304 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3301
3305
3302 2003-12-09 Fernando Perez <fperez@colorado.edu>
3306 2003-12-09 Fernando Perez <fperez@colorado.edu>
3303
3307
3304 * IPython/genutils.py (page): patch for the pager to work across
3308 * IPython/genutils.py (page): patch for the pager to work across
3305 various versions of Windows. By Gary Bishop.
3309 various versions of Windows. By Gary Bishop.
3306
3310
3307 2003-12-04 Fernando Perez <fperez@colorado.edu>
3311 2003-12-04 Fernando Perez <fperez@colorado.edu>
3308
3312
3309 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3313 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3310 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3314 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3311 While I tested this and it looks ok, there may still be corner
3315 While I tested this and it looks ok, there may still be corner
3312 cases I've missed.
3316 cases I've missed.
3313
3317
3314 2003-12-01 Fernando Perez <fperez@colorado.edu>
3318 2003-12-01 Fernando Perez <fperez@colorado.edu>
3315
3319
3316 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3320 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3317 where a line like 'p,q=1,2' would fail because the automagic
3321 where a line like 'p,q=1,2' would fail because the automagic
3318 system would be triggered for @p.
3322 system would be triggered for @p.
3319
3323
3320 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3324 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3321 cleanups, code unmodified.
3325 cleanups, code unmodified.
3322
3326
3323 * IPython/genutils.py (Term): added a class for IPython to handle
3327 * IPython/genutils.py (Term): added a class for IPython to handle
3324 output. In most cases it will just be a proxy for stdout/err, but
3328 output. In most cases it will just be a proxy for stdout/err, but
3325 having this allows modifications to be made for some platforms,
3329 having this allows modifications to be made for some platforms,
3326 such as handling color escapes under Windows. All of this code
3330 such as handling color escapes under Windows. All of this code
3327 was contributed by Gary Bishop, with minor modifications by me.
3331 was contributed by Gary Bishop, with minor modifications by me.
3328 The actual changes affect many files.
3332 The actual changes affect many files.
3329
3333
3330 2003-11-30 Fernando Perez <fperez@colorado.edu>
3334 2003-11-30 Fernando Perez <fperez@colorado.edu>
3331
3335
3332 * IPython/iplib.py (file_matches): new completion code, courtesy
3336 * IPython/iplib.py (file_matches): new completion code, courtesy
3333 of Jeff Collins. This enables filename completion again under
3337 of Jeff Collins. This enables filename completion again under
3334 python 2.3, which disabled it at the C level.
3338 python 2.3, which disabled it at the C level.
3335
3339
3336 2003-11-11 Fernando Perez <fperez@colorado.edu>
3340 2003-11-11 Fernando Perez <fperez@colorado.edu>
3337
3341
3338 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3342 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3339 for Numeric.array(map(...)), but often convenient.
3343 for Numeric.array(map(...)), but often convenient.
3340
3344
3341 2003-11-05 Fernando Perez <fperez@colorado.edu>
3345 2003-11-05 Fernando Perez <fperez@colorado.edu>
3342
3346
3343 * IPython/numutils.py (frange): Changed a call from int() to
3347 * IPython/numutils.py (frange): Changed a call from int() to
3344 int(round()) to prevent a problem reported with arange() in the
3348 int(round()) to prevent a problem reported with arange() in the
3345 numpy list.
3349 numpy list.
3346
3350
3347 2003-10-06 Fernando Perez <fperez@colorado.edu>
3351 2003-10-06 Fernando Perez <fperez@colorado.edu>
3348
3352
3349 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3353 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3350 prevent crashes if sys lacks an argv attribute (it happens with
3354 prevent crashes if sys lacks an argv attribute (it happens with
3351 embedded interpreters which build a bare-bones sys module).
3355 embedded interpreters which build a bare-bones sys module).
3352 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3356 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3353
3357
3354 2003-09-24 Fernando Perez <fperez@colorado.edu>
3358 2003-09-24 Fernando Perez <fperez@colorado.edu>
3355
3359
3356 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3360 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3357 to protect against poorly written user objects where __getattr__
3361 to protect against poorly written user objects where __getattr__
3358 raises exceptions other than AttributeError. Thanks to a bug
3362 raises exceptions other than AttributeError. Thanks to a bug
3359 report by Oliver Sander <osander-AT-gmx.de>.
3363 report by Oliver Sander <osander-AT-gmx.de>.
3360
3364
3361 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3365 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3362 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3366 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3363
3367
3364 2003-09-09 Fernando Perez <fperez@colorado.edu>
3368 2003-09-09 Fernando Perez <fperez@colorado.edu>
3365
3369
3366 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3370 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3367 unpacking a list whith a callable as first element would
3371 unpacking a list whith a callable as first element would
3368 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3372 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3369 Collins.
3373 Collins.
3370
3374
3371 2003-08-25 *** Released version 0.5.0
3375 2003-08-25 *** Released version 0.5.0
3372
3376
3373 2003-08-22 Fernando Perez <fperez@colorado.edu>
3377 2003-08-22 Fernando Perez <fperez@colorado.edu>
3374
3378
3375 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3379 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3376 improperly defined user exceptions. Thanks to feedback from Mark
3380 improperly defined user exceptions. Thanks to feedback from Mark
3377 Russell <mrussell-AT-verio.net>.
3381 Russell <mrussell-AT-verio.net>.
3378
3382
3379 2003-08-20 Fernando Perez <fperez@colorado.edu>
3383 2003-08-20 Fernando Perez <fperez@colorado.edu>
3380
3384
3381 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3385 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3382 printing so that it would print multi-line string forms starting
3386 printing so that it would print multi-line string forms starting
3383 with a new line. This way the formatting is better respected for
3387 with a new line. This way the formatting is better respected for
3384 objects which work hard to make nice string forms.
3388 objects which work hard to make nice string forms.
3385
3389
3386 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3390 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3387 autocall would overtake data access for objects with both
3391 autocall would overtake data access for objects with both
3388 __getitem__ and __call__.
3392 __getitem__ and __call__.
3389
3393
3390 2003-08-19 *** Released version 0.5.0-rc1
3394 2003-08-19 *** Released version 0.5.0-rc1
3391
3395
3392 2003-08-19 Fernando Perez <fperez@colorado.edu>
3396 2003-08-19 Fernando Perez <fperez@colorado.edu>
3393
3397
3394 * IPython/deep_reload.py (load_tail): single tiny change here
3398 * IPython/deep_reload.py (load_tail): single tiny change here
3395 seems to fix the long-standing bug of dreload() failing to work
3399 seems to fix the long-standing bug of dreload() failing to work
3396 for dotted names. But this module is pretty tricky, so I may have
3400 for dotted names. But this module is pretty tricky, so I may have
3397 missed some subtlety. Needs more testing!.
3401 missed some subtlety. Needs more testing!.
3398
3402
3399 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3403 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3400 exceptions which have badly implemented __str__ methods.
3404 exceptions which have badly implemented __str__ methods.
3401 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3405 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3402 which I've been getting reports about from Python 2.3 users. I
3406 which I've been getting reports about from Python 2.3 users. I
3403 wish I had a simple test case to reproduce the problem, so I could
3407 wish I had a simple test case to reproduce the problem, so I could
3404 either write a cleaner workaround or file a bug report if
3408 either write a cleaner workaround or file a bug report if
3405 necessary.
3409 necessary.
3406
3410
3407 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3411 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3408 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3412 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3409 a bug report by Tjabo Kloppenburg.
3413 a bug report by Tjabo Kloppenburg.
3410
3414
3411 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3415 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3412 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3416 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3413 seems rather unstable. Thanks to a bug report by Tjabo
3417 seems rather unstable. Thanks to a bug report by Tjabo
3414 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3418 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3415
3419
3416 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3420 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3417 this out soon because of the critical fixes in the inner loop for
3421 this out soon because of the critical fixes in the inner loop for
3418 generators.
3422 generators.
3419
3423
3420 * IPython/Magic.py (Magic.getargspec): removed. This (and
3424 * IPython/Magic.py (Magic.getargspec): removed. This (and
3421 _get_def) have been obsoleted by OInspect for a long time, I
3425 _get_def) have been obsoleted by OInspect for a long time, I
3422 hadn't noticed that they were dead code.
3426 hadn't noticed that they were dead code.
3423 (Magic._ofind): restored _ofind functionality for a few literals
3427 (Magic._ofind): restored _ofind functionality for a few literals
3424 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3428 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3425 for things like "hello".capitalize?, since that would require a
3429 for things like "hello".capitalize?, since that would require a
3426 potentially dangerous eval() again.
3430 potentially dangerous eval() again.
3427
3431
3428 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3432 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3429 logic a bit more to clean up the escapes handling and minimize the
3433 logic a bit more to clean up the escapes handling and minimize the
3430 use of _ofind to only necessary cases. The interactive 'feel' of
3434 use of _ofind to only necessary cases. The interactive 'feel' of
3431 IPython should have improved quite a bit with the changes in
3435 IPython should have improved quite a bit with the changes in
3432 _prefilter and _ofind (besides being far safer than before).
3436 _prefilter and _ofind (besides being far safer than before).
3433
3437
3434 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3438 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3435 obscure, never reported). Edit would fail to find the object to
3439 obscure, never reported). Edit would fail to find the object to
3436 edit under some circumstances.
3440 edit under some circumstances.
3437 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3441 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3438 which were causing double-calling of generators. Those eval calls
3442 which were causing double-calling of generators. Those eval calls
3439 were _very_ dangerous, since code with side effects could be
3443 were _very_ dangerous, since code with side effects could be
3440 triggered. As they say, 'eval is evil'... These were the
3444 triggered. As they say, 'eval is evil'... These were the
3441 nastiest evals in IPython. Besides, _ofind is now far simpler,
3445 nastiest evals in IPython. Besides, _ofind is now far simpler,
3442 and it should also be quite a bit faster. Its use of inspect is
3446 and it should also be quite a bit faster. Its use of inspect is
3443 also safer, so perhaps some of the inspect-related crashes I've
3447 also safer, so perhaps some of the inspect-related crashes I've
3444 seen lately with Python 2.3 might be taken care of. That will
3448 seen lately with Python 2.3 might be taken care of. That will
3445 need more testing.
3449 need more testing.
3446
3450
3447 2003-08-17 Fernando Perez <fperez@colorado.edu>
3451 2003-08-17 Fernando Perez <fperez@colorado.edu>
3448
3452
3449 * IPython/iplib.py (InteractiveShell._prefilter): significant
3453 * IPython/iplib.py (InteractiveShell._prefilter): significant
3450 simplifications to the logic for handling user escapes. Faster
3454 simplifications to the logic for handling user escapes. Faster
3451 and simpler code.
3455 and simpler code.
3452
3456
3453 2003-08-14 Fernando Perez <fperez@colorado.edu>
3457 2003-08-14 Fernando Perez <fperez@colorado.edu>
3454
3458
3455 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3459 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3456 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3460 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3457 but it should be quite a bit faster. And the recursive version
3461 but it should be quite a bit faster. And the recursive version
3458 generated O(log N) intermediate storage for all rank>1 arrays,
3462 generated O(log N) intermediate storage for all rank>1 arrays,
3459 even if they were contiguous.
3463 even if they were contiguous.
3460 (l1norm): Added this function.
3464 (l1norm): Added this function.
3461 (norm): Added this function for arbitrary norms (including
3465 (norm): Added this function for arbitrary norms (including
3462 l-infinity). l1 and l2 are still special cases for convenience
3466 l-infinity). l1 and l2 are still special cases for convenience
3463 and speed.
3467 and speed.
3464
3468
3465 2003-08-03 Fernando Perez <fperez@colorado.edu>
3469 2003-08-03 Fernando Perez <fperez@colorado.edu>
3466
3470
3467 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3471 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3468 exceptions, which now raise PendingDeprecationWarnings in Python
3472 exceptions, which now raise PendingDeprecationWarnings in Python
3469 2.3. There were some in Magic and some in Gnuplot2.
3473 2.3. There were some in Magic and some in Gnuplot2.
3470
3474
3471 2003-06-30 Fernando Perez <fperez@colorado.edu>
3475 2003-06-30 Fernando Perez <fperez@colorado.edu>
3472
3476
3473 * IPython/genutils.py (page): modified to call curses only for
3477 * IPython/genutils.py (page): modified to call curses only for
3474 terminals where TERM=='xterm'. After problems under many other
3478 terminals where TERM=='xterm'. After problems under many other
3475 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3479 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3476
3480
3477 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3481 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3478 would be triggered when readline was absent. This was just an old
3482 would be triggered when readline was absent. This was just an old
3479 debugging statement I'd forgotten to take out.
3483 debugging statement I'd forgotten to take out.
3480
3484
3481 2003-06-20 Fernando Perez <fperez@colorado.edu>
3485 2003-06-20 Fernando Perez <fperez@colorado.edu>
3482
3486
3483 * IPython/genutils.py (clock): modified to return only user time
3487 * IPython/genutils.py (clock): modified to return only user time
3484 (not counting system time), after a discussion on scipy. While
3488 (not counting system time), after a discussion on scipy. While
3485 system time may be a useful quantity occasionally, it may much
3489 system time may be a useful quantity occasionally, it may much
3486 more easily be skewed by occasional swapping or other similar
3490 more easily be skewed by occasional swapping or other similar
3487 activity.
3491 activity.
3488
3492
3489 2003-06-05 Fernando Perez <fperez@colorado.edu>
3493 2003-06-05 Fernando Perez <fperez@colorado.edu>
3490
3494
3491 * IPython/numutils.py (identity): new function, for building
3495 * IPython/numutils.py (identity): new function, for building
3492 arbitrary rank Kronecker deltas (mostly backwards compatible with
3496 arbitrary rank Kronecker deltas (mostly backwards compatible with
3493 Numeric.identity)
3497 Numeric.identity)
3494
3498
3495 2003-06-03 Fernando Perez <fperez@colorado.edu>
3499 2003-06-03 Fernando Perez <fperez@colorado.edu>
3496
3500
3497 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3501 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3498 arguments passed to magics with spaces, to allow trailing '\' to
3502 arguments passed to magics with spaces, to allow trailing '\' to
3499 work normally (mainly for Windows users).
3503 work normally (mainly for Windows users).
3500
3504
3501 2003-05-29 Fernando Perez <fperez@colorado.edu>
3505 2003-05-29 Fernando Perez <fperez@colorado.edu>
3502
3506
3503 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3507 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3504 instead of pydoc.help. This fixes a bizarre behavior where
3508 instead of pydoc.help. This fixes a bizarre behavior where
3505 printing '%s' % locals() would trigger the help system. Now
3509 printing '%s' % locals() would trigger the help system. Now
3506 ipython behaves like normal python does.
3510 ipython behaves like normal python does.
3507
3511
3508 Note that if one does 'from pydoc import help', the bizarre
3512 Note that if one does 'from pydoc import help', the bizarre
3509 behavior returns, but this will also happen in normal python, so
3513 behavior returns, but this will also happen in normal python, so
3510 it's not an ipython bug anymore (it has to do with how pydoc.help
3514 it's not an ipython bug anymore (it has to do with how pydoc.help
3511 is implemented).
3515 is implemented).
3512
3516
3513 2003-05-22 Fernando Perez <fperez@colorado.edu>
3517 2003-05-22 Fernando Perez <fperez@colorado.edu>
3514
3518
3515 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3519 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3516 return [] instead of None when nothing matches, also match to end
3520 return [] instead of None when nothing matches, also match to end
3517 of line. Patch by Gary Bishop.
3521 of line. Patch by Gary Bishop.
3518
3522
3519 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3523 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3520 protection as before, for files passed on the command line. This
3524 protection as before, for files passed on the command line. This
3521 prevents the CrashHandler from kicking in if user files call into
3525 prevents the CrashHandler from kicking in if user files call into
3522 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3526 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3523 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3527 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3524
3528
3525 2003-05-20 *** Released version 0.4.0
3529 2003-05-20 *** Released version 0.4.0
3526
3530
3527 2003-05-20 Fernando Perez <fperez@colorado.edu>
3531 2003-05-20 Fernando Perez <fperez@colorado.edu>
3528
3532
3529 * setup.py: added support for manpages. It's a bit hackish b/c of
3533 * setup.py: added support for manpages. It's a bit hackish b/c of
3530 a bug in the way the bdist_rpm distutils target handles gzipped
3534 a bug in the way the bdist_rpm distutils target handles gzipped
3531 manpages, but it works. After a patch by Jack.
3535 manpages, but it works. After a patch by Jack.
3532
3536
3533 2003-05-19 Fernando Perez <fperez@colorado.edu>
3537 2003-05-19 Fernando Perez <fperez@colorado.edu>
3534
3538
3535 * IPython/numutils.py: added a mockup of the kinds module, since
3539 * IPython/numutils.py: added a mockup of the kinds module, since
3536 it was recently removed from Numeric. This way, numutils will
3540 it was recently removed from Numeric. This way, numutils will
3537 work for all users even if they are missing kinds.
3541 work for all users even if they are missing kinds.
3538
3542
3539 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3543 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3540 failure, which can occur with SWIG-wrapped extensions. After a
3544 failure, which can occur with SWIG-wrapped extensions. After a
3541 crash report from Prabhu.
3545 crash report from Prabhu.
3542
3546
3543 2003-05-16 Fernando Perez <fperez@colorado.edu>
3547 2003-05-16 Fernando Perez <fperez@colorado.edu>
3544
3548
3545 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3549 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3546 protect ipython from user code which may call directly
3550 protect ipython from user code which may call directly
3547 sys.excepthook (this looks like an ipython crash to the user, even
3551 sys.excepthook (this looks like an ipython crash to the user, even
3548 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3552 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3549 This is especially important to help users of WxWindows, but may
3553 This is especially important to help users of WxWindows, but may
3550 also be useful in other cases.
3554 also be useful in other cases.
3551
3555
3552 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3556 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3553 an optional tb_offset to be specified, and to preserve exception
3557 an optional tb_offset to be specified, and to preserve exception
3554 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3558 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3555
3559
3556 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3560 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3557
3561
3558 2003-05-15 Fernando Perez <fperez@colorado.edu>
3562 2003-05-15 Fernando Perez <fperez@colorado.edu>
3559
3563
3560 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3564 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3561 installing for a new user under Windows.
3565 installing for a new user under Windows.
3562
3566
3563 2003-05-12 Fernando Perez <fperez@colorado.edu>
3567 2003-05-12 Fernando Perez <fperez@colorado.edu>
3564
3568
3565 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3569 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3566 handler for Emacs comint-based lines. Currently it doesn't do
3570 handler for Emacs comint-based lines. Currently it doesn't do
3567 much (but importantly, it doesn't update the history cache). In
3571 much (but importantly, it doesn't update the history cache). In
3568 the future it may be expanded if Alex needs more functionality
3572 the future it may be expanded if Alex needs more functionality
3569 there.
3573 there.
3570
3574
3571 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3575 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3572 info to crash reports.
3576 info to crash reports.
3573
3577
3574 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3578 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3575 just like Python's -c. Also fixed crash with invalid -color
3579 just like Python's -c. Also fixed crash with invalid -color
3576 option value at startup. Thanks to Will French
3580 option value at startup. Thanks to Will French
3577 <wfrench-AT-bestweb.net> for the bug report.
3581 <wfrench-AT-bestweb.net> for the bug report.
3578
3582
3579 2003-05-09 Fernando Perez <fperez@colorado.edu>
3583 2003-05-09 Fernando Perez <fperez@colorado.edu>
3580
3584
3581 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3585 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3582 to EvalDict (it's a mapping, after all) and simplified its code
3586 to EvalDict (it's a mapping, after all) and simplified its code
3583 quite a bit, after a nice discussion on c.l.py where Gustavo
3587 quite a bit, after a nice discussion on c.l.py where Gustavo
3584 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3588 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3585
3589
3586 2003-04-30 Fernando Perez <fperez@colorado.edu>
3590 2003-04-30 Fernando Perez <fperez@colorado.edu>
3587
3591
3588 * IPython/genutils.py (timings_out): modified it to reduce its
3592 * IPython/genutils.py (timings_out): modified it to reduce its
3589 overhead in the common reps==1 case.
3593 overhead in the common reps==1 case.
3590
3594
3591 2003-04-29 Fernando Perez <fperez@colorado.edu>
3595 2003-04-29 Fernando Perez <fperez@colorado.edu>
3592
3596
3593 * IPython/genutils.py (timings_out): Modified to use the resource
3597 * IPython/genutils.py (timings_out): Modified to use the resource
3594 module, which avoids the wraparound problems of time.clock().
3598 module, which avoids the wraparound problems of time.clock().
3595
3599
3596 2003-04-17 *** Released version 0.2.15pre4
3600 2003-04-17 *** Released version 0.2.15pre4
3597
3601
3598 2003-04-17 Fernando Perez <fperez@colorado.edu>
3602 2003-04-17 Fernando Perez <fperez@colorado.edu>
3599
3603
3600 * setup.py (scriptfiles): Split windows-specific stuff over to a
3604 * setup.py (scriptfiles): Split windows-specific stuff over to a
3601 separate file, in an attempt to have a Windows GUI installer.
3605 separate file, in an attempt to have a Windows GUI installer.
3602 That didn't work, but part of the groundwork is done.
3606 That didn't work, but part of the groundwork is done.
3603
3607
3604 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3608 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3605 indent/unindent with 4 spaces. Particularly useful in combination
3609 indent/unindent with 4 spaces. Particularly useful in combination
3606 with the new auto-indent option.
3610 with the new auto-indent option.
3607
3611
3608 2003-04-16 Fernando Perez <fperez@colorado.edu>
3612 2003-04-16 Fernando Perez <fperez@colorado.edu>
3609
3613
3610 * IPython/Magic.py: various replacements of self.rc for
3614 * IPython/Magic.py: various replacements of self.rc for
3611 self.shell.rc. A lot more remains to be done to fully disentangle
3615 self.shell.rc. A lot more remains to be done to fully disentangle
3612 this class from the main Shell class.
3616 this class from the main Shell class.
3613
3617
3614 * IPython/GnuplotRuntime.py: added checks for mouse support so
3618 * IPython/GnuplotRuntime.py: added checks for mouse support so
3615 that we don't try to enable it if the current gnuplot doesn't
3619 that we don't try to enable it if the current gnuplot doesn't
3616 really support it. Also added checks so that we don't try to
3620 really support it. Also added checks so that we don't try to
3617 enable persist under Windows (where Gnuplot doesn't recognize the
3621 enable persist under Windows (where Gnuplot doesn't recognize the
3618 option).
3622 option).
3619
3623
3620 * IPython/iplib.py (InteractiveShell.interact): Added optional
3624 * IPython/iplib.py (InteractiveShell.interact): Added optional
3621 auto-indenting code, after a patch by King C. Shu
3625 auto-indenting code, after a patch by King C. Shu
3622 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3626 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3623 get along well with pasting indented code. If I ever figure out
3627 get along well with pasting indented code. If I ever figure out
3624 how to make that part go well, it will become on by default.
3628 how to make that part go well, it will become on by default.
3625
3629
3626 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3630 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3627 crash ipython if there was an unmatched '%' in the user's prompt
3631 crash ipython if there was an unmatched '%' in the user's prompt
3628 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3632 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3629
3633
3630 * IPython/iplib.py (InteractiveShell.interact): removed the
3634 * IPython/iplib.py (InteractiveShell.interact): removed the
3631 ability to ask the user whether he wants to crash or not at the
3635 ability to ask the user whether he wants to crash or not at the
3632 'last line' exception handler. Calling functions at that point
3636 'last line' exception handler. Calling functions at that point
3633 changes the stack, and the error reports would have incorrect
3637 changes the stack, and the error reports would have incorrect
3634 tracebacks.
3638 tracebacks.
3635
3639
3636 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3640 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3637 pass through a peger a pretty-printed form of any object. After a
3641 pass through a peger a pretty-printed form of any object. After a
3638 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3642 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3639
3643
3640 2003-04-14 Fernando Perez <fperez@colorado.edu>
3644 2003-04-14 Fernando Perez <fperez@colorado.edu>
3641
3645
3642 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3646 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3643 all files in ~ would be modified at first install (instead of
3647 all files in ~ would be modified at first install (instead of
3644 ~/.ipython). This could be potentially disastrous, as the
3648 ~/.ipython). This could be potentially disastrous, as the
3645 modification (make line-endings native) could damage binary files.
3649 modification (make line-endings native) could damage binary files.
3646
3650
3647 2003-04-10 Fernando Perez <fperez@colorado.edu>
3651 2003-04-10 Fernando Perez <fperez@colorado.edu>
3648
3652
3649 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3653 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3650 handle only lines which are invalid python. This now means that
3654 handle only lines which are invalid python. This now means that
3651 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3655 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3652 for the bug report.
3656 for the bug report.
3653
3657
3654 2003-04-01 Fernando Perez <fperez@colorado.edu>
3658 2003-04-01 Fernando Perez <fperez@colorado.edu>
3655
3659
3656 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3660 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3657 where failing to set sys.last_traceback would crash pdb.pm().
3661 where failing to set sys.last_traceback would crash pdb.pm().
3658 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3662 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3659 report.
3663 report.
3660
3664
3661 2003-03-25 Fernando Perez <fperez@colorado.edu>
3665 2003-03-25 Fernando Perez <fperez@colorado.edu>
3662
3666
3663 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3667 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3664 before printing it (it had a lot of spurious blank lines at the
3668 before printing it (it had a lot of spurious blank lines at the
3665 end).
3669 end).
3666
3670
3667 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3671 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3668 output would be sent 21 times! Obviously people don't use this
3672 output would be sent 21 times! Obviously people don't use this
3669 too often, or I would have heard about it.
3673 too often, or I would have heard about it.
3670
3674
3671 2003-03-24 Fernando Perez <fperez@colorado.edu>
3675 2003-03-24 Fernando Perez <fperez@colorado.edu>
3672
3676
3673 * setup.py (scriptfiles): renamed the data_files parameter from
3677 * setup.py (scriptfiles): renamed the data_files parameter from
3674 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3678 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3675 for the patch.
3679 for the patch.
3676
3680
3677 2003-03-20 Fernando Perez <fperez@colorado.edu>
3681 2003-03-20 Fernando Perez <fperez@colorado.edu>
3678
3682
3679 * IPython/genutils.py (error): added error() and fatal()
3683 * IPython/genutils.py (error): added error() and fatal()
3680 functions.
3684 functions.
3681
3685
3682 2003-03-18 *** Released version 0.2.15pre3
3686 2003-03-18 *** Released version 0.2.15pre3
3683
3687
3684 2003-03-18 Fernando Perez <fperez@colorado.edu>
3688 2003-03-18 Fernando Perez <fperez@colorado.edu>
3685
3689
3686 * setupext/install_data_ext.py
3690 * setupext/install_data_ext.py
3687 (install_data_ext.initialize_options): Class contributed by Jack
3691 (install_data_ext.initialize_options): Class contributed by Jack
3688 Moffit for fixing the old distutils hack. He is sending this to
3692 Moffit for fixing the old distutils hack. He is sending this to
3689 the distutils folks so in the future we may not need it as a
3693 the distutils folks so in the future we may not need it as a
3690 private fix.
3694 private fix.
3691
3695
3692 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3696 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3693 changes for Debian packaging. See his patch for full details.
3697 changes for Debian packaging. See his patch for full details.
3694 The old distutils hack of making the ipythonrc* files carry a
3698 The old distutils hack of making the ipythonrc* files carry a
3695 bogus .py extension is gone, at last. Examples were moved to a
3699 bogus .py extension is gone, at last. Examples were moved to a
3696 separate subdir under doc/, and the separate executable scripts
3700 separate subdir under doc/, and the separate executable scripts
3697 now live in their own directory. Overall a great cleanup. The
3701 now live in their own directory. Overall a great cleanup. The
3698 manual was updated to use the new files, and setup.py has been
3702 manual was updated to use the new files, and setup.py has been
3699 fixed for this setup.
3703 fixed for this setup.
3700
3704
3701 * IPython/PyColorize.py (Parser.usage): made non-executable and
3705 * IPython/PyColorize.py (Parser.usage): made non-executable and
3702 created a pycolor wrapper around it to be included as a script.
3706 created a pycolor wrapper around it to be included as a script.
3703
3707
3704 2003-03-12 *** Released version 0.2.15pre2
3708 2003-03-12 *** Released version 0.2.15pre2
3705
3709
3706 2003-03-12 Fernando Perez <fperez@colorado.edu>
3710 2003-03-12 Fernando Perez <fperez@colorado.edu>
3707
3711
3708 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3712 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3709 long-standing problem with garbage characters in some terminals.
3713 long-standing problem with garbage characters in some terminals.
3710 The issue was really that the \001 and \002 escapes must _only_ be
3714 The issue was really that the \001 and \002 escapes must _only_ be
3711 passed to input prompts (which call readline), but _never_ to
3715 passed to input prompts (which call readline), but _never_ to
3712 normal text to be printed on screen. I changed ColorANSI to have
3716 normal text to be printed on screen. I changed ColorANSI to have
3713 two classes: TermColors and InputTermColors, each with the
3717 two classes: TermColors and InputTermColors, each with the
3714 appropriate escapes for input prompts or normal text. The code in
3718 appropriate escapes for input prompts or normal text. The code in
3715 Prompts.py got slightly more complicated, but this very old and
3719 Prompts.py got slightly more complicated, but this very old and
3716 annoying bug is finally fixed.
3720 annoying bug is finally fixed.
3717
3721
3718 All the credit for nailing down the real origin of this problem
3722 All the credit for nailing down the real origin of this problem
3719 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3723 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3720 *Many* thanks to him for spending quite a bit of effort on this.
3724 *Many* thanks to him for spending quite a bit of effort on this.
3721
3725
3722 2003-03-05 *** Released version 0.2.15pre1
3726 2003-03-05 *** Released version 0.2.15pre1
3723
3727
3724 2003-03-03 Fernando Perez <fperez@colorado.edu>
3728 2003-03-03 Fernando Perez <fperez@colorado.edu>
3725
3729
3726 * IPython/FakeModule.py: Moved the former _FakeModule to a
3730 * IPython/FakeModule.py: Moved the former _FakeModule to a
3727 separate file, because it's also needed by Magic (to fix a similar
3731 separate file, because it's also needed by Magic (to fix a similar
3728 pickle-related issue in @run).
3732 pickle-related issue in @run).
3729
3733
3730 2003-03-02 Fernando Perez <fperez@colorado.edu>
3734 2003-03-02 Fernando Perez <fperez@colorado.edu>
3731
3735
3732 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3736 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3733 the autocall option at runtime.
3737 the autocall option at runtime.
3734 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3738 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3735 across Magic.py to start separating Magic from InteractiveShell.
3739 across Magic.py to start separating Magic from InteractiveShell.
3736 (Magic._ofind): Fixed to return proper namespace for dotted
3740 (Magic._ofind): Fixed to return proper namespace for dotted
3737 names. Before, a dotted name would always return 'not currently
3741 names. Before, a dotted name would always return 'not currently
3738 defined', because it would find the 'parent'. s.x would be found,
3742 defined', because it would find the 'parent'. s.x would be found,
3739 but since 'x' isn't defined by itself, it would get confused.
3743 but since 'x' isn't defined by itself, it would get confused.
3740 (Magic.magic_run): Fixed pickling problems reported by Ralf
3744 (Magic.magic_run): Fixed pickling problems reported by Ralf
3741 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3745 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3742 that I'd used when Mike Heeter reported similar issues at the
3746 that I'd used when Mike Heeter reported similar issues at the
3743 top-level, but now for @run. It boils down to injecting the
3747 top-level, but now for @run. It boils down to injecting the
3744 namespace where code is being executed with something that looks
3748 namespace where code is being executed with something that looks
3745 enough like a module to fool pickle.dump(). Since a pickle stores
3749 enough like a module to fool pickle.dump(). Since a pickle stores
3746 a named reference to the importing module, we need this for
3750 a named reference to the importing module, we need this for
3747 pickles to save something sensible.
3751 pickles to save something sensible.
3748
3752
3749 * IPython/ipmaker.py (make_IPython): added an autocall option.
3753 * IPython/ipmaker.py (make_IPython): added an autocall option.
3750
3754
3751 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3755 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3752 the auto-eval code. Now autocalling is an option, and the code is
3756 the auto-eval code. Now autocalling is an option, and the code is
3753 also vastly safer. There is no more eval() involved at all.
3757 also vastly safer. There is no more eval() involved at all.
3754
3758
3755 2003-03-01 Fernando Perez <fperez@colorado.edu>
3759 2003-03-01 Fernando Perez <fperez@colorado.edu>
3756
3760
3757 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3761 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3758 dict with named keys instead of a tuple.
3762 dict with named keys instead of a tuple.
3759
3763
3760 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3764 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3761
3765
3762 * setup.py (make_shortcut): Fixed message about directories
3766 * setup.py (make_shortcut): Fixed message about directories
3763 created during Windows installation (the directories were ok, just
3767 created during Windows installation (the directories were ok, just
3764 the printed message was misleading). Thanks to Chris Liechti
3768 the printed message was misleading). Thanks to Chris Liechti
3765 <cliechti-AT-gmx.net> for the heads up.
3769 <cliechti-AT-gmx.net> for the heads up.
3766
3770
3767 2003-02-21 Fernando Perez <fperez@colorado.edu>
3771 2003-02-21 Fernando Perez <fperez@colorado.edu>
3768
3772
3769 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3773 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3770 of ValueError exception when checking for auto-execution. This
3774 of ValueError exception when checking for auto-execution. This
3771 one is raised by things like Numeric arrays arr.flat when the
3775 one is raised by things like Numeric arrays arr.flat when the
3772 array is non-contiguous.
3776 array is non-contiguous.
3773
3777
3774 2003-01-31 Fernando Perez <fperez@colorado.edu>
3778 2003-01-31 Fernando Perez <fperez@colorado.edu>
3775
3779
3776 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3780 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3777 not return any value at all (even though the command would get
3781 not return any value at all (even though the command would get
3778 executed).
3782 executed).
3779 (xsys): Flush stdout right after printing the command to ensure
3783 (xsys): Flush stdout right after printing the command to ensure
3780 proper ordering of commands and command output in the total
3784 proper ordering of commands and command output in the total
3781 output.
3785 output.
3782 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3786 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3783 system/getoutput as defaults. The old ones are kept for
3787 system/getoutput as defaults. The old ones are kept for
3784 compatibility reasons, so no code which uses this library needs
3788 compatibility reasons, so no code which uses this library needs
3785 changing.
3789 changing.
3786
3790
3787 2003-01-27 *** Released version 0.2.14
3791 2003-01-27 *** Released version 0.2.14
3788
3792
3789 2003-01-25 Fernando Perez <fperez@colorado.edu>
3793 2003-01-25 Fernando Perez <fperez@colorado.edu>
3790
3794
3791 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3795 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3792 functions defined in previous edit sessions could not be re-edited
3796 functions defined in previous edit sessions could not be re-edited
3793 (because the temp files were immediately removed). Now temp files
3797 (because the temp files were immediately removed). Now temp files
3794 are removed only at IPython's exit.
3798 are removed only at IPython's exit.
3795 (Magic.magic_run): Improved @run to perform shell-like expansions
3799 (Magic.magic_run): Improved @run to perform shell-like expansions
3796 on its arguments (~users and $VARS). With this, @run becomes more
3800 on its arguments (~users and $VARS). With this, @run becomes more
3797 like a normal command-line.
3801 like a normal command-line.
3798
3802
3799 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3803 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3800 bugs related to embedding and cleaned up that code. A fairly
3804 bugs related to embedding and cleaned up that code. A fairly
3801 important one was the impossibility to access the global namespace
3805 important one was the impossibility to access the global namespace
3802 through the embedded IPython (only local variables were visible).
3806 through the embedded IPython (only local variables were visible).
3803
3807
3804 2003-01-14 Fernando Perez <fperez@colorado.edu>
3808 2003-01-14 Fernando Perez <fperez@colorado.edu>
3805
3809
3806 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3810 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3807 auto-calling to be a bit more conservative. Now it doesn't get
3811 auto-calling to be a bit more conservative. Now it doesn't get
3808 triggered if any of '!=()<>' are in the rest of the input line, to
3812 triggered if any of '!=()<>' are in the rest of the input line, to
3809 allow comparing callables. Thanks to Alex for the heads up.
3813 allow comparing callables. Thanks to Alex for the heads up.
3810
3814
3811 2003-01-07 Fernando Perez <fperez@colorado.edu>
3815 2003-01-07 Fernando Perez <fperez@colorado.edu>
3812
3816
3813 * IPython/genutils.py (page): fixed estimation of the number of
3817 * IPython/genutils.py (page): fixed estimation of the number of
3814 lines in a string to be paged to simply count newlines. This
3818 lines in a string to be paged to simply count newlines. This
3815 prevents over-guessing due to embedded escape sequences. A better
3819 prevents over-guessing due to embedded escape sequences. A better
3816 long-term solution would involve stripping out the control chars
3820 long-term solution would involve stripping out the control chars
3817 for the count, but it's potentially so expensive I just don't
3821 for the count, but it's potentially so expensive I just don't
3818 think it's worth doing.
3822 think it's worth doing.
3819
3823
3820 2002-12-19 *** Released version 0.2.14pre50
3824 2002-12-19 *** Released version 0.2.14pre50
3821
3825
3822 2002-12-19 Fernando Perez <fperez@colorado.edu>
3826 2002-12-19 Fernando Perez <fperez@colorado.edu>
3823
3827
3824 * tools/release (version): Changed release scripts to inform
3828 * tools/release (version): Changed release scripts to inform
3825 Andrea and build a NEWS file with a list of recent changes.
3829 Andrea and build a NEWS file with a list of recent changes.
3826
3830
3827 * IPython/ColorANSI.py (__all__): changed terminal detection
3831 * IPython/ColorANSI.py (__all__): changed terminal detection
3828 code. Seems to work better for xterms without breaking
3832 code. Seems to work better for xterms without breaking
3829 konsole. Will need more testing to determine if WinXP and Mac OSX
3833 konsole. Will need more testing to determine if WinXP and Mac OSX
3830 also work ok.
3834 also work ok.
3831
3835
3832 2002-12-18 *** Released version 0.2.14pre49
3836 2002-12-18 *** Released version 0.2.14pre49
3833
3837
3834 2002-12-18 Fernando Perez <fperez@colorado.edu>
3838 2002-12-18 Fernando Perez <fperez@colorado.edu>
3835
3839
3836 * Docs: added new info about Mac OSX, from Andrea.
3840 * Docs: added new info about Mac OSX, from Andrea.
3837
3841
3838 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3842 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3839 allow direct plotting of python strings whose format is the same
3843 allow direct plotting of python strings whose format is the same
3840 of gnuplot data files.
3844 of gnuplot data files.
3841
3845
3842 2002-12-16 Fernando Perez <fperez@colorado.edu>
3846 2002-12-16 Fernando Perez <fperez@colorado.edu>
3843
3847
3844 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3848 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3845 value of exit question to be acknowledged.
3849 value of exit question to be acknowledged.
3846
3850
3847 2002-12-03 Fernando Perez <fperez@colorado.edu>
3851 2002-12-03 Fernando Perez <fperez@colorado.edu>
3848
3852
3849 * IPython/ipmaker.py: removed generators, which had been added
3853 * IPython/ipmaker.py: removed generators, which had been added
3850 by mistake in an earlier debugging run. This was causing trouble
3854 by mistake in an earlier debugging run. This was causing trouble
3851 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3855 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3852 for pointing this out.
3856 for pointing this out.
3853
3857
3854 2002-11-17 Fernando Perez <fperez@colorado.edu>
3858 2002-11-17 Fernando Perez <fperez@colorado.edu>
3855
3859
3856 * Manual: updated the Gnuplot section.
3860 * Manual: updated the Gnuplot section.
3857
3861
3858 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3862 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3859 a much better split of what goes in Runtime and what goes in
3863 a much better split of what goes in Runtime and what goes in
3860 Interactive.
3864 Interactive.
3861
3865
3862 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3866 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3863 being imported from iplib.
3867 being imported from iplib.
3864
3868
3865 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3869 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3866 for command-passing. Now the global Gnuplot instance is called
3870 for command-passing. Now the global Gnuplot instance is called
3867 'gp' instead of 'g', which was really a far too fragile and
3871 'gp' instead of 'g', which was really a far too fragile and
3868 common name.
3872 common name.
3869
3873
3870 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3874 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3871 bounding boxes generated by Gnuplot for square plots.
3875 bounding boxes generated by Gnuplot for square plots.
3872
3876
3873 * IPython/genutils.py (popkey): new function added. I should
3877 * IPython/genutils.py (popkey): new function added. I should
3874 suggest this on c.l.py as a dict method, it seems useful.
3878 suggest this on c.l.py as a dict method, it seems useful.
3875
3879
3876 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3880 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3877 to transparently handle PostScript generation. MUCH better than
3881 to transparently handle PostScript generation. MUCH better than
3878 the previous plot_eps/replot_eps (which I removed now). The code
3882 the previous plot_eps/replot_eps (which I removed now). The code
3879 is also fairly clean and well documented now (including
3883 is also fairly clean and well documented now (including
3880 docstrings).
3884 docstrings).
3881
3885
3882 2002-11-13 Fernando Perez <fperez@colorado.edu>
3886 2002-11-13 Fernando Perez <fperez@colorado.edu>
3883
3887
3884 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3888 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3885 (inconsistent with options).
3889 (inconsistent with options).
3886
3890
3887 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3891 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3888 manually disabled, I don't know why. Fixed it.
3892 manually disabled, I don't know why. Fixed it.
3889 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3893 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3890 eps output.
3894 eps output.
3891
3895
3892 2002-11-12 Fernando Perez <fperez@colorado.edu>
3896 2002-11-12 Fernando Perez <fperez@colorado.edu>
3893
3897
3894 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3898 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3895 don't propagate up to caller. Fixes crash reported by François
3899 don't propagate up to caller. Fixes crash reported by François
3896 Pinard.
3900 Pinard.
3897
3901
3898 2002-11-09 Fernando Perez <fperez@colorado.edu>
3902 2002-11-09 Fernando Perez <fperez@colorado.edu>
3899
3903
3900 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3904 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3901 history file for new users.
3905 history file for new users.
3902 (make_IPython): fixed bug where initial install would leave the
3906 (make_IPython): fixed bug where initial install would leave the
3903 user running in the .ipython dir.
3907 user running in the .ipython dir.
3904 (make_IPython): fixed bug where config dir .ipython would be
3908 (make_IPython): fixed bug where config dir .ipython would be
3905 created regardless of the given -ipythondir option. Thanks to Cory
3909 created regardless of the given -ipythondir option. Thanks to Cory
3906 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3910 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3907
3911
3908 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3912 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3909 type confirmations. Will need to use it in all of IPython's code
3913 type confirmations. Will need to use it in all of IPython's code
3910 consistently.
3914 consistently.
3911
3915
3912 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3916 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3913 context to print 31 lines instead of the default 5. This will make
3917 context to print 31 lines instead of the default 5. This will make
3914 the crash reports extremely detailed in case the problem is in
3918 the crash reports extremely detailed in case the problem is in
3915 libraries I don't have access to.
3919 libraries I don't have access to.
3916
3920
3917 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3921 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3918 line of defense' code to still crash, but giving users fair
3922 line of defense' code to still crash, but giving users fair
3919 warning. I don't want internal errors to go unreported: if there's
3923 warning. I don't want internal errors to go unreported: if there's
3920 an internal problem, IPython should crash and generate a full
3924 an internal problem, IPython should crash and generate a full
3921 report.
3925 report.
3922
3926
3923 2002-11-08 Fernando Perez <fperez@colorado.edu>
3927 2002-11-08 Fernando Perez <fperez@colorado.edu>
3924
3928
3925 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3929 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3926 otherwise uncaught exceptions which can appear if people set
3930 otherwise uncaught exceptions which can appear if people set
3927 sys.stdout to something badly broken. Thanks to a crash report
3931 sys.stdout to something badly broken. Thanks to a crash report
3928 from henni-AT-mail.brainbot.com.
3932 from henni-AT-mail.brainbot.com.
3929
3933
3930 2002-11-04 Fernando Perez <fperez@colorado.edu>
3934 2002-11-04 Fernando Perez <fperez@colorado.edu>
3931
3935
3932 * IPython/iplib.py (InteractiveShell.interact): added
3936 * IPython/iplib.py (InteractiveShell.interact): added
3933 __IPYTHON__active to the builtins. It's a flag which goes on when
3937 __IPYTHON__active to the builtins. It's a flag which goes on when
3934 the interaction starts and goes off again when it stops. This
3938 the interaction starts and goes off again when it stops. This
3935 allows embedding code to detect being inside IPython. Before this
3939 allows embedding code to detect being inside IPython. Before this
3936 was done via __IPYTHON__, but that only shows that an IPython
3940 was done via __IPYTHON__, but that only shows that an IPython
3937 instance has been created.
3941 instance has been created.
3938
3942
3939 * IPython/Magic.py (Magic.magic_env): I realized that in a
3943 * IPython/Magic.py (Magic.magic_env): I realized that in a
3940 UserDict, instance.data holds the data as a normal dict. So I
3944 UserDict, instance.data holds the data as a normal dict. So I
3941 modified @env to return os.environ.data instead of rebuilding a
3945 modified @env to return os.environ.data instead of rebuilding a
3942 dict by hand.
3946 dict by hand.
3943
3947
3944 2002-11-02 Fernando Perez <fperez@colorado.edu>
3948 2002-11-02 Fernando Perez <fperez@colorado.edu>
3945
3949
3946 * IPython/genutils.py (warn): changed so that level 1 prints no
3950 * IPython/genutils.py (warn): changed so that level 1 prints no
3947 header. Level 2 is now the default (with 'WARNING' header, as
3951 header. Level 2 is now the default (with 'WARNING' header, as
3948 before). I think I tracked all places where changes were needed in
3952 before). I think I tracked all places where changes were needed in
3949 IPython, but outside code using the old level numbering may have
3953 IPython, but outside code using the old level numbering may have
3950 broken.
3954 broken.
3951
3955
3952 * IPython/iplib.py (InteractiveShell.runcode): added this to
3956 * IPython/iplib.py (InteractiveShell.runcode): added this to
3953 handle the tracebacks in SystemExit traps correctly. The previous
3957 handle the tracebacks in SystemExit traps correctly. The previous
3954 code (through interact) was printing more of the stack than
3958 code (through interact) was printing more of the stack than
3955 necessary, showing IPython internal code to the user.
3959 necessary, showing IPython internal code to the user.
3956
3960
3957 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3961 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3958 default. Now that the default at the confirmation prompt is yes,
3962 default. Now that the default at the confirmation prompt is yes,
3959 it's not so intrusive. François' argument that ipython sessions
3963 it's not so intrusive. François' argument that ipython sessions
3960 tend to be complex enough not to lose them from an accidental C-d,
3964 tend to be complex enough not to lose them from an accidental C-d,
3961 is a valid one.
3965 is a valid one.
3962
3966
3963 * IPython/iplib.py (InteractiveShell.interact): added a
3967 * IPython/iplib.py (InteractiveShell.interact): added a
3964 showtraceback() call to the SystemExit trap, and modified the exit
3968 showtraceback() call to the SystemExit trap, and modified the exit
3965 confirmation to have yes as the default.
3969 confirmation to have yes as the default.
3966
3970
3967 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3971 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3968 this file. It's been gone from the code for a long time, this was
3972 this file. It's been gone from the code for a long time, this was
3969 simply leftover junk.
3973 simply leftover junk.
3970
3974
3971 2002-11-01 Fernando Perez <fperez@colorado.edu>
3975 2002-11-01 Fernando Perez <fperez@colorado.edu>
3972
3976
3973 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3977 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3974 added. If set, IPython now traps EOF and asks for
3978 added. If set, IPython now traps EOF and asks for
3975 confirmation. After a request by François Pinard.
3979 confirmation. After a request by François Pinard.
3976
3980
3977 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3981 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3978 of @abort, and with a new (better) mechanism for handling the
3982 of @abort, and with a new (better) mechanism for handling the
3979 exceptions.
3983 exceptions.
3980
3984
3981 2002-10-27 Fernando Perez <fperez@colorado.edu>
3985 2002-10-27 Fernando Perez <fperez@colorado.edu>
3982
3986
3983 * IPython/usage.py (__doc__): updated the --help information and
3987 * IPython/usage.py (__doc__): updated the --help information and
3984 the ipythonrc file to indicate that -log generates
3988 the ipythonrc file to indicate that -log generates
3985 ./ipython.log. Also fixed the corresponding info in @logstart.
3989 ./ipython.log. Also fixed the corresponding info in @logstart.
3986 This and several other fixes in the manuals thanks to reports by
3990 This and several other fixes in the manuals thanks to reports by
3987 François Pinard <pinard-AT-iro.umontreal.ca>.
3991 François Pinard <pinard-AT-iro.umontreal.ca>.
3988
3992
3989 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3993 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3990 refer to @logstart (instead of @log, which doesn't exist).
3994 refer to @logstart (instead of @log, which doesn't exist).
3991
3995
3992 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3996 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3993 AttributeError crash. Thanks to Christopher Armstrong
3997 AttributeError crash. Thanks to Christopher Armstrong
3994 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3998 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3995 introduced recently (in 0.2.14pre37) with the fix to the eval
3999 introduced recently (in 0.2.14pre37) with the fix to the eval
3996 problem mentioned below.
4000 problem mentioned below.
3997
4001
3998 2002-10-17 Fernando Perez <fperez@colorado.edu>
4002 2002-10-17 Fernando Perez <fperez@colorado.edu>
3999
4003
4000 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4004 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4001 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4005 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4002
4006
4003 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4007 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4004 this function to fix a problem reported by Alex Schmolck. He saw
4008 this function to fix a problem reported by Alex Schmolck. He saw
4005 it with list comprehensions and generators, which were getting
4009 it with list comprehensions and generators, which were getting
4006 called twice. The real problem was an 'eval' call in testing for
4010 called twice. The real problem was an 'eval' call in testing for
4007 automagic which was evaluating the input line silently.
4011 automagic which was evaluating the input line silently.
4008
4012
4009 This is a potentially very nasty bug, if the input has side
4013 This is a potentially very nasty bug, if the input has side
4010 effects which must not be repeated. The code is much cleaner now,
4014 effects which must not be repeated. The code is much cleaner now,
4011 without any blanket 'except' left and with a regexp test for
4015 without any blanket 'except' left and with a regexp test for
4012 actual function names.
4016 actual function names.
4013
4017
4014 But an eval remains, which I'm not fully comfortable with. I just
4018 But an eval remains, which I'm not fully comfortable with. I just
4015 don't know how to find out if an expression could be a callable in
4019 don't know how to find out if an expression could be a callable in
4016 the user's namespace without doing an eval on the string. However
4020 the user's namespace without doing an eval on the string. However
4017 that string is now much more strictly checked so that no code
4021 that string is now much more strictly checked so that no code
4018 slips by, so the eval should only happen for things that can
4022 slips by, so the eval should only happen for things that can
4019 really be only function/method names.
4023 really be only function/method names.
4020
4024
4021 2002-10-15 Fernando Perez <fperez@colorado.edu>
4025 2002-10-15 Fernando Perez <fperez@colorado.edu>
4022
4026
4023 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4027 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4024 OSX information to main manual, removed README_Mac_OSX file from
4028 OSX information to main manual, removed README_Mac_OSX file from
4025 distribution. Also updated credits for recent additions.
4029 distribution. Also updated credits for recent additions.
4026
4030
4027 2002-10-10 Fernando Perez <fperez@colorado.edu>
4031 2002-10-10 Fernando Perez <fperez@colorado.edu>
4028
4032
4029 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4033 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4030 terminal-related issues. Many thanks to Andrea Riciputi
4034 terminal-related issues. Many thanks to Andrea Riciputi
4031 <andrea.riciputi-AT-libero.it> for writing it.
4035 <andrea.riciputi-AT-libero.it> for writing it.
4032
4036
4033 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4037 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4034 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4038 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4035
4039
4036 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4040 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4037 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4041 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4038 <syver-en-AT-online.no> who both submitted patches for this problem.
4042 <syver-en-AT-online.no> who both submitted patches for this problem.
4039
4043
4040 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4044 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4041 global embedding to make sure that things don't overwrite user
4045 global embedding to make sure that things don't overwrite user
4042 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4046 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4043
4047
4044 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4048 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4045 compatibility. Thanks to Hayden Callow
4049 compatibility. Thanks to Hayden Callow
4046 <h.callow-AT-elec.canterbury.ac.nz>
4050 <h.callow-AT-elec.canterbury.ac.nz>
4047
4051
4048 2002-10-04 Fernando Perez <fperez@colorado.edu>
4052 2002-10-04 Fernando Perez <fperez@colorado.edu>
4049
4053
4050 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4054 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4051 Gnuplot.File objects.
4055 Gnuplot.File objects.
4052
4056
4053 2002-07-23 Fernando Perez <fperez@colorado.edu>
4057 2002-07-23 Fernando Perez <fperez@colorado.edu>
4054
4058
4055 * IPython/genutils.py (timing): Added timings() and timing() for
4059 * IPython/genutils.py (timing): Added timings() and timing() for
4056 quick access to the most commonly needed data, the execution
4060 quick access to the most commonly needed data, the execution
4057 times. Old timing() renamed to timings_out().
4061 times. Old timing() renamed to timings_out().
4058
4062
4059 2002-07-18 Fernando Perez <fperez@colorado.edu>
4063 2002-07-18 Fernando Perez <fperez@colorado.edu>
4060
4064
4061 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4065 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4062 bug with nested instances disrupting the parent's tab completion.
4066 bug with nested instances disrupting the parent's tab completion.
4063
4067
4064 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4068 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4065 all_completions code to begin the emacs integration.
4069 all_completions code to begin the emacs integration.
4066
4070
4067 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4071 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4068 argument to allow titling individual arrays when plotting.
4072 argument to allow titling individual arrays when plotting.
4069
4073
4070 2002-07-15 Fernando Perez <fperez@colorado.edu>
4074 2002-07-15 Fernando Perez <fperez@colorado.edu>
4071
4075
4072 * setup.py (make_shortcut): changed to retrieve the value of
4076 * setup.py (make_shortcut): changed to retrieve the value of
4073 'Program Files' directory from the registry (this value changes in
4077 'Program Files' directory from the registry (this value changes in
4074 non-english versions of Windows). Thanks to Thomas Fanslau
4078 non-english versions of Windows). Thanks to Thomas Fanslau
4075 <tfanslau-AT-gmx.de> for the report.
4079 <tfanslau-AT-gmx.de> for the report.
4076
4080
4077 2002-07-10 Fernando Perez <fperez@colorado.edu>
4081 2002-07-10 Fernando Perez <fperez@colorado.edu>
4078
4082
4079 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4083 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4080 a bug in pdb, which crashes if a line with only whitespace is
4084 a bug in pdb, which crashes if a line with only whitespace is
4081 entered. Bug report submitted to sourceforge.
4085 entered. Bug report submitted to sourceforge.
4082
4086
4083 2002-07-09 Fernando Perez <fperez@colorado.edu>
4087 2002-07-09 Fernando Perez <fperez@colorado.edu>
4084
4088
4085 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4089 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4086 reporting exceptions (it's a bug in inspect.py, I just set a
4090 reporting exceptions (it's a bug in inspect.py, I just set a
4087 workaround).
4091 workaround).
4088
4092
4089 2002-07-08 Fernando Perez <fperez@colorado.edu>
4093 2002-07-08 Fernando Perez <fperez@colorado.edu>
4090
4094
4091 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4095 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4092 __IPYTHON__ in __builtins__ to show up in user_ns.
4096 __IPYTHON__ in __builtins__ to show up in user_ns.
4093
4097
4094 2002-07-03 Fernando Perez <fperez@colorado.edu>
4098 2002-07-03 Fernando Perez <fperez@colorado.edu>
4095
4099
4096 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4100 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4097 name from @gp_set_instance to @gp_set_default.
4101 name from @gp_set_instance to @gp_set_default.
4098
4102
4099 * IPython/ipmaker.py (make_IPython): default editor value set to
4103 * IPython/ipmaker.py (make_IPython): default editor value set to
4100 '0' (a string), to match the rc file. Otherwise will crash when
4104 '0' (a string), to match the rc file. Otherwise will crash when
4101 .strip() is called on it.
4105 .strip() is called on it.
4102
4106
4103
4107
4104 2002-06-28 Fernando Perez <fperez@colorado.edu>
4108 2002-06-28 Fernando Perez <fperez@colorado.edu>
4105
4109
4106 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4110 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4107 of files in current directory when a file is executed via
4111 of files in current directory when a file is executed via
4108 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4112 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4109
4113
4110 * setup.py (manfiles): fix for rpm builds, submitted by RA
4114 * setup.py (manfiles): fix for rpm builds, submitted by RA
4111 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4115 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4112
4116
4113 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4117 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4114 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4118 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4115 string!). A. Schmolck caught this one.
4119 string!). A. Schmolck caught this one.
4116
4120
4117 2002-06-27 Fernando Perez <fperez@colorado.edu>
4121 2002-06-27 Fernando Perez <fperez@colorado.edu>
4118
4122
4119 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4123 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4120 defined files at the cmd line. __name__ wasn't being set to
4124 defined files at the cmd line. __name__ wasn't being set to
4121 __main__.
4125 __main__.
4122
4126
4123 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4127 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4124 regular lists and tuples besides Numeric arrays.
4128 regular lists and tuples besides Numeric arrays.
4125
4129
4126 * IPython/Prompts.py (CachedOutput.__call__): Added output
4130 * IPython/Prompts.py (CachedOutput.__call__): Added output
4127 supression for input ending with ';'. Similar to Mathematica and
4131 supression for input ending with ';'. Similar to Mathematica and
4128 Matlab. The _* vars and Out[] list are still updated, just like
4132 Matlab. The _* vars and Out[] list are still updated, just like
4129 Mathematica behaves.
4133 Mathematica behaves.
4130
4134
4131 2002-06-25 Fernando Perez <fperez@colorado.edu>
4135 2002-06-25 Fernando Perez <fperez@colorado.edu>
4132
4136
4133 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4137 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4134 .ini extensions for profiels under Windows.
4138 .ini extensions for profiels under Windows.
4135
4139
4136 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4140 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4137 string form. Fix contributed by Alexander Schmolck
4141 string form. Fix contributed by Alexander Schmolck
4138 <a.schmolck-AT-gmx.net>
4142 <a.schmolck-AT-gmx.net>
4139
4143
4140 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4144 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4141 pre-configured Gnuplot instance.
4145 pre-configured Gnuplot instance.
4142
4146
4143 2002-06-21 Fernando Perez <fperez@colorado.edu>
4147 2002-06-21 Fernando Perez <fperez@colorado.edu>
4144
4148
4145 * IPython/numutils.py (exp_safe): new function, works around the
4149 * IPython/numutils.py (exp_safe): new function, works around the
4146 underflow problems in Numeric.
4150 underflow problems in Numeric.
4147 (log2): New fn. Safe log in base 2: returns exact integer answer
4151 (log2): New fn. Safe log in base 2: returns exact integer answer
4148 for exact integer powers of 2.
4152 for exact integer powers of 2.
4149
4153
4150 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4154 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4151 properly.
4155 properly.
4152
4156
4153 2002-06-20 Fernando Perez <fperez@colorado.edu>
4157 2002-06-20 Fernando Perez <fperez@colorado.edu>
4154
4158
4155 * IPython/genutils.py (timing): new function like
4159 * IPython/genutils.py (timing): new function like
4156 Mathematica's. Similar to time_test, but returns more info.
4160 Mathematica's. Similar to time_test, but returns more info.
4157
4161
4158 2002-06-18 Fernando Perez <fperez@colorado.edu>
4162 2002-06-18 Fernando Perez <fperez@colorado.edu>
4159
4163
4160 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4164 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4161 according to Mike Heeter's suggestions.
4165 according to Mike Heeter's suggestions.
4162
4166
4163 2002-06-16 Fernando Perez <fperez@colorado.edu>
4167 2002-06-16 Fernando Perez <fperez@colorado.edu>
4164
4168
4165 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4169 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4166 system. GnuplotMagic is gone as a user-directory option. New files
4170 system. GnuplotMagic is gone as a user-directory option. New files
4167 make it easier to use all the gnuplot stuff both from external
4171 make it easier to use all the gnuplot stuff both from external
4168 programs as well as from IPython. Had to rewrite part of
4172 programs as well as from IPython. Had to rewrite part of
4169 hardcopy() b/c of a strange bug: often the ps files simply don't
4173 hardcopy() b/c of a strange bug: often the ps files simply don't
4170 get created, and require a repeat of the command (often several
4174 get created, and require a repeat of the command (often several
4171 times).
4175 times).
4172
4176
4173 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4177 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4174 resolve output channel at call time, so that if sys.stderr has
4178 resolve output channel at call time, so that if sys.stderr has
4175 been redirected by user this gets honored.
4179 been redirected by user this gets honored.
4176
4180
4177 2002-06-13 Fernando Perez <fperez@colorado.edu>
4181 2002-06-13 Fernando Perez <fperez@colorado.edu>
4178
4182
4179 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4183 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4180 IPShell. Kept a copy with the old names to avoid breaking people's
4184 IPShell. Kept a copy with the old names to avoid breaking people's
4181 embedded code.
4185 embedded code.
4182
4186
4183 * IPython/ipython: simplified it to the bare minimum after
4187 * IPython/ipython: simplified it to the bare minimum after
4184 Holger's suggestions. Added info about how to use it in
4188 Holger's suggestions. Added info about how to use it in
4185 PYTHONSTARTUP.
4189 PYTHONSTARTUP.
4186
4190
4187 * IPython/Shell.py (IPythonShell): changed the options passing
4191 * IPython/Shell.py (IPythonShell): changed the options passing
4188 from a string with funky %s replacements to a straight list. Maybe
4192 from a string with funky %s replacements to a straight list. Maybe
4189 a bit more typing, but it follows sys.argv conventions, so there's
4193 a bit more typing, but it follows sys.argv conventions, so there's
4190 less special-casing to remember.
4194 less special-casing to remember.
4191
4195
4192 2002-06-12 Fernando Perez <fperez@colorado.edu>
4196 2002-06-12 Fernando Perez <fperez@colorado.edu>
4193
4197
4194 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4198 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4195 command. Thanks to a suggestion by Mike Heeter.
4199 command. Thanks to a suggestion by Mike Heeter.
4196 (Magic.magic_pfile): added behavior to look at filenames if given
4200 (Magic.magic_pfile): added behavior to look at filenames if given
4197 arg is not a defined object.
4201 arg is not a defined object.
4198 (Magic.magic_save): New @save function to save code snippets. Also
4202 (Magic.magic_save): New @save function to save code snippets. Also
4199 a Mike Heeter idea.
4203 a Mike Heeter idea.
4200
4204
4201 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4205 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4202 plot() and replot(). Much more convenient now, especially for
4206 plot() and replot(). Much more convenient now, especially for
4203 interactive use.
4207 interactive use.
4204
4208
4205 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4209 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4206 filenames.
4210 filenames.
4207
4211
4208 2002-06-02 Fernando Perez <fperez@colorado.edu>
4212 2002-06-02 Fernando Perez <fperez@colorado.edu>
4209
4213
4210 * IPython/Struct.py (Struct.__init__): modified to admit
4214 * IPython/Struct.py (Struct.__init__): modified to admit
4211 initialization via another struct.
4215 initialization via another struct.
4212
4216
4213 * IPython/genutils.py (SystemExec.__init__): New stateful
4217 * IPython/genutils.py (SystemExec.__init__): New stateful
4214 interface to xsys and bq. Useful for writing system scripts.
4218 interface to xsys and bq. Useful for writing system scripts.
4215
4219
4216 2002-05-30 Fernando Perez <fperez@colorado.edu>
4220 2002-05-30 Fernando Perez <fperez@colorado.edu>
4217
4221
4218 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4222 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4219 documents. This will make the user download smaller (it's getting
4223 documents. This will make the user download smaller (it's getting
4220 too big).
4224 too big).
4221
4225
4222 2002-05-29 Fernando Perez <fperez@colorado.edu>
4226 2002-05-29 Fernando Perez <fperez@colorado.edu>
4223
4227
4224 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4228 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4225 fix problems with shelve and pickle. Seems to work, but I don't
4229 fix problems with shelve and pickle. Seems to work, but I don't
4226 know if corner cases break it. Thanks to Mike Heeter
4230 know if corner cases break it. Thanks to Mike Heeter
4227 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4231 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4228
4232
4229 2002-05-24 Fernando Perez <fperez@colorado.edu>
4233 2002-05-24 Fernando Perez <fperez@colorado.edu>
4230
4234
4231 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4235 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4232 macros having broken.
4236 macros having broken.
4233
4237
4234 2002-05-21 Fernando Perez <fperez@colorado.edu>
4238 2002-05-21 Fernando Perez <fperez@colorado.edu>
4235
4239
4236 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4240 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4237 introduced logging bug: all history before logging started was
4241 introduced logging bug: all history before logging started was
4238 being written one character per line! This came from the redesign
4242 being written one character per line! This came from the redesign
4239 of the input history as a special list which slices to strings,
4243 of the input history as a special list which slices to strings,
4240 not to lists.
4244 not to lists.
4241
4245
4242 2002-05-20 Fernando Perez <fperez@colorado.edu>
4246 2002-05-20 Fernando Perez <fperez@colorado.edu>
4243
4247
4244 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4248 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4245 be an attribute of all classes in this module. The design of these
4249 be an attribute of all classes in this module. The design of these
4246 classes needs some serious overhauling.
4250 classes needs some serious overhauling.
4247
4251
4248 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4252 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4249 which was ignoring '_' in option names.
4253 which was ignoring '_' in option names.
4250
4254
4251 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4255 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4252 'Verbose_novars' to 'Context' and made it the new default. It's a
4256 'Verbose_novars' to 'Context' and made it the new default. It's a
4253 bit more readable and also safer than verbose.
4257 bit more readable and also safer than verbose.
4254
4258
4255 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4259 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4256 triple-quoted strings.
4260 triple-quoted strings.
4257
4261
4258 * IPython/OInspect.py (__all__): new module exposing the object
4262 * IPython/OInspect.py (__all__): new module exposing the object
4259 introspection facilities. Now the corresponding magics are dummy
4263 introspection facilities. Now the corresponding magics are dummy
4260 wrappers around this. Having this module will make it much easier
4264 wrappers around this. Having this module will make it much easier
4261 to put these functions into our modified pdb.
4265 to put these functions into our modified pdb.
4262 This new object inspector system uses the new colorizing module,
4266 This new object inspector system uses the new colorizing module,
4263 so source code and other things are nicely syntax highlighted.
4267 so source code and other things are nicely syntax highlighted.
4264
4268
4265 2002-05-18 Fernando Perez <fperez@colorado.edu>
4269 2002-05-18 Fernando Perez <fperez@colorado.edu>
4266
4270
4267 * IPython/ColorANSI.py: Split the coloring tools into a separate
4271 * IPython/ColorANSI.py: Split the coloring tools into a separate
4268 module so I can use them in other code easier (they were part of
4272 module so I can use them in other code easier (they were part of
4269 ultraTB).
4273 ultraTB).
4270
4274
4271 2002-05-17 Fernando Perez <fperez@colorado.edu>
4275 2002-05-17 Fernando Perez <fperez@colorado.edu>
4272
4276
4273 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4277 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4274 fixed it to set the global 'g' also to the called instance, as
4278 fixed it to set the global 'g' also to the called instance, as
4275 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4279 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4276 user's 'g' variables).
4280 user's 'g' variables).
4277
4281
4278 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4282 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4279 global variables (aliases to _ih,_oh) so that users which expect
4283 global variables (aliases to _ih,_oh) so that users which expect
4280 In[5] or Out[7] to work aren't unpleasantly surprised.
4284 In[5] or Out[7] to work aren't unpleasantly surprised.
4281 (InputList.__getslice__): new class to allow executing slices of
4285 (InputList.__getslice__): new class to allow executing slices of
4282 input history directly. Very simple class, complements the use of
4286 input history directly. Very simple class, complements the use of
4283 macros.
4287 macros.
4284
4288
4285 2002-05-16 Fernando Perez <fperez@colorado.edu>
4289 2002-05-16 Fernando Perez <fperez@colorado.edu>
4286
4290
4287 * setup.py (docdirbase): make doc directory be just doc/IPython
4291 * setup.py (docdirbase): make doc directory be just doc/IPython
4288 without version numbers, it will reduce clutter for users.
4292 without version numbers, it will reduce clutter for users.
4289
4293
4290 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4294 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4291 execfile call to prevent possible memory leak. See for details:
4295 execfile call to prevent possible memory leak. See for details:
4292 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4296 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4293
4297
4294 2002-05-15 Fernando Perez <fperez@colorado.edu>
4298 2002-05-15 Fernando Perez <fperez@colorado.edu>
4295
4299
4296 * IPython/Magic.py (Magic.magic_psource): made the object
4300 * IPython/Magic.py (Magic.magic_psource): made the object
4297 introspection names be more standard: pdoc, pdef, pfile and
4301 introspection names be more standard: pdoc, pdef, pfile and
4298 psource. They all print/page their output, and it makes
4302 psource. They all print/page their output, and it makes
4299 remembering them easier. Kept old names for compatibility as
4303 remembering them easier. Kept old names for compatibility as
4300 aliases.
4304 aliases.
4301
4305
4302 2002-05-14 Fernando Perez <fperez@colorado.edu>
4306 2002-05-14 Fernando Perez <fperez@colorado.edu>
4303
4307
4304 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4308 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4305 what the mouse problem was. The trick is to use gnuplot with temp
4309 what the mouse problem was. The trick is to use gnuplot with temp
4306 files and NOT with pipes (for data communication), because having
4310 files and NOT with pipes (for data communication), because having
4307 both pipes and the mouse on is bad news.
4311 both pipes and the mouse on is bad news.
4308
4312
4309 2002-05-13 Fernando Perez <fperez@colorado.edu>
4313 2002-05-13 Fernando Perez <fperez@colorado.edu>
4310
4314
4311 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4315 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4312 bug. Information would be reported about builtins even when
4316 bug. Information would be reported about builtins even when
4313 user-defined functions overrode them.
4317 user-defined functions overrode them.
4314
4318
4315 2002-05-11 Fernando Perez <fperez@colorado.edu>
4319 2002-05-11 Fernando Perez <fperez@colorado.edu>
4316
4320
4317 * IPython/__init__.py (__all__): removed FlexCompleter from
4321 * IPython/__init__.py (__all__): removed FlexCompleter from
4318 __all__ so that things don't fail in platforms without readline.
4322 __all__ so that things don't fail in platforms without readline.
4319
4323
4320 2002-05-10 Fernando Perez <fperez@colorado.edu>
4324 2002-05-10 Fernando Perez <fperez@colorado.edu>
4321
4325
4322 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4326 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4323 it requires Numeric, effectively making Numeric a dependency for
4327 it requires Numeric, effectively making Numeric a dependency for
4324 IPython.
4328 IPython.
4325
4329
4326 * Released 0.2.13
4330 * Released 0.2.13
4327
4331
4328 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4332 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4329 profiler interface. Now all the major options from the profiler
4333 profiler interface. Now all the major options from the profiler
4330 module are directly supported in IPython, both for single
4334 module are directly supported in IPython, both for single
4331 expressions (@prun) and for full programs (@run -p).
4335 expressions (@prun) and for full programs (@run -p).
4332
4336
4333 2002-05-09 Fernando Perez <fperez@colorado.edu>
4337 2002-05-09 Fernando Perez <fperez@colorado.edu>
4334
4338
4335 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4339 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4336 magic properly formatted for screen.
4340 magic properly formatted for screen.
4337
4341
4338 * setup.py (make_shortcut): Changed things to put pdf version in
4342 * setup.py (make_shortcut): Changed things to put pdf version in
4339 doc/ instead of doc/manual (had to change lyxport a bit).
4343 doc/ instead of doc/manual (had to change lyxport a bit).
4340
4344
4341 * IPython/Magic.py (Profile.string_stats): made profile runs go
4345 * IPython/Magic.py (Profile.string_stats): made profile runs go
4342 through pager (they are long and a pager allows searching, saving,
4346 through pager (they are long and a pager allows searching, saving,
4343 etc.)
4347 etc.)
4344
4348
4345 2002-05-08 Fernando Perez <fperez@colorado.edu>
4349 2002-05-08 Fernando Perez <fperez@colorado.edu>
4346
4350
4347 * Released 0.2.12
4351 * Released 0.2.12
4348
4352
4349 2002-05-06 Fernando Perez <fperez@colorado.edu>
4353 2002-05-06 Fernando Perez <fperez@colorado.edu>
4350
4354
4351 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4355 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4352 introduced); 'hist n1 n2' was broken.
4356 introduced); 'hist n1 n2' was broken.
4353 (Magic.magic_pdb): added optional on/off arguments to @pdb
4357 (Magic.magic_pdb): added optional on/off arguments to @pdb
4354 (Magic.magic_run): added option -i to @run, which executes code in
4358 (Magic.magic_run): added option -i to @run, which executes code in
4355 the IPython namespace instead of a clean one. Also added @irun as
4359 the IPython namespace instead of a clean one. Also added @irun as
4356 an alias to @run -i.
4360 an alias to @run -i.
4357
4361
4358 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4362 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4359 fixed (it didn't really do anything, the namespaces were wrong).
4363 fixed (it didn't really do anything, the namespaces were wrong).
4360
4364
4361 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4365 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4362
4366
4363 * IPython/__init__.py (__all__): Fixed package namespace, now
4367 * IPython/__init__.py (__all__): Fixed package namespace, now
4364 'import IPython' does give access to IPython.<all> as
4368 'import IPython' does give access to IPython.<all> as
4365 expected. Also renamed __release__ to Release.
4369 expected. Also renamed __release__ to Release.
4366
4370
4367 * IPython/Debugger.py (__license__): created new Pdb class which
4371 * IPython/Debugger.py (__license__): created new Pdb class which
4368 functions like a drop-in for the normal pdb.Pdb but does NOT
4372 functions like a drop-in for the normal pdb.Pdb but does NOT
4369 import readline by default. This way it doesn't muck up IPython's
4373 import readline by default. This way it doesn't muck up IPython's
4370 readline handling, and now tab-completion finally works in the
4374 readline handling, and now tab-completion finally works in the
4371 debugger -- sort of. It completes things globally visible, but the
4375 debugger -- sort of. It completes things globally visible, but the
4372 completer doesn't track the stack as pdb walks it. That's a bit
4376 completer doesn't track the stack as pdb walks it. That's a bit
4373 tricky, and I'll have to implement it later.
4377 tricky, and I'll have to implement it later.
4374
4378
4375 2002-05-05 Fernando Perez <fperez@colorado.edu>
4379 2002-05-05 Fernando Perez <fperez@colorado.edu>
4376
4380
4377 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4381 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4378 magic docstrings when printed via ? (explicit \'s were being
4382 magic docstrings when printed via ? (explicit \'s were being
4379 printed).
4383 printed).
4380
4384
4381 * IPython/ipmaker.py (make_IPython): fixed namespace
4385 * IPython/ipmaker.py (make_IPython): fixed namespace
4382 identification bug. Now variables loaded via logs or command-line
4386 identification bug. Now variables loaded via logs or command-line
4383 files are recognized in the interactive namespace by @who.
4387 files are recognized in the interactive namespace by @who.
4384
4388
4385 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4389 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4386 log replay system stemming from the string form of Structs.
4390 log replay system stemming from the string form of Structs.
4387
4391
4388 * IPython/Magic.py (Macro.__init__): improved macros to properly
4392 * IPython/Magic.py (Macro.__init__): improved macros to properly
4389 handle magic commands in them.
4393 handle magic commands in them.
4390 (Magic.magic_logstart): usernames are now expanded so 'logstart
4394 (Magic.magic_logstart): usernames are now expanded so 'logstart
4391 ~/mylog' now works.
4395 ~/mylog' now works.
4392
4396
4393 * IPython/iplib.py (complete): fixed bug where paths starting with
4397 * IPython/iplib.py (complete): fixed bug where paths starting with
4394 '/' would be completed as magic names.
4398 '/' would be completed as magic names.
4395
4399
4396 2002-05-04 Fernando Perez <fperez@colorado.edu>
4400 2002-05-04 Fernando Perez <fperez@colorado.edu>
4397
4401
4398 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4402 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4399 allow running full programs under the profiler's control.
4403 allow running full programs under the profiler's control.
4400
4404
4401 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4405 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4402 mode to report exceptions verbosely but without formatting
4406 mode to report exceptions verbosely but without formatting
4403 variables. This addresses the issue of ipython 'freezing' (it's
4407 variables. This addresses the issue of ipython 'freezing' (it's
4404 not frozen, but caught in an expensive formatting loop) when huge
4408 not frozen, but caught in an expensive formatting loop) when huge
4405 variables are in the context of an exception.
4409 variables are in the context of an exception.
4406 (VerboseTB.text): Added '--->' markers at line where exception was
4410 (VerboseTB.text): Added '--->' markers at line where exception was
4407 triggered. Much clearer to read, especially in NoColor modes.
4411 triggered. Much clearer to read, especially in NoColor modes.
4408
4412
4409 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4413 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4410 implemented in reverse when changing to the new parse_options().
4414 implemented in reverse when changing to the new parse_options().
4411
4415
4412 2002-05-03 Fernando Perez <fperez@colorado.edu>
4416 2002-05-03 Fernando Perez <fperez@colorado.edu>
4413
4417
4414 * IPython/Magic.py (Magic.parse_options): new function so that
4418 * IPython/Magic.py (Magic.parse_options): new function so that
4415 magics can parse options easier.
4419 magics can parse options easier.
4416 (Magic.magic_prun): new function similar to profile.run(),
4420 (Magic.magic_prun): new function similar to profile.run(),
4417 suggested by Chris Hart.
4421 suggested by Chris Hart.
4418 (Magic.magic_cd): fixed behavior so that it only changes if
4422 (Magic.magic_cd): fixed behavior so that it only changes if
4419 directory actually is in history.
4423 directory actually is in history.
4420
4424
4421 * IPython/usage.py (__doc__): added information about potential
4425 * IPython/usage.py (__doc__): added information about potential
4422 slowness of Verbose exception mode when there are huge data
4426 slowness of Verbose exception mode when there are huge data
4423 structures to be formatted (thanks to Archie Paulson).
4427 structures to be formatted (thanks to Archie Paulson).
4424
4428
4425 * IPython/ipmaker.py (make_IPython): Changed default logging
4429 * IPython/ipmaker.py (make_IPython): Changed default logging
4426 (when simply called with -log) to use curr_dir/ipython.log in
4430 (when simply called with -log) to use curr_dir/ipython.log in
4427 rotate mode. Fixed crash which was occuring with -log before
4431 rotate mode. Fixed crash which was occuring with -log before
4428 (thanks to Jim Boyle).
4432 (thanks to Jim Boyle).
4429
4433
4430 2002-05-01 Fernando Perez <fperez@colorado.edu>
4434 2002-05-01 Fernando Perez <fperez@colorado.edu>
4431
4435
4432 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4436 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4433 was nasty -- though somewhat of a corner case).
4437 was nasty -- though somewhat of a corner case).
4434
4438
4435 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4439 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4436 text (was a bug).
4440 text (was a bug).
4437
4441
4438 2002-04-30 Fernando Perez <fperez@colorado.edu>
4442 2002-04-30 Fernando Perez <fperez@colorado.edu>
4439
4443
4440 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4444 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4441 a print after ^D or ^C from the user so that the In[] prompt
4445 a print after ^D or ^C from the user so that the In[] prompt
4442 doesn't over-run the gnuplot one.
4446 doesn't over-run the gnuplot one.
4443
4447
4444 2002-04-29 Fernando Perez <fperez@colorado.edu>
4448 2002-04-29 Fernando Perez <fperez@colorado.edu>
4445
4449
4446 * Released 0.2.10
4450 * Released 0.2.10
4447
4451
4448 * IPython/__release__.py (version): get date dynamically.
4452 * IPython/__release__.py (version): get date dynamically.
4449
4453
4450 * Misc. documentation updates thanks to Arnd's comments. Also ran
4454 * Misc. documentation updates thanks to Arnd's comments. Also ran
4451 a full spellcheck on the manual (hadn't been done in a while).
4455 a full spellcheck on the manual (hadn't been done in a while).
4452
4456
4453 2002-04-27 Fernando Perez <fperez@colorado.edu>
4457 2002-04-27 Fernando Perez <fperez@colorado.edu>
4454
4458
4455 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4459 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4456 starting a log in mid-session would reset the input history list.
4460 starting a log in mid-session would reset the input history list.
4457
4461
4458 2002-04-26 Fernando Perez <fperez@colorado.edu>
4462 2002-04-26 Fernando Perez <fperez@colorado.edu>
4459
4463
4460 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4464 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4461 all files were being included in an update. Now anything in
4465 all files were being included in an update. Now anything in
4462 UserConfig that matches [A-Za-z]*.py will go (this excludes
4466 UserConfig that matches [A-Za-z]*.py will go (this excludes
4463 __init__.py)
4467 __init__.py)
4464
4468
4465 2002-04-25 Fernando Perez <fperez@colorado.edu>
4469 2002-04-25 Fernando Perez <fperez@colorado.edu>
4466
4470
4467 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4471 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4468 to __builtins__ so that any form of embedded or imported code can
4472 to __builtins__ so that any form of embedded or imported code can
4469 test for being inside IPython.
4473 test for being inside IPython.
4470
4474
4471 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4475 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4472 changed to GnuplotMagic because it's now an importable module,
4476 changed to GnuplotMagic because it's now an importable module,
4473 this makes the name follow that of the standard Gnuplot module.
4477 this makes the name follow that of the standard Gnuplot module.
4474 GnuplotMagic can now be loaded at any time in mid-session.
4478 GnuplotMagic can now be loaded at any time in mid-session.
4475
4479
4476 2002-04-24 Fernando Perez <fperez@colorado.edu>
4480 2002-04-24 Fernando Perez <fperez@colorado.edu>
4477
4481
4478 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4482 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4479 the globals (IPython has its own namespace) and the
4483 the globals (IPython has its own namespace) and the
4480 PhysicalQuantity stuff is much better anyway.
4484 PhysicalQuantity stuff is much better anyway.
4481
4485
4482 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4486 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4483 embedding example to standard user directory for
4487 embedding example to standard user directory for
4484 distribution. Also put it in the manual.
4488 distribution. Also put it in the manual.
4485
4489
4486 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4490 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4487 instance as first argument (so it doesn't rely on some obscure
4491 instance as first argument (so it doesn't rely on some obscure
4488 hidden global).
4492 hidden global).
4489
4493
4490 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4494 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4491 delimiters. While it prevents ().TAB from working, it allows
4495 delimiters. While it prevents ().TAB from working, it allows
4492 completions in open (... expressions. This is by far a more common
4496 completions in open (... expressions. This is by far a more common
4493 case.
4497 case.
4494
4498
4495 2002-04-23 Fernando Perez <fperez@colorado.edu>
4499 2002-04-23 Fernando Perez <fperez@colorado.edu>
4496
4500
4497 * IPython/Extensions/InterpreterPasteInput.py: new
4501 * IPython/Extensions/InterpreterPasteInput.py: new
4498 syntax-processing module for pasting lines with >>> or ... at the
4502 syntax-processing module for pasting lines with >>> or ... at the
4499 start.
4503 start.
4500
4504
4501 * IPython/Extensions/PhysicalQ_Interactive.py
4505 * IPython/Extensions/PhysicalQ_Interactive.py
4502 (PhysicalQuantityInteractive.__int__): fixed to work with either
4506 (PhysicalQuantityInteractive.__int__): fixed to work with either
4503 Numeric or math.
4507 Numeric or math.
4504
4508
4505 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4509 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4506 provided profiles. Now we have:
4510 provided profiles. Now we have:
4507 -math -> math module as * and cmath with its own namespace.
4511 -math -> math module as * and cmath with its own namespace.
4508 -numeric -> Numeric as *, plus gnuplot & grace
4512 -numeric -> Numeric as *, plus gnuplot & grace
4509 -physics -> same as before
4513 -physics -> same as before
4510
4514
4511 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4515 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4512 user-defined magics wouldn't be found by @magic if they were
4516 user-defined magics wouldn't be found by @magic if they were
4513 defined as class methods. Also cleaned up the namespace search
4517 defined as class methods. Also cleaned up the namespace search
4514 logic and the string building (to use %s instead of many repeated
4518 logic and the string building (to use %s instead of many repeated
4515 string adds).
4519 string adds).
4516
4520
4517 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4521 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4518 of user-defined magics to operate with class methods (cleaner, in
4522 of user-defined magics to operate with class methods (cleaner, in
4519 line with the gnuplot code).
4523 line with the gnuplot code).
4520
4524
4521 2002-04-22 Fernando Perez <fperez@colorado.edu>
4525 2002-04-22 Fernando Perez <fperez@colorado.edu>
4522
4526
4523 * setup.py: updated dependency list so that manual is updated when
4527 * setup.py: updated dependency list so that manual is updated when
4524 all included files change.
4528 all included files change.
4525
4529
4526 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4530 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4527 the delimiter removal option (the fix is ugly right now).
4531 the delimiter removal option (the fix is ugly right now).
4528
4532
4529 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4533 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4530 all of the math profile (quicker loading, no conflict between
4534 all of the math profile (quicker loading, no conflict between
4531 g-9.8 and g-gnuplot).
4535 g-9.8 and g-gnuplot).
4532
4536
4533 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4537 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4534 name of post-mortem files to IPython_crash_report.txt.
4538 name of post-mortem files to IPython_crash_report.txt.
4535
4539
4536 * Cleanup/update of the docs. Added all the new readline info and
4540 * Cleanup/update of the docs. Added all the new readline info and
4537 formatted all lists as 'real lists'.
4541 formatted all lists as 'real lists'.
4538
4542
4539 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4543 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4540 tab-completion options, since the full readline parse_and_bind is
4544 tab-completion options, since the full readline parse_and_bind is
4541 now accessible.
4545 now accessible.
4542
4546
4543 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4547 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4544 handling of readline options. Now users can specify any string to
4548 handling of readline options. Now users can specify any string to
4545 be passed to parse_and_bind(), as well as the delimiters to be
4549 be passed to parse_and_bind(), as well as the delimiters to be
4546 removed.
4550 removed.
4547 (InteractiveShell.__init__): Added __name__ to the global
4551 (InteractiveShell.__init__): Added __name__ to the global
4548 namespace so that things like Itpl which rely on its existence
4552 namespace so that things like Itpl which rely on its existence
4549 don't crash.
4553 don't crash.
4550 (InteractiveShell._prefilter): Defined the default with a _ so
4554 (InteractiveShell._prefilter): Defined the default with a _ so
4551 that prefilter() is easier to override, while the default one
4555 that prefilter() is easier to override, while the default one
4552 remains available.
4556 remains available.
4553
4557
4554 2002-04-18 Fernando Perez <fperez@colorado.edu>
4558 2002-04-18 Fernando Perez <fperez@colorado.edu>
4555
4559
4556 * Added information about pdb in the docs.
4560 * Added information about pdb in the docs.
4557
4561
4558 2002-04-17 Fernando Perez <fperez@colorado.edu>
4562 2002-04-17 Fernando Perez <fperez@colorado.edu>
4559
4563
4560 * IPython/ipmaker.py (make_IPython): added rc_override option to
4564 * IPython/ipmaker.py (make_IPython): added rc_override option to
4561 allow passing config options at creation time which may override
4565 allow passing config options at creation time which may override
4562 anything set in the config files or command line. This is
4566 anything set in the config files or command line. This is
4563 particularly useful for configuring embedded instances.
4567 particularly useful for configuring embedded instances.
4564
4568
4565 2002-04-15 Fernando Perez <fperez@colorado.edu>
4569 2002-04-15 Fernando Perez <fperez@colorado.edu>
4566
4570
4567 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4571 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4568 crash embedded instances because of the input cache falling out of
4572 crash embedded instances because of the input cache falling out of
4569 sync with the output counter.
4573 sync with the output counter.
4570
4574
4571 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4575 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4572 mode which calls pdb after an uncaught exception in IPython itself.
4576 mode which calls pdb after an uncaught exception in IPython itself.
4573
4577
4574 2002-04-14 Fernando Perez <fperez@colorado.edu>
4578 2002-04-14 Fernando Perez <fperez@colorado.edu>
4575
4579
4576 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4580 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4577 readline, fix it back after each call.
4581 readline, fix it back after each call.
4578
4582
4579 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4583 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4580 method to force all access via __call__(), which guarantees that
4584 method to force all access via __call__(), which guarantees that
4581 traceback references are properly deleted.
4585 traceback references are properly deleted.
4582
4586
4583 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4587 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4584 improve printing when pprint is in use.
4588 improve printing when pprint is in use.
4585
4589
4586 2002-04-13 Fernando Perez <fperez@colorado.edu>
4590 2002-04-13 Fernando Perez <fperez@colorado.edu>
4587
4591
4588 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4592 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4589 exceptions aren't caught anymore. If the user triggers one, he
4593 exceptions aren't caught anymore. If the user triggers one, he
4590 should know why he's doing it and it should go all the way up,
4594 should know why he's doing it and it should go all the way up,
4591 just like any other exception. So now @abort will fully kill the
4595 just like any other exception. So now @abort will fully kill the
4592 embedded interpreter and the embedding code (unless that happens
4596 embedded interpreter and the embedding code (unless that happens
4593 to catch SystemExit).
4597 to catch SystemExit).
4594
4598
4595 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4599 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4596 and a debugger() method to invoke the interactive pdb debugger
4600 and a debugger() method to invoke the interactive pdb debugger
4597 after printing exception information. Also added the corresponding
4601 after printing exception information. Also added the corresponding
4598 -pdb option and @pdb magic to control this feature, and updated
4602 -pdb option and @pdb magic to control this feature, and updated
4599 the docs. After a suggestion from Christopher Hart
4603 the docs. After a suggestion from Christopher Hart
4600 (hart-AT-caltech.edu).
4604 (hart-AT-caltech.edu).
4601
4605
4602 2002-04-12 Fernando Perez <fperez@colorado.edu>
4606 2002-04-12 Fernando Perez <fperez@colorado.edu>
4603
4607
4604 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4608 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4605 the exception handlers defined by the user (not the CrashHandler)
4609 the exception handlers defined by the user (not the CrashHandler)
4606 so that user exceptions don't trigger an ipython bug report.
4610 so that user exceptions don't trigger an ipython bug report.
4607
4611
4608 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4612 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4609 configurable (it should have always been so).
4613 configurable (it should have always been so).
4610
4614
4611 2002-03-26 Fernando Perez <fperez@colorado.edu>
4615 2002-03-26 Fernando Perez <fperez@colorado.edu>
4612
4616
4613 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4617 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4614 and there to fix embedding namespace issues. This should all be
4618 and there to fix embedding namespace issues. This should all be
4615 done in a more elegant way.
4619 done in a more elegant way.
4616
4620
4617 2002-03-25 Fernando Perez <fperez@colorado.edu>
4621 2002-03-25 Fernando Perez <fperez@colorado.edu>
4618
4622
4619 * IPython/genutils.py (get_home_dir): Try to make it work under
4623 * IPython/genutils.py (get_home_dir): Try to make it work under
4620 win9x also.
4624 win9x also.
4621
4625
4622 2002-03-20 Fernando Perez <fperez@colorado.edu>
4626 2002-03-20 Fernando Perez <fperez@colorado.edu>
4623
4627
4624 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4628 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4625 sys.displayhook untouched upon __init__.
4629 sys.displayhook untouched upon __init__.
4626
4630
4627 2002-03-19 Fernando Perez <fperez@colorado.edu>
4631 2002-03-19 Fernando Perez <fperez@colorado.edu>
4628
4632
4629 * Released 0.2.9 (for embedding bug, basically).
4633 * Released 0.2.9 (for embedding bug, basically).
4630
4634
4631 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4635 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4632 exceptions so that enclosing shell's state can be restored.
4636 exceptions so that enclosing shell's state can be restored.
4633
4637
4634 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4638 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4635 naming conventions in the .ipython/ dir.
4639 naming conventions in the .ipython/ dir.
4636
4640
4637 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4641 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4638 from delimiters list so filenames with - in them get expanded.
4642 from delimiters list so filenames with - in them get expanded.
4639
4643
4640 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4644 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4641 sys.displayhook not being properly restored after an embedded call.
4645 sys.displayhook not being properly restored after an embedded call.
4642
4646
4643 2002-03-18 Fernando Perez <fperez@colorado.edu>
4647 2002-03-18 Fernando Perez <fperez@colorado.edu>
4644
4648
4645 * Released 0.2.8
4649 * Released 0.2.8
4646
4650
4647 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4651 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4648 some files weren't being included in a -upgrade.
4652 some files weren't being included in a -upgrade.
4649 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4653 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4650 on' so that the first tab completes.
4654 on' so that the first tab completes.
4651 (InteractiveShell.handle_magic): fixed bug with spaces around
4655 (InteractiveShell.handle_magic): fixed bug with spaces around
4652 quotes breaking many magic commands.
4656 quotes breaking many magic commands.
4653
4657
4654 * setup.py: added note about ignoring the syntax error messages at
4658 * setup.py: added note about ignoring the syntax error messages at
4655 installation.
4659 installation.
4656
4660
4657 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4661 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4658 streamlining the gnuplot interface, now there's only one magic @gp.
4662 streamlining the gnuplot interface, now there's only one magic @gp.
4659
4663
4660 2002-03-17 Fernando Perez <fperez@colorado.edu>
4664 2002-03-17 Fernando Perez <fperez@colorado.edu>
4661
4665
4662 * IPython/UserConfig/magic_gnuplot.py: new name for the
4666 * IPython/UserConfig/magic_gnuplot.py: new name for the
4663 example-magic_pm.py file. Much enhanced system, now with a shell
4667 example-magic_pm.py file. Much enhanced system, now with a shell
4664 for communicating directly with gnuplot, one command at a time.
4668 for communicating directly with gnuplot, one command at a time.
4665
4669
4666 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4670 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4667 setting __name__=='__main__'.
4671 setting __name__=='__main__'.
4668
4672
4669 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4673 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4670 mini-shell for accessing gnuplot from inside ipython. Should
4674 mini-shell for accessing gnuplot from inside ipython. Should
4671 extend it later for grace access too. Inspired by Arnd's
4675 extend it later for grace access too. Inspired by Arnd's
4672 suggestion.
4676 suggestion.
4673
4677
4674 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4678 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4675 calling magic functions with () in their arguments. Thanks to Arnd
4679 calling magic functions with () in their arguments. Thanks to Arnd
4676 Baecker for pointing this to me.
4680 Baecker for pointing this to me.
4677
4681
4678 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4682 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4679 infinitely for integer or complex arrays (only worked with floats).
4683 infinitely for integer or complex arrays (only worked with floats).
4680
4684
4681 2002-03-16 Fernando Perez <fperez@colorado.edu>
4685 2002-03-16 Fernando Perez <fperez@colorado.edu>
4682
4686
4683 * setup.py: Merged setup and setup_windows into a single script
4687 * setup.py: Merged setup and setup_windows into a single script
4684 which properly handles things for windows users.
4688 which properly handles things for windows users.
4685
4689
4686 2002-03-15 Fernando Perez <fperez@colorado.edu>
4690 2002-03-15 Fernando Perez <fperez@colorado.edu>
4687
4691
4688 * Big change to the manual: now the magics are all automatically
4692 * Big change to the manual: now the magics are all automatically
4689 documented. This information is generated from their docstrings
4693 documented. This information is generated from their docstrings
4690 and put in a latex file included by the manual lyx file. This way
4694 and put in a latex file included by the manual lyx file. This way
4691 we get always up to date information for the magics. The manual
4695 we get always up to date information for the magics. The manual
4692 now also has proper version information, also auto-synced.
4696 now also has proper version information, also auto-synced.
4693
4697
4694 For this to work, an undocumented --magic_docstrings option was added.
4698 For this to work, an undocumented --magic_docstrings option was added.
4695
4699
4696 2002-03-13 Fernando Perez <fperez@colorado.edu>
4700 2002-03-13 Fernando Perez <fperez@colorado.edu>
4697
4701
4698 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4702 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4699 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4703 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4700
4704
4701 2002-03-12 Fernando Perez <fperez@colorado.edu>
4705 2002-03-12 Fernando Perez <fperez@colorado.edu>
4702
4706
4703 * IPython/ultraTB.py (TermColors): changed color escapes again to
4707 * IPython/ultraTB.py (TermColors): changed color escapes again to
4704 fix the (old, reintroduced) line-wrapping bug. Basically, if
4708 fix the (old, reintroduced) line-wrapping bug. Basically, if
4705 \001..\002 aren't given in the color escapes, lines get wrapped
4709 \001..\002 aren't given in the color escapes, lines get wrapped
4706 weirdly. But giving those screws up old xterms and emacs terms. So
4710 weirdly. But giving those screws up old xterms and emacs terms. So
4707 I added some logic for emacs terms to be ok, but I can't identify old
4711 I added some logic for emacs terms to be ok, but I can't identify old
4708 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4712 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4709
4713
4710 2002-03-10 Fernando Perez <fperez@colorado.edu>
4714 2002-03-10 Fernando Perez <fperez@colorado.edu>
4711
4715
4712 * IPython/usage.py (__doc__): Various documentation cleanups and
4716 * IPython/usage.py (__doc__): Various documentation cleanups and
4713 updates, both in usage docstrings and in the manual.
4717 updates, both in usage docstrings and in the manual.
4714
4718
4715 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4719 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4716 handling of caching. Set minimum acceptabe value for having a
4720 handling of caching. Set minimum acceptabe value for having a
4717 cache at 20 values.
4721 cache at 20 values.
4718
4722
4719 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4723 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4720 install_first_time function to a method, renamed it and added an
4724 install_first_time function to a method, renamed it and added an
4721 'upgrade' mode. Now people can update their config directory with
4725 'upgrade' mode. Now people can update their config directory with
4722 a simple command line switch (-upgrade, also new).
4726 a simple command line switch (-upgrade, also new).
4723
4727
4724 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4728 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4725 @file (convenient for automagic users under Python >= 2.2).
4729 @file (convenient for automagic users under Python >= 2.2).
4726 Removed @files (it seemed more like a plural than an abbrev. of
4730 Removed @files (it seemed more like a plural than an abbrev. of
4727 'file show').
4731 'file show').
4728
4732
4729 * IPython/iplib.py (install_first_time): Fixed crash if there were
4733 * IPython/iplib.py (install_first_time): Fixed crash if there were
4730 backup files ('~') in .ipython/ install directory.
4734 backup files ('~') in .ipython/ install directory.
4731
4735
4732 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4736 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4733 system. Things look fine, but these changes are fairly
4737 system. Things look fine, but these changes are fairly
4734 intrusive. Test them for a few days.
4738 intrusive. Test them for a few days.
4735
4739
4736 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4740 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4737 the prompts system. Now all in/out prompt strings are user
4741 the prompts system. Now all in/out prompt strings are user
4738 controllable. This is particularly useful for embedding, as one
4742 controllable. This is particularly useful for embedding, as one
4739 can tag embedded instances with particular prompts.
4743 can tag embedded instances with particular prompts.
4740
4744
4741 Also removed global use of sys.ps1/2, which now allows nested
4745 Also removed global use of sys.ps1/2, which now allows nested
4742 embeddings without any problems. Added command-line options for
4746 embeddings without any problems. Added command-line options for
4743 the prompt strings.
4747 the prompt strings.
4744
4748
4745 2002-03-08 Fernando Perez <fperez@colorado.edu>
4749 2002-03-08 Fernando Perez <fperez@colorado.edu>
4746
4750
4747 * IPython/UserConfig/example-embed-short.py (ipshell): added
4751 * IPython/UserConfig/example-embed-short.py (ipshell): added
4748 example file with the bare minimum code for embedding.
4752 example file with the bare minimum code for embedding.
4749
4753
4750 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4754 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4751 functionality for the embeddable shell to be activated/deactivated
4755 functionality for the embeddable shell to be activated/deactivated
4752 either globally or at each call.
4756 either globally or at each call.
4753
4757
4754 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4758 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4755 rewriting the prompt with '--->' for auto-inputs with proper
4759 rewriting the prompt with '--->' for auto-inputs with proper
4756 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4760 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4757 this is handled by the prompts class itself, as it should.
4761 this is handled by the prompts class itself, as it should.
4758
4762
4759 2002-03-05 Fernando Perez <fperez@colorado.edu>
4763 2002-03-05 Fernando Perez <fperez@colorado.edu>
4760
4764
4761 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4765 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4762 @logstart to avoid name clashes with the math log function.
4766 @logstart to avoid name clashes with the math log function.
4763
4767
4764 * Big updates to X/Emacs section of the manual.
4768 * Big updates to X/Emacs section of the manual.
4765
4769
4766 * Removed ipython_emacs. Milan explained to me how to pass
4770 * Removed ipython_emacs. Milan explained to me how to pass
4767 arguments to ipython through Emacs. Some day I'm going to end up
4771 arguments to ipython through Emacs. Some day I'm going to end up
4768 learning some lisp...
4772 learning some lisp...
4769
4773
4770 2002-03-04 Fernando Perez <fperez@colorado.edu>
4774 2002-03-04 Fernando Perez <fperez@colorado.edu>
4771
4775
4772 * IPython/ipython_emacs: Created script to be used as the
4776 * IPython/ipython_emacs: Created script to be used as the
4773 py-python-command Emacs variable so we can pass IPython
4777 py-python-command Emacs variable so we can pass IPython
4774 parameters. I can't figure out how to tell Emacs directly to pass
4778 parameters. I can't figure out how to tell Emacs directly to pass
4775 parameters to IPython, so a dummy shell script will do it.
4779 parameters to IPython, so a dummy shell script will do it.
4776
4780
4777 Other enhancements made for things to work better under Emacs'
4781 Other enhancements made for things to work better under Emacs'
4778 various types of terminals. Many thanks to Milan Zamazal
4782 various types of terminals. Many thanks to Milan Zamazal
4779 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4783 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4780
4784
4781 2002-03-01 Fernando Perez <fperez@colorado.edu>
4785 2002-03-01 Fernando Perez <fperez@colorado.edu>
4782
4786
4783 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4787 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4784 that loading of readline is now optional. This gives better
4788 that loading of readline is now optional. This gives better
4785 control to emacs users.
4789 control to emacs users.
4786
4790
4787 * IPython/ultraTB.py (__date__): Modified color escape sequences
4791 * IPython/ultraTB.py (__date__): Modified color escape sequences
4788 and now things work fine under xterm and in Emacs' term buffers
4792 and now things work fine under xterm and in Emacs' term buffers
4789 (though not shell ones). Well, in emacs you get colors, but all
4793 (though not shell ones). Well, in emacs you get colors, but all
4790 seem to be 'light' colors (no difference between dark and light
4794 seem to be 'light' colors (no difference between dark and light
4791 ones). But the garbage chars are gone, and also in xterms. It
4795 ones). But the garbage chars are gone, and also in xterms. It
4792 seems that now I'm using 'cleaner' ansi sequences.
4796 seems that now I'm using 'cleaner' ansi sequences.
4793
4797
4794 2002-02-21 Fernando Perez <fperez@colorado.edu>
4798 2002-02-21 Fernando Perez <fperez@colorado.edu>
4795
4799
4796 * Released 0.2.7 (mainly to publish the scoping fix).
4800 * Released 0.2.7 (mainly to publish the scoping fix).
4797
4801
4798 * IPython/Logger.py (Logger.logstate): added. A corresponding
4802 * IPython/Logger.py (Logger.logstate): added. A corresponding
4799 @logstate magic was created.
4803 @logstate magic was created.
4800
4804
4801 * IPython/Magic.py: fixed nested scoping problem under Python
4805 * IPython/Magic.py: fixed nested scoping problem under Python
4802 2.1.x (automagic wasn't working).
4806 2.1.x (automagic wasn't working).
4803
4807
4804 2002-02-20 Fernando Perez <fperez@colorado.edu>
4808 2002-02-20 Fernando Perez <fperez@colorado.edu>
4805
4809
4806 * Released 0.2.6.
4810 * Released 0.2.6.
4807
4811
4808 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4812 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4809 option so that logs can come out without any headers at all.
4813 option so that logs can come out without any headers at all.
4810
4814
4811 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4815 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4812 SciPy.
4816 SciPy.
4813
4817
4814 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4818 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4815 that embedded IPython calls don't require vars() to be explicitly
4819 that embedded IPython calls don't require vars() to be explicitly
4816 passed. Now they are extracted from the caller's frame (code
4820 passed. Now they are extracted from the caller's frame (code
4817 snatched from Eric Jones' weave). Added better documentation to
4821 snatched from Eric Jones' weave). Added better documentation to
4818 the section on embedding and the example file.
4822 the section on embedding and the example file.
4819
4823
4820 * IPython/genutils.py (page): Changed so that under emacs, it just
4824 * IPython/genutils.py (page): Changed so that under emacs, it just
4821 prints the string. You can then page up and down in the emacs
4825 prints the string. You can then page up and down in the emacs
4822 buffer itself. This is how the builtin help() works.
4826 buffer itself. This is how the builtin help() works.
4823
4827
4824 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4828 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4825 macro scoping: macros need to be executed in the user's namespace
4829 macro scoping: macros need to be executed in the user's namespace
4826 to work as if they had been typed by the user.
4830 to work as if they had been typed by the user.
4827
4831
4828 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4832 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4829 execute automatically (no need to type 'exec...'). They then
4833 execute automatically (no need to type 'exec...'). They then
4830 behave like 'true macros'. The printing system was also modified
4834 behave like 'true macros'. The printing system was also modified
4831 for this to work.
4835 for this to work.
4832
4836
4833 2002-02-19 Fernando Perez <fperez@colorado.edu>
4837 2002-02-19 Fernando Perez <fperez@colorado.edu>
4834
4838
4835 * IPython/genutils.py (page_file): new function for paging files
4839 * IPython/genutils.py (page_file): new function for paging files
4836 in an OS-independent way. Also necessary for file viewing to work
4840 in an OS-independent way. Also necessary for file viewing to work
4837 well inside Emacs buffers.
4841 well inside Emacs buffers.
4838 (page): Added checks for being in an emacs buffer.
4842 (page): Added checks for being in an emacs buffer.
4839 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4843 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4840 same bug in iplib.
4844 same bug in iplib.
4841
4845
4842 2002-02-18 Fernando Perez <fperez@colorado.edu>
4846 2002-02-18 Fernando Perez <fperez@colorado.edu>
4843
4847
4844 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4848 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4845 of readline so that IPython can work inside an Emacs buffer.
4849 of readline so that IPython can work inside an Emacs buffer.
4846
4850
4847 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4851 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4848 method signatures (they weren't really bugs, but it looks cleaner
4852 method signatures (they weren't really bugs, but it looks cleaner
4849 and keeps PyChecker happy).
4853 and keeps PyChecker happy).
4850
4854
4851 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4855 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4852 for implementing various user-defined hooks. Currently only
4856 for implementing various user-defined hooks. Currently only
4853 display is done.
4857 display is done.
4854
4858
4855 * IPython/Prompts.py (CachedOutput._display): changed display
4859 * IPython/Prompts.py (CachedOutput._display): changed display
4856 functions so that they can be dynamically changed by users easily.
4860 functions so that they can be dynamically changed by users easily.
4857
4861
4858 * IPython/Extensions/numeric_formats.py (num_display): added an
4862 * IPython/Extensions/numeric_formats.py (num_display): added an
4859 extension for printing NumPy arrays in flexible manners. It
4863 extension for printing NumPy arrays in flexible manners. It
4860 doesn't do anything yet, but all the structure is in
4864 doesn't do anything yet, but all the structure is in
4861 place. Ultimately the plan is to implement output format control
4865 place. Ultimately the plan is to implement output format control
4862 like in Octave.
4866 like in Octave.
4863
4867
4864 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4868 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4865 methods are found at run-time by all the automatic machinery.
4869 methods are found at run-time by all the automatic machinery.
4866
4870
4867 2002-02-17 Fernando Perez <fperez@colorado.edu>
4871 2002-02-17 Fernando Perez <fperez@colorado.edu>
4868
4872
4869 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4873 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4870 whole file a little.
4874 whole file a little.
4871
4875
4872 * ToDo: closed this document. Now there's a new_design.lyx
4876 * ToDo: closed this document. Now there's a new_design.lyx
4873 document for all new ideas. Added making a pdf of it for the
4877 document for all new ideas. Added making a pdf of it for the
4874 end-user distro.
4878 end-user distro.
4875
4879
4876 * IPython/Logger.py (Logger.switch_log): Created this to replace
4880 * IPython/Logger.py (Logger.switch_log): Created this to replace
4877 logon() and logoff(). It also fixes a nasty crash reported by
4881 logon() and logoff(). It also fixes a nasty crash reported by
4878 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4882 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4879
4883
4880 * IPython/iplib.py (complete): got auto-completion to work with
4884 * IPython/iplib.py (complete): got auto-completion to work with
4881 automagic (I had wanted this for a long time).
4885 automagic (I had wanted this for a long time).
4882
4886
4883 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4887 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4884 to @file, since file() is now a builtin and clashes with automagic
4888 to @file, since file() is now a builtin and clashes with automagic
4885 for @file.
4889 for @file.
4886
4890
4887 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4891 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4888 of this was previously in iplib, which had grown to more than 2000
4892 of this was previously in iplib, which had grown to more than 2000
4889 lines, way too long. No new functionality, but it makes managing
4893 lines, way too long. No new functionality, but it makes managing
4890 the code a bit easier.
4894 the code a bit easier.
4891
4895
4892 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4896 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4893 information to crash reports.
4897 information to crash reports.
4894
4898
4895 2002-02-12 Fernando Perez <fperez@colorado.edu>
4899 2002-02-12 Fernando Perez <fperez@colorado.edu>
4896
4900
4897 * Released 0.2.5.
4901 * Released 0.2.5.
4898
4902
4899 2002-02-11 Fernando Perez <fperez@colorado.edu>
4903 2002-02-11 Fernando Perez <fperez@colorado.edu>
4900
4904
4901 * Wrote a relatively complete Windows installer. It puts
4905 * Wrote a relatively complete Windows installer. It puts
4902 everything in place, creates Start Menu entries and fixes the
4906 everything in place, creates Start Menu entries and fixes the
4903 color issues. Nothing fancy, but it works.
4907 color issues. Nothing fancy, but it works.
4904
4908
4905 2002-02-10 Fernando Perez <fperez@colorado.edu>
4909 2002-02-10 Fernando Perez <fperez@colorado.edu>
4906
4910
4907 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4911 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4908 os.path.expanduser() call so that we can type @run ~/myfile.py and
4912 os.path.expanduser() call so that we can type @run ~/myfile.py and
4909 have thigs work as expected.
4913 have thigs work as expected.
4910
4914
4911 * IPython/genutils.py (page): fixed exception handling so things
4915 * IPython/genutils.py (page): fixed exception handling so things
4912 work both in Unix and Windows correctly. Quitting a pager triggers
4916 work both in Unix and Windows correctly. Quitting a pager triggers
4913 an IOError/broken pipe in Unix, and in windows not finding a pager
4917 an IOError/broken pipe in Unix, and in windows not finding a pager
4914 is also an IOError, so I had to actually look at the return value
4918 is also an IOError, so I had to actually look at the return value
4915 of the exception, not just the exception itself. Should be ok now.
4919 of the exception, not just the exception itself. Should be ok now.
4916
4920
4917 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4921 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4918 modified to allow case-insensitive color scheme changes.
4922 modified to allow case-insensitive color scheme changes.
4919
4923
4920 2002-02-09 Fernando Perez <fperez@colorado.edu>
4924 2002-02-09 Fernando Perez <fperez@colorado.edu>
4921
4925
4922 * IPython/genutils.py (native_line_ends): new function to leave
4926 * IPython/genutils.py (native_line_ends): new function to leave
4923 user config files with os-native line-endings.
4927 user config files with os-native line-endings.
4924
4928
4925 * README and manual updates.
4929 * README and manual updates.
4926
4930
4927 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4931 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4928 instead of StringType to catch Unicode strings.
4932 instead of StringType to catch Unicode strings.
4929
4933
4930 * IPython/genutils.py (filefind): fixed bug for paths with
4934 * IPython/genutils.py (filefind): fixed bug for paths with
4931 embedded spaces (very common in Windows).
4935 embedded spaces (very common in Windows).
4932
4936
4933 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4937 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4934 files under Windows, so that they get automatically associated
4938 files under Windows, so that they get automatically associated
4935 with a text editor. Windows makes it a pain to handle
4939 with a text editor. Windows makes it a pain to handle
4936 extension-less files.
4940 extension-less files.
4937
4941
4938 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4942 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4939 warning about readline only occur for Posix. In Windows there's no
4943 warning about readline only occur for Posix. In Windows there's no
4940 way to get readline, so why bother with the warning.
4944 way to get readline, so why bother with the warning.
4941
4945
4942 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4946 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4943 for __str__ instead of dir(self), since dir() changed in 2.2.
4947 for __str__ instead of dir(self), since dir() changed in 2.2.
4944
4948
4945 * Ported to Windows! Tested on XP, I suspect it should work fine
4949 * Ported to Windows! Tested on XP, I suspect it should work fine
4946 on NT/2000, but I don't think it will work on 98 et al. That
4950 on NT/2000, but I don't think it will work on 98 et al. That
4947 series of Windows is such a piece of junk anyway that I won't try
4951 series of Windows is such a piece of junk anyway that I won't try
4948 porting it there. The XP port was straightforward, showed a few
4952 porting it there. The XP port was straightforward, showed a few
4949 bugs here and there (fixed all), in particular some string
4953 bugs here and there (fixed all), in particular some string
4950 handling stuff which required considering Unicode strings (which
4954 handling stuff which required considering Unicode strings (which
4951 Windows uses). This is good, but hasn't been too tested :) No
4955 Windows uses). This is good, but hasn't been too tested :) No
4952 fancy installer yet, I'll put a note in the manual so people at
4956 fancy installer yet, I'll put a note in the manual so people at
4953 least make manually a shortcut.
4957 least make manually a shortcut.
4954
4958
4955 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4959 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4956 into a single one, "colors". This now controls both prompt and
4960 into a single one, "colors". This now controls both prompt and
4957 exception color schemes, and can be changed both at startup
4961 exception color schemes, and can be changed both at startup
4958 (either via command-line switches or via ipythonrc files) and at
4962 (either via command-line switches or via ipythonrc files) and at
4959 runtime, with @colors.
4963 runtime, with @colors.
4960 (Magic.magic_run): renamed @prun to @run and removed the old
4964 (Magic.magic_run): renamed @prun to @run and removed the old
4961 @run. The two were too similar to warrant keeping both.
4965 @run. The two were too similar to warrant keeping both.
4962
4966
4963 2002-02-03 Fernando Perez <fperez@colorado.edu>
4967 2002-02-03 Fernando Perez <fperez@colorado.edu>
4964
4968
4965 * IPython/iplib.py (install_first_time): Added comment on how to
4969 * IPython/iplib.py (install_first_time): Added comment on how to
4966 configure the color options for first-time users. Put a <return>
4970 configure the color options for first-time users. Put a <return>
4967 request at the end so that small-terminal users get a chance to
4971 request at the end so that small-terminal users get a chance to
4968 read the startup info.
4972 read the startup info.
4969
4973
4970 2002-01-23 Fernando Perez <fperez@colorado.edu>
4974 2002-01-23 Fernando Perez <fperez@colorado.edu>
4971
4975
4972 * IPython/iplib.py (CachedOutput.update): Changed output memory
4976 * IPython/iplib.py (CachedOutput.update): Changed output memory
4973 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4977 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4974 input history we still use _i. Did this b/c these variable are
4978 input history we still use _i. Did this b/c these variable are
4975 very commonly used in interactive work, so the less we need to
4979 very commonly used in interactive work, so the less we need to
4976 type the better off we are.
4980 type the better off we are.
4977 (Magic.magic_prun): updated @prun to better handle the namespaces
4981 (Magic.magic_prun): updated @prun to better handle the namespaces
4978 the file will run in, including a fix for __name__ not being set
4982 the file will run in, including a fix for __name__ not being set
4979 before.
4983 before.
4980
4984
4981 2002-01-20 Fernando Perez <fperez@colorado.edu>
4985 2002-01-20 Fernando Perez <fperez@colorado.edu>
4982
4986
4983 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4987 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4984 extra garbage for Python 2.2. Need to look more carefully into
4988 extra garbage for Python 2.2. Need to look more carefully into
4985 this later.
4989 this later.
4986
4990
4987 2002-01-19 Fernando Perez <fperez@colorado.edu>
4991 2002-01-19 Fernando Perez <fperez@colorado.edu>
4988
4992
4989 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4993 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4990 display SyntaxError exceptions properly formatted when they occur
4994 display SyntaxError exceptions properly formatted when they occur
4991 (they can be triggered by imported code).
4995 (they can be triggered by imported code).
4992
4996
4993 2002-01-18 Fernando Perez <fperez@colorado.edu>
4997 2002-01-18 Fernando Perez <fperez@colorado.edu>
4994
4998
4995 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4999 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4996 SyntaxError exceptions are reported nicely formatted, instead of
5000 SyntaxError exceptions are reported nicely formatted, instead of
4997 spitting out only offset information as before.
5001 spitting out only offset information as before.
4998 (Magic.magic_prun): Added the @prun function for executing
5002 (Magic.magic_prun): Added the @prun function for executing
4999 programs with command line args inside IPython.
5003 programs with command line args inside IPython.
5000
5004
5001 2002-01-16 Fernando Perez <fperez@colorado.edu>
5005 2002-01-16 Fernando Perez <fperez@colorado.edu>
5002
5006
5003 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5007 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5004 to *not* include the last item given in a range. This brings their
5008 to *not* include the last item given in a range. This brings their
5005 behavior in line with Python's slicing:
5009 behavior in line with Python's slicing:
5006 a[n1:n2] -> a[n1]...a[n2-1]
5010 a[n1:n2] -> a[n1]...a[n2-1]
5007 It may be a bit less convenient, but I prefer to stick to Python's
5011 It may be a bit less convenient, but I prefer to stick to Python's
5008 conventions *everywhere*, so users never have to wonder.
5012 conventions *everywhere*, so users never have to wonder.
5009 (Magic.magic_macro): Added @macro function to ease the creation of
5013 (Magic.magic_macro): Added @macro function to ease the creation of
5010 macros.
5014 macros.
5011
5015
5012 2002-01-05 Fernando Perez <fperez@colorado.edu>
5016 2002-01-05 Fernando Perez <fperez@colorado.edu>
5013
5017
5014 * Released 0.2.4.
5018 * Released 0.2.4.
5015
5019
5016 * IPython/iplib.py (Magic.magic_pdef):
5020 * IPython/iplib.py (Magic.magic_pdef):
5017 (InteractiveShell.safe_execfile): report magic lines and error
5021 (InteractiveShell.safe_execfile): report magic lines and error
5018 lines without line numbers so one can easily copy/paste them for
5022 lines without line numbers so one can easily copy/paste them for
5019 re-execution.
5023 re-execution.
5020
5024
5021 * Updated manual with recent changes.
5025 * Updated manual with recent changes.
5022
5026
5023 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5027 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5024 docstring printing when class? is called. Very handy for knowing
5028 docstring printing when class? is called. Very handy for knowing
5025 how to create class instances (as long as __init__ is well
5029 how to create class instances (as long as __init__ is well
5026 documented, of course :)
5030 documented, of course :)
5027 (Magic.magic_doc): print both class and constructor docstrings.
5031 (Magic.magic_doc): print both class and constructor docstrings.
5028 (Magic.magic_pdef): give constructor info if passed a class and
5032 (Magic.magic_pdef): give constructor info if passed a class and
5029 __call__ info for callable object instances.
5033 __call__ info for callable object instances.
5030
5034
5031 2002-01-04 Fernando Perez <fperez@colorado.edu>
5035 2002-01-04 Fernando Perez <fperez@colorado.edu>
5032
5036
5033 * Made deep_reload() off by default. It doesn't always work
5037 * Made deep_reload() off by default. It doesn't always work
5034 exactly as intended, so it's probably safer to have it off. It's
5038 exactly as intended, so it's probably safer to have it off. It's
5035 still available as dreload() anyway, so nothing is lost.
5039 still available as dreload() anyway, so nothing is lost.
5036
5040
5037 2002-01-02 Fernando Perez <fperez@colorado.edu>
5041 2002-01-02 Fernando Perez <fperez@colorado.edu>
5038
5042
5039 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5043 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5040 so I wanted an updated release).
5044 so I wanted an updated release).
5041
5045
5042 2001-12-27 Fernando Perez <fperez@colorado.edu>
5046 2001-12-27 Fernando Perez <fperez@colorado.edu>
5043
5047
5044 * IPython/iplib.py (InteractiveShell.interact): Added the original
5048 * IPython/iplib.py (InteractiveShell.interact): Added the original
5045 code from 'code.py' for this module in order to change the
5049 code from 'code.py' for this module in order to change the
5046 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5050 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5047 the history cache would break when the user hit Ctrl-C, and
5051 the history cache would break when the user hit Ctrl-C, and
5048 interact() offers no way to add any hooks to it.
5052 interact() offers no way to add any hooks to it.
5049
5053
5050 2001-12-23 Fernando Perez <fperez@colorado.edu>
5054 2001-12-23 Fernando Perez <fperez@colorado.edu>
5051
5055
5052 * setup.py: added check for 'MANIFEST' before trying to remove
5056 * setup.py: added check for 'MANIFEST' before trying to remove
5053 it. Thanks to Sean Reifschneider.
5057 it. Thanks to Sean Reifschneider.
5054
5058
5055 2001-12-22 Fernando Perez <fperez@colorado.edu>
5059 2001-12-22 Fernando Perez <fperez@colorado.edu>
5056
5060
5057 * Released 0.2.2.
5061 * Released 0.2.2.
5058
5062
5059 * Finished (reasonably) writing the manual. Later will add the
5063 * Finished (reasonably) writing the manual. Later will add the
5060 python-standard navigation stylesheets, but for the time being
5064 python-standard navigation stylesheets, but for the time being
5061 it's fairly complete. Distribution will include html and pdf
5065 it's fairly complete. Distribution will include html and pdf
5062 versions.
5066 versions.
5063
5067
5064 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5068 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5065 (MayaVi author).
5069 (MayaVi author).
5066
5070
5067 2001-12-21 Fernando Perez <fperez@colorado.edu>
5071 2001-12-21 Fernando Perez <fperez@colorado.edu>
5068
5072
5069 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5073 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5070 good public release, I think (with the manual and the distutils
5074 good public release, I think (with the manual and the distutils
5071 installer). The manual can use some work, but that can go
5075 installer). The manual can use some work, but that can go
5072 slowly. Otherwise I think it's quite nice for end users. Next
5076 slowly. Otherwise I think it's quite nice for end users. Next
5073 summer, rewrite the guts of it...
5077 summer, rewrite the guts of it...
5074
5078
5075 * Changed format of ipythonrc files to use whitespace as the
5079 * Changed format of ipythonrc files to use whitespace as the
5076 separator instead of an explicit '='. Cleaner.
5080 separator instead of an explicit '='. Cleaner.
5077
5081
5078 2001-12-20 Fernando Perez <fperez@colorado.edu>
5082 2001-12-20 Fernando Perez <fperez@colorado.edu>
5079
5083
5080 * Started a manual in LyX. For now it's just a quick merge of the
5084 * Started a manual in LyX. For now it's just a quick merge of the
5081 various internal docstrings and READMEs. Later it may grow into a
5085 various internal docstrings and READMEs. Later it may grow into a
5082 nice, full-blown manual.
5086 nice, full-blown manual.
5083
5087
5084 * Set up a distutils based installer. Installation should now be
5088 * Set up a distutils based installer. Installation should now be
5085 trivially simple for end-users.
5089 trivially simple for end-users.
5086
5090
5087 2001-12-11 Fernando Perez <fperez@colorado.edu>
5091 2001-12-11 Fernando Perez <fperez@colorado.edu>
5088
5092
5089 * Released 0.2.0. First public release, announced it at
5093 * Released 0.2.0. First public release, announced it at
5090 comp.lang.python. From now on, just bugfixes...
5094 comp.lang.python. From now on, just bugfixes...
5091
5095
5092 * Went through all the files, set copyright/license notices and
5096 * Went through all the files, set copyright/license notices and
5093 cleaned up things. Ready for release.
5097 cleaned up things. Ready for release.
5094
5098
5095 2001-12-10 Fernando Perez <fperez@colorado.edu>
5099 2001-12-10 Fernando Perez <fperez@colorado.edu>
5096
5100
5097 * Changed the first-time installer not to use tarfiles. It's more
5101 * Changed the first-time installer not to use tarfiles. It's more
5098 robust now and less unix-dependent. Also makes it easier for
5102 robust now and less unix-dependent. Also makes it easier for
5099 people to later upgrade versions.
5103 people to later upgrade versions.
5100
5104
5101 * Changed @exit to @abort to reflect the fact that it's pretty
5105 * Changed @exit to @abort to reflect the fact that it's pretty
5102 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5106 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5103 becomes significant only when IPyhton is embedded: in that case,
5107 becomes significant only when IPyhton is embedded: in that case,
5104 C-D closes IPython only, but @abort kills the enclosing program
5108 C-D closes IPython only, but @abort kills the enclosing program
5105 too (unless it had called IPython inside a try catching
5109 too (unless it had called IPython inside a try catching
5106 SystemExit).
5110 SystemExit).
5107
5111
5108 * Created Shell module which exposes the actuall IPython Shell
5112 * Created Shell module which exposes the actuall IPython Shell
5109 classes, currently the normal and the embeddable one. This at
5113 classes, currently the normal and the embeddable one. This at
5110 least offers a stable interface we won't need to change when
5114 least offers a stable interface we won't need to change when
5111 (later) the internals are rewritten. That rewrite will be confined
5115 (later) the internals are rewritten. That rewrite will be confined
5112 to iplib and ipmaker, but the Shell interface should remain as is.
5116 to iplib and ipmaker, but the Shell interface should remain as is.
5113
5117
5114 * Added embed module which offers an embeddable IPShell object,
5118 * Added embed module which offers an embeddable IPShell object,
5115 useful to fire up IPython *inside* a running program. Great for
5119 useful to fire up IPython *inside* a running program. Great for
5116 debugging or dynamical data analysis.
5120 debugging or dynamical data analysis.
5117
5121
5118 2001-12-08 Fernando Perez <fperez@colorado.edu>
5122 2001-12-08 Fernando Perez <fperez@colorado.edu>
5119
5123
5120 * Fixed small bug preventing seeing info from methods of defined
5124 * Fixed small bug preventing seeing info from methods of defined
5121 objects (incorrect namespace in _ofind()).
5125 objects (incorrect namespace in _ofind()).
5122
5126
5123 * Documentation cleanup. Moved the main usage docstrings to a
5127 * Documentation cleanup. Moved the main usage docstrings to a
5124 separate file, usage.py (cleaner to maintain, and hopefully in the
5128 separate file, usage.py (cleaner to maintain, and hopefully in the
5125 future some perlpod-like way of producing interactive, man and
5129 future some perlpod-like way of producing interactive, man and
5126 html docs out of it will be found).
5130 html docs out of it will be found).
5127
5131
5128 * Added @profile to see your profile at any time.
5132 * Added @profile to see your profile at any time.
5129
5133
5130 * Added @p as an alias for 'print'. It's especially convenient if
5134 * Added @p as an alias for 'print'. It's especially convenient if
5131 using automagic ('p x' prints x).
5135 using automagic ('p x' prints x).
5132
5136
5133 * Small cleanups and fixes after a pychecker run.
5137 * Small cleanups and fixes after a pychecker run.
5134
5138
5135 * Changed the @cd command to handle @cd - and @cd -<n> for
5139 * Changed the @cd command to handle @cd - and @cd -<n> for
5136 visiting any directory in _dh.
5140 visiting any directory in _dh.
5137
5141
5138 * Introduced _dh, a history of visited directories. @dhist prints
5142 * Introduced _dh, a history of visited directories. @dhist prints
5139 it out with numbers.
5143 it out with numbers.
5140
5144
5141 2001-12-07 Fernando Perez <fperez@colorado.edu>
5145 2001-12-07 Fernando Perez <fperez@colorado.edu>
5142
5146
5143 * Released 0.1.22
5147 * Released 0.1.22
5144
5148
5145 * Made initialization a bit more robust against invalid color
5149 * Made initialization a bit more robust against invalid color
5146 options in user input (exit, not traceback-crash).
5150 options in user input (exit, not traceback-crash).
5147
5151
5148 * Changed the bug crash reporter to write the report only in the
5152 * Changed the bug crash reporter to write the report only in the
5149 user's .ipython directory. That way IPython won't litter people's
5153 user's .ipython directory. That way IPython won't litter people's
5150 hard disks with crash files all over the place. Also print on
5154 hard disks with crash files all over the place. Also print on
5151 screen the necessary mail command.
5155 screen the necessary mail command.
5152
5156
5153 * With the new ultraTB, implemented LightBG color scheme for light
5157 * With the new ultraTB, implemented LightBG color scheme for light
5154 background terminals. A lot of people like white backgrounds, so I
5158 background terminals. A lot of people like white backgrounds, so I
5155 guess we should at least give them something readable.
5159 guess we should at least give them something readable.
5156
5160
5157 2001-12-06 Fernando Perez <fperez@colorado.edu>
5161 2001-12-06 Fernando Perez <fperez@colorado.edu>
5158
5162
5159 * Modified the structure of ultraTB. Now there's a proper class
5163 * Modified the structure of ultraTB. Now there's a proper class
5160 for tables of color schemes which allow adding schemes easily and
5164 for tables of color schemes which allow adding schemes easily and
5161 switching the active scheme without creating a new instance every
5165 switching the active scheme without creating a new instance every
5162 time (which was ridiculous). The syntax for creating new schemes
5166 time (which was ridiculous). The syntax for creating new schemes
5163 is also cleaner. I think ultraTB is finally done, with a clean
5167 is also cleaner. I think ultraTB is finally done, with a clean
5164 class structure. Names are also much cleaner (now there's proper
5168 class structure. Names are also much cleaner (now there's proper
5165 color tables, no need for every variable to also have 'color' in
5169 color tables, no need for every variable to also have 'color' in
5166 its name).
5170 its name).
5167
5171
5168 * Broke down genutils into separate files. Now genutils only
5172 * Broke down genutils into separate files. Now genutils only
5169 contains utility functions, and classes have been moved to their
5173 contains utility functions, and classes have been moved to their
5170 own files (they had enough independent functionality to warrant
5174 own files (they had enough independent functionality to warrant
5171 it): ConfigLoader, OutputTrap, Struct.
5175 it): ConfigLoader, OutputTrap, Struct.
5172
5176
5173 2001-12-05 Fernando Perez <fperez@colorado.edu>
5177 2001-12-05 Fernando Perez <fperez@colorado.edu>
5174
5178
5175 * IPython turns 21! Released version 0.1.21, as a candidate for
5179 * IPython turns 21! Released version 0.1.21, as a candidate for
5176 public consumption. If all goes well, release in a few days.
5180 public consumption. If all goes well, release in a few days.
5177
5181
5178 * Fixed path bug (files in Extensions/ directory wouldn't be found
5182 * Fixed path bug (files in Extensions/ directory wouldn't be found
5179 unless IPython/ was explicitly in sys.path).
5183 unless IPython/ was explicitly in sys.path).
5180
5184
5181 * Extended the FlexCompleter class as MagicCompleter to allow
5185 * Extended the FlexCompleter class as MagicCompleter to allow
5182 completion of @-starting lines.
5186 completion of @-starting lines.
5183
5187
5184 * Created __release__.py file as a central repository for release
5188 * Created __release__.py file as a central repository for release
5185 info that other files can read from.
5189 info that other files can read from.
5186
5190
5187 * Fixed small bug in logging: when logging was turned on in
5191 * Fixed small bug in logging: when logging was turned on in
5188 mid-session, old lines with special meanings (!@?) were being
5192 mid-session, old lines with special meanings (!@?) were being
5189 logged without the prepended comment, which is necessary since
5193 logged without the prepended comment, which is necessary since
5190 they are not truly valid python syntax. This should make session
5194 they are not truly valid python syntax. This should make session
5191 restores produce less errors.
5195 restores produce less errors.
5192
5196
5193 * The namespace cleanup forced me to make a FlexCompleter class
5197 * The namespace cleanup forced me to make a FlexCompleter class
5194 which is nothing but a ripoff of rlcompleter, but with selectable
5198 which is nothing but a ripoff of rlcompleter, but with selectable
5195 namespace (rlcompleter only works in __main__.__dict__). I'll try
5199 namespace (rlcompleter only works in __main__.__dict__). I'll try
5196 to submit a note to the authors to see if this change can be
5200 to submit a note to the authors to see if this change can be
5197 incorporated in future rlcompleter releases (Dec.6: done)
5201 incorporated in future rlcompleter releases (Dec.6: done)
5198
5202
5199 * More fixes to namespace handling. It was a mess! Now all
5203 * More fixes to namespace handling. It was a mess! Now all
5200 explicit references to __main__.__dict__ are gone (except when
5204 explicit references to __main__.__dict__ are gone (except when
5201 really needed) and everything is handled through the namespace
5205 really needed) and everything is handled through the namespace
5202 dicts in the IPython instance. We seem to be getting somewhere
5206 dicts in the IPython instance. We seem to be getting somewhere
5203 with this, finally...
5207 with this, finally...
5204
5208
5205 * Small documentation updates.
5209 * Small documentation updates.
5206
5210
5207 * Created the Extensions directory under IPython (with an
5211 * Created the Extensions directory under IPython (with an
5208 __init__.py). Put the PhysicalQ stuff there. This directory should
5212 __init__.py). Put the PhysicalQ stuff there. This directory should
5209 be used for all special-purpose extensions.
5213 be used for all special-purpose extensions.
5210
5214
5211 * File renaming:
5215 * File renaming:
5212 ipythonlib --> ipmaker
5216 ipythonlib --> ipmaker
5213 ipplib --> iplib
5217 ipplib --> iplib
5214 This makes a bit more sense in terms of what these files actually do.
5218 This makes a bit more sense in terms of what these files actually do.
5215
5219
5216 * Moved all the classes and functions in ipythonlib to ipplib, so
5220 * Moved all the classes and functions in ipythonlib to ipplib, so
5217 now ipythonlib only has make_IPython(). This will ease up its
5221 now ipythonlib only has make_IPython(). This will ease up its
5218 splitting in smaller functional chunks later.
5222 splitting in smaller functional chunks later.
5219
5223
5220 * Cleaned up (done, I think) output of @whos. Better column
5224 * Cleaned up (done, I think) output of @whos. Better column
5221 formatting, and now shows str(var) for as much as it can, which is
5225 formatting, and now shows str(var) for as much as it can, which is
5222 typically what one gets with a 'print var'.
5226 typically what one gets with a 'print var'.
5223
5227
5224 2001-12-04 Fernando Perez <fperez@colorado.edu>
5228 2001-12-04 Fernando Perez <fperez@colorado.edu>
5225
5229
5226 * Fixed namespace problems. Now builtin/IPyhton/user names get
5230 * Fixed namespace problems. Now builtin/IPyhton/user names get
5227 properly reported in their namespace. Internal namespace handling
5231 properly reported in their namespace. Internal namespace handling
5228 is finally getting decent (not perfect yet, but much better than
5232 is finally getting decent (not perfect yet, but much better than
5229 the ad-hoc mess we had).
5233 the ad-hoc mess we had).
5230
5234
5231 * Removed -exit option. If people just want to run a python
5235 * Removed -exit option. If people just want to run a python
5232 script, that's what the normal interpreter is for. Less
5236 script, that's what the normal interpreter is for. Less
5233 unnecessary options, less chances for bugs.
5237 unnecessary options, less chances for bugs.
5234
5238
5235 * Added a crash handler which generates a complete post-mortem if
5239 * Added a crash handler which generates a complete post-mortem if
5236 IPython crashes. This will help a lot in tracking bugs down the
5240 IPython crashes. This will help a lot in tracking bugs down the
5237 road.
5241 road.
5238
5242
5239 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5243 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5240 which were boud to functions being reassigned would bypass the
5244 which were boud to functions being reassigned would bypass the
5241 logger, breaking the sync of _il with the prompt counter. This
5245 logger, breaking the sync of _il with the prompt counter. This
5242 would then crash IPython later when a new line was logged.
5246 would then crash IPython later when a new line was logged.
5243
5247
5244 2001-12-02 Fernando Perez <fperez@colorado.edu>
5248 2001-12-02 Fernando Perez <fperez@colorado.edu>
5245
5249
5246 * Made IPython a package. This means people don't have to clutter
5250 * Made IPython a package. This means people don't have to clutter
5247 their sys.path with yet another directory. Changed the INSTALL
5251 their sys.path with yet another directory. Changed the INSTALL
5248 file accordingly.
5252 file accordingly.
5249
5253
5250 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5254 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5251 sorts its output (so @who shows it sorted) and @whos formats the
5255 sorts its output (so @who shows it sorted) and @whos formats the
5252 table according to the width of the first column. Nicer, easier to
5256 table according to the width of the first column. Nicer, easier to
5253 read. Todo: write a generic table_format() which takes a list of
5257 read. Todo: write a generic table_format() which takes a list of
5254 lists and prints it nicely formatted, with optional row/column
5258 lists and prints it nicely formatted, with optional row/column
5255 separators and proper padding and justification.
5259 separators and proper padding and justification.
5256
5260
5257 * Released 0.1.20
5261 * Released 0.1.20
5258
5262
5259 * Fixed bug in @log which would reverse the inputcache list (a
5263 * Fixed bug in @log which would reverse the inputcache list (a
5260 copy operation was missing).
5264 copy operation was missing).
5261
5265
5262 * Code cleanup. @config was changed to use page(). Better, since
5266 * Code cleanup. @config was changed to use page(). Better, since
5263 its output is always quite long.
5267 its output is always quite long.
5264
5268
5265 * Itpl is back as a dependency. I was having too many problems
5269 * Itpl is back as a dependency. I was having too many problems
5266 getting the parametric aliases to work reliably, and it's just
5270 getting the parametric aliases to work reliably, and it's just
5267 easier to code weird string operations with it than playing %()s
5271 easier to code weird string operations with it than playing %()s
5268 games. It's only ~6k, so I don't think it's too big a deal.
5272 games. It's only ~6k, so I don't think it's too big a deal.
5269
5273
5270 * Found (and fixed) a very nasty bug with history. !lines weren't
5274 * Found (and fixed) a very nasty bug with history. !lines weren't
5271 getting cached, and the out of sync caches would crash
5275 getting cached, and the out of sync caches would crash
5272 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5276 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5273 division of labor a bit better. Bug fixed, cleaner structure.
5277 division of labor a bit better. Bug fixed, cleaner structure.
5274
5278
5275 2001-12-01 Fernando Perez <fperez@colorado.edu>
5279 2001-12-01 Fernando Perez <fperez@colorado.edu>
5276
5280
5277 * Released 0.1.19
5281 * Released 0.1.19
5278
5282
5279 * Added option -n to @hist to prevent line number printing. Much
5283 * Added option -n to @hist to prevent line number printing. Much
5280 easier to copy/paste code this way.
5284 easier to copy/paste code this way.
5281
5285
5282 * Created global _il to hold the input list. Allows easy
5286 * Created global _il to hold the input list. Allows easy
5283 re-execution of blocks of code by slicing it (inspired by Janko's
5287 re-execution of blocks of code by slicing it (inspired by Janko's
5284 comment on 'macros').
5288 comment on 'macros').
5285
5289
5286 * Small fixes and doc updates.
5290 * Small fixes and doc updates.
5287
5291
5288 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5292 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5289 much too fragile with automagic. Handles properly multi-line
5293 much too fragile with automagic. Handles properly multi-line
5290 statements and takes parameters.
5294 statements and takes parameters.
5291
5295
5292 2001-11-30 Fernando Perez <fperez@colorado.edu>
5296 2001-11-30 Fernando Perez <fperez@colorado.edu>
5293
5297
5294 * Version 0.1.18 released.
5298 * Version 0.1.18 released.
5295
5299
5296 * Fixed nasty namespace bug in initial module imports.
5300 * Fixed nasty namespace bug in initial module imports.
5297
5301
5298 * Added copyright/license notes to all code files (except
5302 * Added copyright/license notes to all code files (except
5299 DPyGetOpt). For the time being, LGPL. That could change.
5303 DPyGetOpt). For the time being, LGPL. That could change.
5300
5304
5301 * Rewrote a much nicer README, updated INSTALL, cleaned up
5305 * Rewrote a much nicer README, updated INSTALL, cleaned up
5302 ipythonrc-* samples.
5306 ipythonrc-* samples.
5303
5307
5304 * Overall code/documentation cleanup. Basically ready for
5308 * Overall code/documentation cleanup. Basically ready for
5305 release. Only remaining thing: licence decision (LGPL?).
5309 release. Only remaining thing: licence decision (LGPL?).
5306
5310
5307 * Converted load_config to a class, ConfigLoader. Now recursion
5311 * Converted load_config to a class, ConfigLoader. Now recursion
5308 control is better organized. Doesn't include the same file twice.
5312 control is better organized. Doesn't include the same file twice.
5309
5313
5310 2001-11-29 Fernando Perez <fperez@colorado.edu>
5314 2001-11-29 Fernando Perez <fperez@colorado.edu>
5311
5315
5312 * Got input history working. Changed output history variables from
5316 * Got input history working. Changed output history variables from
5313 _p to _o so that _i is for input and _o for output. Just cleaner
5317 _p to _o so that _i is for input and _o for output. Just cleaner
5314 convention.
5318 convention.
5315
5319
5316 * Implemented parametric aliases. This pretty much allows the
5320 * Implemented parametric aliases. This pretty much allows the
5317 alias system to offer full-blown shell convenience, I think.
5321 alias system to offer full-blown shell convenience, I think.
5318
5322
5319 * Version 0.1.17 released, 0.1.18 opened.
5323 * Version 0.1.17 released, 0.1.18 opened.
5320
5324
5321 * dot_ipython/ipythonrc (alias): added documentation.
5325 * dot_ipython/ipythonrc (alias): added documentation.
5322 (xcolor): Fixed small bug (xcolors -> xcolor)
5326 (xcolor): Fixed small bug (xcolors -> xcolor)
5323
5327
5324 * Changed the alias system. Now alias is a magic command to define
5328 * Changed the alias system. Now alias is a magic command to define
5325 aliases just like the shell. Rationale: the builtin magics should
5329 aliases just like the shell. Rationale: the builtin magics should
5326 be there for things deeply connected to IPython's
5330 be there for things deeply connected to IPython's
5327 architecture. And this is a much lighter system for what I think
5331 architecture. And this is a much lighter system for what I think
5328 is the really important feature: allowing users to define quickly
5332 is the really important feature: allowing users to define quickly
5329 magics that will do shell things for them, so they can customize
5333 magics that will do shell things for them, so they can customize
5330 IPython easily to match their work habits. If someone is really
5334 IPython easily to match their work habits. If someone is really
5331 desperate to have another name for a builtin alias, they can
5335 desperate to have another name for a builtin alias, they can
5332 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5336 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5333 works.
5337 works.
5334
5338
5335 2001-11-28 Fernando Perez <fperez@colorado.edu>
5339 2001-11-28 Fernando Perez <fperez@colorado.edu>
5336
5340
5337 * Changed @file so that it opens the source file at the proper
5341 * Changed @file so that it opens the source file at the proper
5338 line. Since it uses less, if your EDITOR environment is
5342 line. Since it uses less, if your EDITOR environment is
5339 configured, typing v will immediately open your editor of choice
5343 configured, typing v will immediately open your editor of choice
5340 right at the line where the object is defined. Not as quick as
5344 right at the line where the object is defined. Not as quick as
5341 having a direct @edit command, but for all intents and purposes it
5345 having a direct @edit command, but for all intents and purposes it
5342 works. And I don't have to worry about writing @edit to deal with
5346 works. And I don't have to worry about writing @edit to deal with
5343 all the editors, less does that.
5347 all the editors, less does that.
5344
5348
5345 * Version 0.1.16 released, 0.1.17 opened.
5349 * Version 0.1.16 released, 0.1.17 opened.
5346
5350
5347 * Fixed some nasty bugs in the page/page_dumb combo that could
5351 * Fixed some nasty bugs in the page/page_dumb combo that could
5348 crash IPython.
5352 crash IPython.
5349
5353
5350 2001-11-27 Fernando Perez <fperez@colorado.edu>
5354 2001-11-27 Fernando Perez <fperez@colorado.edu>
5351
5355
5352 * Version 0.1.15 released, 0.1.16 opened.
5356 * Version 0.1.15 released, 0.1.16 opened.
5353
5357
5354 * Finally got ? and ?? to work for undefined things: now it's
5358 * Finally got ? and ?? to work for undefined things: now it's
5355 possible to type {}.get? and get information about the get method
5359 possible to type {}.get? and get information about the get method
5356 of dicts, or os.path? even if only os is defined (so technically
5360 of dicts, or os.path? even if only os is defined (so technically
5357 os.path isn't). Works at any level. For example, after import os,
5361 os.path isn't). Works at any level. For example, after import os,
5358 os?, os.path?, os.path.abspath? all work. This is great, took some
5362 os?, os.path?, os.path.abspath? all work. This is great, took some
5359 work in _ofind.
5363 work in _ofind.
5360
5364
5361 * Fixed more bugs with logging. The sanest way to do it was to add
5365 * Fixed more bugs with logging. The sanest way to do it was to add
5362 to @log a 'mode' parameter. Killed two in one shot (this mode
5366 to @log a 'mode' parameter. Killed two in one shot (this mode
5363 option was a request of Janko's). I think it's finally clean
5367 option was a request of Janko's). I think it's finally clean
5364 (famous last words).
5368 (famous last words).
5365
5369
5366 * Added a page_dumb() pager which does a decent job of paging on
5370 * Added a page_dumb() pager which does a decent job of paging on
5367 screen, if better things (like less) aren't available. One less
5371 screen, if better things (like less) aren't available. One less
5368 unix dependency (someday maybe somebody will port this to
5372 unix dependency (someday maybe somebody will port this to
5369 windows).
5373 windows).
5370
5374
5371 * Fixed problem in magic_log: would lock of logging out if log
5375 * Fixed problem in magic_log: would lock of logging out if log
5372 creation failed (because it would still think it had succeeded).
5376 creation failed (because it would still think it had succeeded).
5373
5377
5374 * Improved the page() function using curses to auto-detect screen
5378 * Improved the page() function using curses to auto-detect screen
5375 size. Now it can make a much better decision on whether to print
5379 size. Now it can make a much better decision on whether to print
5376 or page a string. Option screen_length was modified: a value 0
5380 or page a string. Option screen_length was modified: a value 0
5377 means auto-detect, and that's the default now.
5381 means auto-detect, and that's the default now.
5378
5382
5379 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5383 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5380 go out. I'll test it for a few days, then talk to Janko about
5384 go out. I'll test it for a few days, then talk to Janko about
5381 licences and announce it.
5385 licences and announce it.
5382
5386
5383 * Fixed the length of the auto-generated ---> prompt which appears
5387 * Fixed the length of the auto-generated ---> prompt which appears
5384 for auto-parens and auto-quotes. Getting this right isn't trivial,
5388 for auto-parens and auto-quotes. Getting this right isn't trivial,
5385 with all the color escapes, different prompt types and optional
5389 with all the color escapes, different prompt types and optional
5386 separators. But it seems to be working in all the combinations.
5390 separators. But it seems to be working in all the combinations.
5387
5391
5388 2001-11-26 Fernando Perez <fperez@colorado.edu>
5392 2001-11-26 Fernando Perez <fperez@colorado.edu>
5389
5393
5390 * Wrote a regexp filter to get option types from the option names
5394 * Wrote a regexp filter to get option types from the option names
5391 string. This eliminates the need to manually keep two duplicate
5395 string. This eliminates the need to manually keep two duplicate
5392 lists.
5396 lists.
5393
5397
5394 * Removed the unneeded check_option_names. Now options are handled
5398 * Removed the unneeded check_option_names. Now options are handled
5395 in a much saner manner and it's easy to visually check that things
5399 in a much saner manner and it's easy to visually check that things
5396 are ok.
5400 are ok.
5397
5401
5398 * Updated version numbers on all files I modified to carry a
5402 * Updated version numbers on all files I modified to carry a
5399 notice so Janko and Nathan have clear version markers.
5403 notice so Janko and Nathan have clear version markers.
5400
5404
5401 * Updated docstring for ultraTB with my changes. I should send
5405 * Updated docstring for ultraTB with my changes. I should send
5402 this to Nathan.
5406 this to Nathan.
5403
5407
5404 * Lots of small fixes. Ran everything through pychecker again.
5408 * Lots of small fixes. Ran everything through pychecker again.
5405
5409
5406 * Made loading of deep_reload an cmd line option. If it's not too
5410 * Made loading of deep_reload an cmd line option. If it's not too
5407 kosher, now people can just disable it. With -nodeep_reload it's
5411 kosher, now people can just disable it. With -nodeep_reload it's
5408 still available as dreload(), it just won't overwrite reload().
5412 still available as dreload(), it just won't overwrite reload().
5409
5413
5410 * Moved many options to the no| form (-opt and -noopt
5414 * Moved many options to the no| form (-opt and -noopt
5411 accepted). Cleaner.
5415 accepted). Cleaner.
5412
5416
5413 * Changed magic_log so that if called with no parameters, it uses
5417 * Changed magic_log so that if called with no parameters, it uses
5414 'rotate' mode. That way auto-generated logs aren't automatically
5418 'rotate' mode. That way auto-generated logs aren't automatically
5415 over-written. For normal logs, now a backup is made if it exists
5419 over-written. For normal logs, now a backup is made if it exists
5416 (only 1 level of backups). A new 'backup' mode was added to the
5420 (only 1 level of backups). A new 'backup' mode was added to the
5417 Logger class to support this. This was a request by Janko.
5421 Logger class to support this. This was a request by Janko.
5418
5422
5419 * Added @logoff/@logon to stop/restart an active log.
5423 * Added @logoff/@logon to stop/restart an active log.
5420
5424
5421 * Fixed a lot of bugs in log saving/replay. It was pretty
5425 * Fixed a lot of bugs in log saving/replay. It was pretty
5422 broken. Now special lines (!@,/) appear properly in the command
5426 broken. Now special lines (!@,/) appear properly in the command
5423 history after a log replay.
5427 history after a log replay.
5424
5428
5425 * Tried and failed to implement full session saving via pickle. My
5429 * Tried and failed to implement full session saving via pickle. My
5426 idea was to pickle __main__.__dict__, but modules can't be
5430 idea was to pickle __main__.__dict__, but modules can't be
5427 pickled. This would be a better alternative to replaying logs, but
5431 pickled. This would be a better alternative to replaying logs, but
5428 seems quite tricky to get to work. Changed -session to be called
5432 seems quite tricky to get to work. Changed -session to be called
5429 -logplay, which more accurately reflects what it does. And if we
5433 -logplay, which more accurately reflects what it does. And if we
5430 ever get real session saving working, -session is now available.
5434 ever get real session saving working, -session is now available.
5431
5435
5432 * Implemented color schemes for prompts also. As for tracebacks,
5436 * Implemented color schemes for prompts also. As for tracebacks,
5433 currently only NoColor and Linux are supported. But now the
5437 currently only NoColor and Linux are supported. But now the
5434 infrastructure is in place, based on a generic ColorScheme
5438 infrastructure is in place, based on a generic ColorScheme
5435 class. So writing and activating new schemes both for the prompts
5439 class. So writing and activating new schemes both for the prompts
5436 and the tracebacks should be straightforward.
5440 and the tracebacks should be straightforward.
5437
5441
5438 * Version 0.1.13 released, 0.1.14 opened.
5442 * Version 0.1.13 released, 0.1.14 opened.
5439
5443
5440 * Changed handling of options for output cache. Now counter is
5444 * Changed handling of options for output cache. Now counter is
5441 hardwired starting at 1 and one specifies the maximum number of
5445 hardwired starting at 1 and one specifies the maximum number of
5442 entries *in the outcache* (not the max prompt counter). This is
5446 entries *in the outcache* (not the max prompt counter). This is
5443 much better, since many statements won't increase the cache
5447 much better, since many statements won't increase the cache
5444 count. It also eliminated some confusing options, now there's only
5448 count. It also eliminated some confusing options, now there's only
5445 one: cache_size.
5449 one: cache_size.
5446
5450
5447 * Added 'alias' magic function and magic_alias option in the
5451 * Added 'alias' magic function and magic_alias option in the
5448 ipythonrc file. Now the user can easily define whatever names he
5452 ipythonrc file. Now the user can easily define whatever names he
5449 wants for the magic functions without having to play weird
5453 wants for the magic functions without having to play weird
5450 namespace games. This gives IPython a real shell-like feel.
5454 namespace games. This gives IPython a real shell-like feel.
5451
5455
5452 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5456 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5453 @ or not).
5457 @ or not).
5454
5458
5455 This was one of the last remaining 'visible' bugs (that I know
5459 This was one of the last remaining 'visible' bugs (that I know
5456 of). I think if I can clean up the session loading so it works
5460 of). I think if I can clean up the session loading so it works
5457 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5461 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5458 about licensing).
5462 about licensing).
5459
5463
5460 2001-11-25 Fernando Perez <fperez@colorado.edu>
5464 2001-11-25 Fernando Perez <fperez@colorado.edu>
5461
5465
5462 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5466 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5463 there's a cleaner distinction between what ? and ?? show.
5467 there's a cleaner distinction between what ? and ?? show.
5464
5468
5465 * Added screen_length option. Now the user can define his own
5469 * Added screen_length option. Now the user can define his own
5466 screen size for page() operations.
5470 screen size for page() operations.
5467
5471
5468 * Implemented magic shell-like functions with automatic code
5472 * Implemented magic shell-like functions with automatic code
5469 generation. Now adding another function is just a matter of adding
5473 generation. Now adding another function is just a matter of adding
5470 an entry to a dict, and the function is dynamically generated at
5474 an entry to a dict, and the function is dynamically generated at
5471 run-time. Python has some really cool features!
5475 run-time. Python has some really cool features!
5472
5476
5473 * Renamed many options to cleanup conventions a little. Now all
5477 * Renamed many options to cleanup conventions a little. Now all
5474 are lowercase, and only underscores where needed. Also in the code
5478 are lowercase, and only underscores where needed. Also in the code
5475 option name tables are clearer.
5479 option name tables are clearer.
5476
5480
5477 * Changed prompts a little. Now input is 'In [n]:' instead of
5481 * Changed prompts a little. Now input is 'In [n]:' instead of
5478 'In[n]:='. This allows it the numbers to be aligned with the
5482 'In[n]:='. This allows it the numbers to be aligned with the
5479 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5483 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5480 Python (it was a Mathematica thing). The '...' continuation prompt
5484 Python (it was a Mathematica thing). The '...' continuation prompt
5481 was also changed a little to align better.
5485 was also changed a little to align better.
5482
5486
5483 * Fixed bug when flushing output cache. Not all _p<n> variables
5487 * Fixed bug when flushing output cache. Not all _p<n> variables
5484 exist, so their deletion needs to be wrapped in a try:
5488 exist, so their deletion needs to be wrapped in a try:
5485
5489
5486 * Figured out how to properly use inspect.formatargspec() (it
5490 * Figured out how to properly use inspect.formatargspec() (it
5487 requires the args preceded by *). So I removed all the code from
5491 requires the args preceded by *). So I removed all the code from
5488 _get_pdef in Magic, which was just replicating that.
5492 _get_pdef in Magic, which was just replicating that.
5489
5493
5490 * Added test to prefilter to allow redefining magic function names
5494 * Added test to prefilter to allow redefining magic function names
5491 as variables. This is ok, since the @ form is always available,
5495 as variables. This is ok, since the @ form is always available,
5492 but whe should allow the user to define a variable called 'ls' if
5496 but whe should allow the user to define a variable called 'ls' if
5493 he needs it.
5497 he needs it.
5494
5498
5495 * Moved the ToDo information from README into a separate ToDo.
5499 * Moved the ToDo information from README into a separate ToDo.
5496
5500
5497 * General code cleanup and small bugfixes. I think it's close to a
5501 * General code cleanup and small bugfixes. I think it's close to a
5498 state where it can be released, obviously with a big 'beta'
5502 state where it can be released, obviously with a big 'beta'
5499 warning on it.
5503 warning on it.
5500
5504
5501 * Got the magic function split to work. Now all magics are defined
5505 * Got the magic function split to work. Now all magics are defined
5502 in a separate class. It just organizes things a bit, and now
5506 in a separate class. It just organizes things a bit, and now
5503 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5507 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5504 was too long).
5508 was too long).
5505
5509
5506 * Changed @clear to @reset to avoid potential confusions with
5510 * Changed @clear to @reset to avoid potential confusions with
5507 the shell command clear. Also renamed @cl to @clear, which does
5511 the shell command clear. Also renamed @cl to @clear, which does
5508 exactly what people expect it to from their shell experience.
5512 exactly what people expect it to from their shell experience.
5509
5513
5510 Added a check to the @reset command (since it's so
5514 Added a check to the @reset command (since it's so
5511 destructive, it's probably a good idea to ask for confirmation).
5515 destructive, it's probably a good idea to ask for confirmation).
5512 But now reset only works for full namespace resetting. Since the
5516 But now reset only works for full namespace resetting. Since the
5513 del keyword is already there for deleting a few specific
5517 del keyword is already there for deleting a few specific
5514 variables, I don't see the point of having a redundant magic
5518 variables, I don't see the point of having a redundant magic
5515 function for the same task.
5519 function for the same task.
5516
5520
5517 2001-11-24 Fernando Perez <fperez@colorado.edu>
5521 2001-11-24 Fernando Perez <fperez@colorado.edu>
5518
5522
5519 * Updated the builtin docs (esp. the ? ones).
5523 * Updated the builtin docs (esp. the ? ones).
5520
5524
5521 * Ran all the code through pychecker. Not terribly impressed with
5525 * Ran all the code through pychecker. Not terribly impressed with
5522 it: lots of spurious warnings and didn't really find anything of
5526 it: lots of spurious warnings and didn't really find anything of
5523 substance (just a few modules being imported and not used).
5527 substance (just a few modules being imported and not used).
5524
5528
5525 * Implemented the new ultraTB functionality into IPython. New
5529 * Implemented the new ultraTB functionality into IPython. New
5526 option: xcolors. This chooses color scheme. xmode now only selects
5530 option: xcolors. This chooses color scheme. xmode now only selects
5527 between Plain and Verbose. Better orthogonality.
5531 between Plain and Verbose. Better orthogonality.
5528
5532
5529 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5533 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5530 mode and color scheme for the exception handlers. Now it's
5534 mode and color scheme for the exception handlers. Now it's
5531 possible to have the verbose traceback with no coloring.
5535 possible to have the verbose traceback with no coloring.
5532
5536
5533 2001-11-23 Fernando Perez <fperez@colorado.edu>
5537 2001-11-23 Fernando Perez <fperez@colorado.edu>
5534
5538
5535 * Version 0.1.12 released, 0.1.13 opened.
5539 * Version 0.1.12 released, 0.1.13 opened.
5536
5540
5537 * Removed option to set auto-quote and auto-paren escapes by
5541 * Removed option to set auto-quote and auto-paren escapes by
5538 user. The chances of breaking valid syntax are just too high. If
5542 user. The chances of breaking valid syntax are just too high. If
5539 someone *really* wants, they can always dig into the code.
5543 someone *really* wants, they can always dig into the code.
5540
5544
5541 * Made prompt separators configurable.
5545 * Made prompt separators configurable.
5542
5546
5543 2001-11-22 Fernando Perez <fperez@colorado.edu>
5547 2001-11-22 Fernando Perez <fperez@colorado.edu>
5544
5548
5545 * Small bugfixes in many places.
5549 * Small bugfixes in many places.
5546
5550
5547 * Removed the MyCompleter class from ipplib. It seemed redundant
5551 * Removed the MyCompleter class from ipplib. It seemed redundant
5548 with the C-p,C-n history search functionality. Less code to
5552 with the C-p,C-n history search functionality. Less code to
5549 maintain.
5553 maintain.
5550
5554
5551 * Moved all the original ipython.py code into ipythonlib.py. Right
5555 * Moved all the original ipython.py code into ipythonlib.py. Right
5552 now it's just one big dump into a function called make_IPython, so
5556 now it's just one big dump into a function called make_IPython, so
5553 no real modularity has been gained. But at least it makes the
5557 no real modularity has been gained. But at least it makes the
5554 wrapper script tiny, and since ipythonlib is a module, it gets
5558 wrapper script tiny, and since ipythonlib is a module, it gets
5555 compiled and startup is much faster.
5559 compiled and startup is much faster.
5556
5560
5557 This is a reasobably 'deep' change, so we should test it for a
5561 This is a reasobably 'deep' change, so we should test it for a
5558 while without messing too much more with the code.
5562 while without messing too much more with the code.
5559
5563
5560 2001-11-21 Fernando Perez <fperez@colorado.edu>
5564 2001-11-21 Fernando Perez <fperez@colorado.edu>
5561
5565
5562 * Version 0.1.11 released, 0.1.12 opened for further work.
5566 * Version 0.1.11 released, 0.1.12 opened for further work.
5563
5567
5564 * Removed dependency on Itpl. It was only needed in one place. It
5568 * Removed dependency on Itpl. It was only needed in one place. It
5565 would be nice if this became part of python, though. It makes life
5569 would be nice if this became part of python, though. It makes life
5566 *a lot* easier in some cases.
5570 *a lot* easier in some cases.
5567
5571
5568 * Simplified the prefilter code a bit. Now all handlers are
5572 * Simplified the prefilter code a bit. Now all handlers are
5569 expected to explicitly return a value (at least a blank string).
5573 expected to explicitly return a value (at least a blank string).
5570
5574
5571 * Heavy edits in ipplib. Removed the help system altogether. Now
5575 * Heavy edits in ipplib. Removed the help system altogether. Now
5572 obj?/?? is used for inspecting objects, a magic @doc prints
5576 obj?/?? is used for inspecting objects, a magic @doc prints
5573 docstrings, and full-blown Python help is accessed via the 'help'
5577 docstrings, and full-blown Python help is accessed via the 'help'
5574 keyword. This cleans up a lot of code (less to maintain) and does
5578 keyword. This cleans up a lot of code (less to maintain) and does
5575 the job. Since 'help' is now a standard Python component, might as
5579 the job. Since 'help' is now a standard Python component, might as
5576 well use it and remove duplicate functionality.
5580 well use it and remove duplicate functionality.
5577
5581
5578 Also removed the option to use ipplib as a standalone program. By
5582 Also removed the option to use ipplib as a standalone program. By
5579 now it's too dependent on other parts of IPython to function alone.
5583 now it's too dependent on other parts of IPython to function alone.
5580
5584
5581 * Fixed bug in genutils.pager. It would crash if the pager was
5585 * Fixed bug in genutils.pager. It would crash if the pager was
5582 exited immediately after opening (broken pipe).
5586 exited immediately after opening (broken pipe).
5583
5587
5584 * Trimmed down the VerboseTB reporting a little. The header is
5588 * Trimmed down the VerboseTB reporting a little. The header is
5585 much shorter now and the repeated exception arguments at the end
5589 much shorter now and the repeated exception arguments at the end
5586 have been removed. For interactive use the old header seemed a bit
5590 have been removed. For interactive use the old header seemed a bit
5587 excessive.
5591 excessive.
5588
5592
5589 * Fixed small bug in output of @whos for variables with multi-word
5593 * Fixed small bug in output of @whos for variables with multi-word
5590 types (only first word was displayed).
5594 types (only first word was displayed).
5591
5595
5592 2001-11-17 Fernando Perez <fperez@colorado.edu>
5596 2001-11-17 Fernando Perez <fperez@colorado.edu>
5593
5597
5594 * Version 0.1.10 released, 0.1.11 opened for further work.
5598 * Version 0.1.10 released, 0.1.11 opened for further work.
5595
5599
5596 * Modified dirs and friends. dirs now *returns* the stack (not
5600 * Modified dirs and friends. dirs now *returns* the stack (not
5597 prints), so one can manipulate it as a variable. Convenient to
5601 prints), so one can manipulate it as a variable. Convenient to
5598 travel along many directories.
5602 travel along many directories.
5599
5603
5600 * Fixed bug in magic_pdef: would only work with functions with
5604 * Fixed bug in magic_pdef: would only work with functions with
5601 arguments with default values.
5605 arguments with default values.
5602
5606
5603 2001-11-14 Fernando Perez <fperez@colorado.edu>
5607 2001-11-14 Fernando Perez <fperez@colorado.edu>
5604
5608
5605 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5609 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5606 example with IPython. Various other minor fixes and cleanups.
5610 example with IPython. Various other minor fixes and cleanups.
5607
5611
5608 * Version 0.1.9 released, 0.1.10 opened for further work.
5612 * Version 0.1.9 released, 0.1.10 opened for further work.
5609
5613
5610 * Added sys.path to the list of directories searched in the
5614 * Added sys.path to the list of directories searched in the
5611 execfile= option. It used to be the current directory and the
5615 execfile= option. It used to be the current directory and the
5612 user's IPYTHONDIR only.
5616 user's IPYTHONDIR only.
5613
5617
5614 2001-11-13 Fernando Perez <fperez@colorado.edu>
5618 2001-11-13 Fernando Perez <fperez@colorado.edu>
5615
5619
5616 * Reinstated the raw_input/prefilter separation that Janko had
5620 * Reinstated the raw_input/prefilter separation that Janko had
5617 initially. This gives a more convenient setup for extending the
5621 initially. This gives a more convenient setup for extending the
5618 pre-processor from the outside: raw_input always gets a string,
5622 pre-processor from the outside: raw_input always gets a string,
5619 and prefilter has to process it. We can then redefine prefilter
5623 and prefilter has to process it. We can then redefine prefilter
5620 from the outside and implement extensions for special
5624 from the outside and implement extensions for special
5621 purposes.
5625 purposes.
5622
5626
5623 Today I got one for inputting PhysicalQuantity objects
5627 Today I got one for inputting PhysicalQuantity objects
5624 (from Scientific) without needing any function calls at
5628 (from Scientific) without needing any function calls at
5625 all. Extremely convenient, and it's all done as a user-level
5629 all. Extremely convenient, and it's all done as a user-level
5626 extension (no IPython code was touched). Now instead of:
5630 extension (no IPython code was touched). Now instead of:
5627 a = PhysicalQuantity(4.2,'m/s**2')
5631 a = PhysicalQuantity(4.2,'m/s**2')
5628 one can simply say
5632 one can simply say
5629 a = 4.2 m/s**2
5633 a = 4.2 m/s**2
5630 or even
5634 or even
5631 a = 4.2 m/s^2
5635 a = 4.2 m/s^2
5632
5636
5633 I use this, but it's also a proof of concept: IPython really is
5637 I use this, but it's also a proof of concept: IPython really is
5634 fully user-extensible, even at the level of the parsing of the
5638 fully user-extensible, even at the level of the parsing of the
5635 command line. It's not trivial, but it's perfectly doable.
5639 command line. It's not trivial, but it's perfectly doable.
5636
5640
5637 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5641 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5638 the problem of modules being loaded in the inverse order in which
5642 the problem of modules being loaded in the inverse order in which
5639 they were defined in
5643 they were defined in
5640
5644
5641 * Version 0.1.8 released, 0.1.9 opened for further work.
5645 * Version 0.1.8 released, 0.1.9 opened for further work.
5642
5646
5643 * Added magics pdef, source and file. They respectively show the
5647 * Added magics pdef, source and file. They respectively show the
5644 definition line ('prototype' in C), source code and full python
5648 definition line ('prototype' in C), source code and full python
5645 file for any callable object. The object inspector oinfo uses
5649 file for any callable object. The object inspector oinfo uses
5646 these to show the same information.
5650 these to show the same information.
5647
5651
5648 * Version 0.1.7 released, 0.1.8 opened for further work.
5652 * Version 0.1.7 released, 0.1.8 opened for further work.
5649
5653
5650 * Separated all the magic functions into a class called Magic. The
5654 * Separated all the magic functions into a class called Magic. The
5651 InteractiveShell class was becoming too big for Xemacs to handle
5655 InteractiveShell class was becoming too big for Xemacs to handle
5652 (de-indenting a line would lock it up for 10 seconds while it
5656 (de-indenting a line would lock it up for 10 seconds while it
5653 backtracked on the whole class!)
5657 backtracked on the whole class!)
5654
5658
5655 FIXME: didn't work. It can be done, but right now namespaces are
5659 FIXME: didn't work. It can be done, but right now namespaces are
5656 all messed up. Do it later (reverted it for now, so at least
5660 all messed up. Do it later (reverted it for now, so at least
5657 everything works as before).
5661 everything works as before).
5658
5662
5659 * Got the object introspection system (magic_oinfo) working! I
5663 * Got the object introspection system (magic_oinfo) working! I
5660 think this is pretty much ready for release to Janko, so he can
5664 think this is pretty much ready for release to Janko, so he can
5661 test it for a while and then announce it. Pretty much 100% of what
5665 test it for a while and then announce it. Pretty much 100% of what
5662 I wanted for the 'phase 1' release is ready. Happy, tired.
5666 I wanted for the 'phase 1' release is ready. Happy, tired.
5663
5667
5664 2001-11-12 Fernando Perez <fperez@colorado.edu>
5668 2001-11-12 Fernando Perez <fperez@colorado.edu>
5665
5669
5666 * Version 0.1.6 released, 0.1.7 opened for further work.
5670 * Version 0.1.6 released, 0.1.7 opened for further work.
5667
5671
5668 * Fixed bug in printing: it used to test for truth before
5672 * Fixed bug in printing: it used to test for truth before
5669 printing, so 0 wouldn't print. Now checks for None.
5673 printing, so 0 wouldn't print. Now checks for None.
5670
5674
5671 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5675 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5672 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5676 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5673 reaches by hand into the outputcache. Think of a better way to do
5677 reaches by hand into the outputcache. Think of a better way to do
5674 this later.
5678 this later.
5675
5679
5676 * Various small fixes thanks to Nathan's comments.
5680 * Various small fixes thanks to Nathan's comments.
5677
5681
5678 * Changed magic_pprint to magic_Pprint. This way it doesn't
5682 * Changed magic_pprint to magic_Pprint. This way it doesn't
5679 collide with pprint() and the name is consistent with the command
5683 collide with pprint() and the name is consistent with the command
5680 line option.
5684 line option.
5681
5685
5682 * Changed prompt counter behavior to be fully like
5686 * Changed prompt counter behavior to be fully like
5683 Mathematica's. That is, even input that doesn't return a result
5687 Mathematica's. That is, even input that doesn't return a result
5684 raises the prompt counter. The old behavior was kind of confusing
5688 raises the prompt counter. The old behavior was kind of confusing
5685 (getting the same prompt number several times if the operation
5689 (getting the same prompt number several times if the operation
5686 didn't return a result).
5690 didn't return a result).
5687
5691
5688 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5692 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5689
5693
5690 * Fixed -Classic mode (wasn't working anymore).
5694 * Fixed -Classic mode (wasn't working anymore).
5691
5695
5692 * Added colored prompts using Nathan's new code. Colors are
5696 * Added colored prompts using Nathan's new code. Colors are
5693 currently hardwired, they can be user-configurable. For
5697 currently hardwired, they can be user-configurable. For
5694 developers, they can be chosen in file ipythonlib.py, at the
5698 developers, they can be chosen in file ipythonlib.py, at the
5695 beginning of the CachedOutput class def.
5699 beginning of the CachedOutput class def.
5696
5700
5697 2001-11-11 Fernando Perez <fperez@colorado.edu>
5701 2001-11-11 Fernando Perez <fperez@colorado.edu>
5698
5702
5699 * Version 0.1.5 released, 0.1.6 opened for further work.
5703 * Version 0.1.5 released, 0.1.6 opened for further work.
5700
5704
5701 * Changed magic_env to *return* the environment as a dict (not to
5705 * Changed magic_env to *return* the environment as a dict (not to
5702 print it). This way it prints, but it can also be processed.
5706 print it). This way it prints, but it can also be processed.
5703
5707
5704 * Added Verbose exception reporting to interactive
5708 * Added Verbose exception reporting to interactive
5705 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5709 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5706 traceback. Had to make some changes to the ultraTB file. This is
5710 traceback. Had to make some changes to the ultraTB file. This is
5707 probably the last 'big' thing in my mental todo list. This ties
5711 probably the last 'big' thing in my mental todo list. This ties
5708 in with the next entry:
5712 in with the next entry:
5709
5713
5710 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5714 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5711 has to specify is Plain, Color or Verbose for all exception
5715 has to specify is Plain, Color or Verbose for all exception
5712 handling.
5716 handling.
5713
5717
5714 * Removed ShellServices option. All this can really be done via
5718 * Removed ShellServices option. All this can really be done via
5715 the magic system. It's easier to extend, cleaner and has automatic
5719 the magic system. It's easier to extend, cleaner and has automatic
5716 namespace protection and documentation.
5720 namespace protection and documentation.
5717
5721
5718 2001-11-09 Fernando Perez <fperez@colorado.edu>
5722 2001-11-09 Fernando Perez <fperez@colorado.edu>
5719
5723
5720 * Fixed bug in output cache flushing (missing parameter to
5724 * Fixed bug in output cache flushing (missing parameter to
5721 __init__). Other small bugs fixed (found using pychecker).
5725 __init__). Other small bugs fixed (found using pychecker).
5722
5726
5723 * Version 0.1.4 opened for bugfixing.
5727 * Version 0.1.4 opened for bugfixing.
5724
5728
5725 2001-11-07 Fernando Perez <fperez@colorado.edu>
5729 2001-11-07 Fernando Perez <fperez@colorado.edu>
5726
5730
5727 * Version 0.1.3 released, mainly because of the raw_input bug.
5731 * Version 0.1.3 released, mainly because of the raw_input bug.
5728
5732
5729 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5733 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5730 and when testing for whether things were callable, a call could
5734 and when testing for whether things were callable, a call could
5731 actually be made to certain functions. They would get called again
5735 actually be made to certain functions. They would get called again
5732 once 'really' executed, with a resulting double call. A disaster
5736 once 'really' executed, with a resulting double call. A disaster
5733 in many cases (list.reverse() would never work!).
5737 in many cases (list.reverse() would never work!).
5734
5738
5735 * Removed prefilter() function, moved its code to raw_input (which
5739 * Removed prefilter() function, moved its code to raw_input (which
5736 after all was just a near-empty caller for prefilter). This saves
5740 after all was just a near-empty caller for prefilter). This saves
5737 a function call on every prompt, and simplifies the class a tiny bit.
5741 a function call on every prompt, and simplifies the class a tiny bit.
5738
5742
5739 * Fix _ip to __ip name in magic example file.
5743 * Fix _ip to __ip name in magic example file.
5740
5744
5741 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5745 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5742 work with non-gnu versions of tar.
5746 work with non-gnu versions of tar.
5743
5747
5744 2001-11-06 Fernando Perez <fperez@colorado.edu>
5748 2001-11-06 Fernando Perez <fperez@colorado.edu>
5745
5749
5746 * Version 0.1.2. Just to keep track of the recent changes.
5750 * Version 0.1.2. Just to keep track of the recent changes.
5747
5751
5748 * Fixed nasty bug in output prompt routine. It used to check 'if
5752 * Fixed nasty bug in output prompt routine. It used to check 'if
5749 arg != None...'. Problem is, this fails if arg implements a
5753 arg != None...'. Problem is, this fails if arg implements a
5750 special comparison (__cmp__) which disallows comparing to
5754 special comparison (__cmp__) which disallows comparing to
5751 None. Found it when trying to use the PhysicalQuantity module from
5755 None. Found it when trying to use the PhysicalQuantity module from
5752 ScientificPython.
5756 ScientificPython.
5753
5757
5754 2001-11-05 Fernando Perez <fperez@colorado.edu>
5758 2001-11-05 Fernando Perez <fperez@colorado.edu>
5755
5759
5756 * Also added dirs. Now the pushd/popd/dirs family functions
5760 * Also added dirs. Now the pushd/popd/dirs family functions
5757 basically like the shell, with the added convenience of going home
5761 basically like the shell, with the added convenience of going home
5758 when called with no args.
5762 when called with no args.
5759
5763
5760 * pushd/popd slightly modified to mimic shell behavior more
5764 * pushd/popd slightly modified to mimic shell behavior more
5761 closely.
5765 closely.
5762
5766
5763 * Added env,pushd,popd from ShellServices as magic functions. I
5767 * Added env,pushd,popd from ShellServices as magic functions. I
5764 think the cleanest will be to port all desired functions from
5768 think the cleanest will be to port all desired functions from
5765 ShellServices as magics and remove ShellServices altogether. This
5769 ShellServices as magics and remove ShellServices altogether. This
5766 will provide a single, clean way of adding functionality
5770 will provide a single, clean way of adding functionality
5767 (shell-type or otherwise) to IP.
5771 (shell-type or otherwise) to IP.
5768
5772
5769 2001-11-04 Fernando Perez <fperez@colorado.edu>
5773 2001-11-04 Fernando Perez <fperez@colorado.edu>
5770
5774
5771 * Added .ipython/ directory to sys.path. This way users can keep
5775 * Added .ipython/ directory to sys.path. This way users can keep
5772 customizations there and access them via import.
5776 customizations there and access them via import.
5773
5777
5774 2001-11-03 Fernando Perez <fperez@colorado.edu>
5778 2001-11-03 Fernando Perez <fperez@colorado.edu>
5775
5779
5776 * Opened version 0.1.1 for new changes.
5780 * Opened version 0.1.1 for new changes.
5777
5781
5778 * Changed version number to 0.1.0: first 'public' release, sent to
5782 * Changed version number to 0.1.0: first 'public' release, sent to
5779 Nathan and Janko.
5783 Nathan and Janko.
5780
5784
5781 * Lots of small fixes and tweaks.
5785 * Lots of small fixes and tweaks.
5782
5786
5783 * Minor changes to whos format. Now strings are shown, snipped if
5787 * Minor changes to whos format. Now strings are shown, snipped if
5784 too long.
5788 too long.
5785
5789
5786 * Changed ShellServices to work on __main__ so they show up in @who
5790 * Changed ShellServices to work on __main__ so they show up in @who
5787
5791
5788 * Help also works with ? at the end of a line:
5792 * Help also works with ? at the end of a line:
5789 ?sin and sin?
5793 ?sin and sin?
5790 both produce the same effect. This is nice, as often I use the
5794 both produce the same effect. This is nice, as often I use the
5791 tab-complete to find the name of a method, but I used to then have
5795 tab-complete to find the name of a method, but I used to then have
5792 to go to the beginning of the line to put a ? if I wanted more
5796 to go to the beginning of the line to put a ? if I wanted more
5793 info. Now I can just add the ? and hit return. Convenient.
5797 info. Now I can just add the ? and hit return. Convenient.
5794
5798
5795 2001-11-02 Fernando Perez <fperez@colorado.edu>
5799 2001-11-02 Fernando Perez <fperez@colorado.edu>
5796
5800
5797 * Python version check (>=2.1) added.
5801 * Python version check (>=2.1) added.
5798
5802
5799 * Added LazyPython documentation. At this point the docs are quite
5803 * Added LazyPython documentation. At this point the docs are quite
5800 a mess. A cleanup is in order.
5804 a mess. A cleanup is in order.
5801
5805
5802 * Auto-installer created. For some bizarre reason, the zipfiles
5806 * Auto-installer created. For some bizarre reason, the zipfiles
5803 module isn't working on my system. So I made a tar version
5807 module isn't working on my system. So I made a tar version
5804 (hopefully the command line options in various systems won't kill
5808 (hopefully the command line options in various systems won't kill
5805 me).
5809 me).
5806
5810
5807 * Fixes to Struct in genutils. Now all dictionary-like methods are
5811 * Fixes to Struct in genutils. Now all dictionary-like methods are
5808 protected (reasonably).
5812 protected (reasonably).
5809
5813
5810 * Added pager function to genutils and changed ? to print usage
5814 * Added pager function to genutils and changed ? to print usage
5811 note through it (it was too long).
5815 note through it (it was too long).
5812
5816
5813 * Added the LazyPython functionality. Works great! I changed the
5817 * Added the LazyPython functionality. Works great! I changed the
5814 auto-quote escape to ';', it's on home row and next to '. But
5818 auto-quote escape to ';', it's on home row and next to '. But
5815 both auto-quote and auto-paren (still /) escapes are command-line
5819 both auto-quote and auto-paren (still /) escapes are command-line
5816 parameters.
5820 parameters.
5817
5821
5818
5822
5819 2001-11-01 Fernando Perez <fperez@colorado.edu>
5823 2001-11-01 Fernando Perez <fperez@colorado.edu>
5820
5824
5821 * Version changed to 0.0.7. Fairly large change: configuration now
5825 * Version changed to 0.0.7. Fairly large change: configuration now
5822 is all stored in a directory, by default .ipython. There, all
5826 is all stored in a directory, by default .ipython. There, all
5823 config files have normal looking names (not .names)
5827 config files have normal looking names (not .names)
5824
5828
5825 * Version 0.0.6 Released first to Lucas and Archie as a test
5829 * Version 0.0.6 Released first to Lucas and Archie as a test
5826 run. Since it's the first 'semi-public' release, change version to
5830 run. Since it's the first 'semi-public' release, change version to
5827 > 0.0.6 for any changes now.
5831 > 0.0.6 for any changes now.
5828
5832
5829 * Stuff I had put in the ipplib.py changelog:
5833 * Stuff I had put in the ipplib.py changelog:
5830
5834
5831 Changes to InteractiveShell:
5835 Changes to InteractiveShell:
5832
5836
5833 - Made the usage message a parameter.
5837 - Made the usage message a parameter.
5834
5838
5835 - Require the name of the shell variable to be given. It's a bit
5839 - Require the name of the shell variable to be given. It's a bit
5836 of a hack, but allows the name 'shell' not to be hardwired in the
5840 of a hack, but allows the name 'shell' not to be hardwired in the
5837 magic (@) handler, which is problematic b/c it requires
5841 magic (@) handler, which is problematic b/c it requires
5838 polluting the global namespace with 'shell'. This in turn is
5842 polluting the global namespace with 'shell'. This in turn is
5839 fragile: if a user redefines a variable called shell, things
5843 fragile: if a user redefines a variable called shell, things
5840 break.
5844 break.
5841
5845
5842 - magic @: all functions available through @ need to be defined
5846 - magic @: all functions available through @ need to be defined
5843 as magic_<name>, even though they can be called simply as
5847 as magic_<name>, even though they can be called simply as
5844 @<name>. This allows the special command @magic to gather
5848 @<name>. This allows the special command @magic to gather
5845 information automatically about all existing magic functions,
5849 information automatically about all existing magic functions,
5846 even if they are run-time user extensions, by parsing the shell
5850 even if they are run-time user extensions, by parsing the shell
5847 instance __dict__ looking for special magic_ names.
5851 instance __dict__ looking for special magic_ names.
5848
5852
5849 - mainloop: added *two* local namespace parameters. This allows
5853 - mainloop: added *two* local namespace parameters. This allows
5850 the class to differentiate between parameters which were there
5854 the class to differentiate between parameters which were there
5851 before and after command line initialization was processed. This
5855 before and after command line initialization was processed. This
5852 way, later @who can show things loaded at startup by the
5856 way, later @who can show things loaded at startup by the
5853 user. This trick was necessary to make session saving/reloading
5857 user. This trick was necessary to make session saving/reloading
5854 really work: ideally after saving/exiting/reloading a session,
5858 really work: ideally after saving/exiting/reloading a session,
5855 *everything* should look the same, including the output of @who. I
5859 *everything* should look the same, including the output of @who. I
5856 was only able to make this work with this double namespace
5860 was only able to make this work with this double namespace
5857 trick.
5861 trick.
5858
5862
5859 - added a header to the logfile which allows (almost) full
5863 - added a header to the logfile which allows (almost) full
5860 session restoring.
5864 session restoring.
5861
5865
5862 - prepend lines beginning with @ or !, with a and log
5866 - prepend lines beginning with @ or !, with a and log
5863 them. Why? !lines: may be useful to know what you did @lines:
5867 them. Why? !lines: may be useful to know what you did @lines:
5864 they may affect session state. So when restoring a session, at
5868 they may affect session state. So when restoring a session, at
5865 least inform the user of their presence. I couldn't quite get
5869 least inform the user of their presence. I couldn't quite get
5866 them to properly re-execute, but at least the user is warned.
5870 them to properly re-execute, but at least the user is warned.
5867
5871
5868 * Started ChangeLog.
5872 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now