##// END OF EJS Templates
Fix namespace handling for magics and shell escapes in function definitions.
fptest -
Show More
@@ -1,2475 +1,2489 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 1874 2006-11-03 08:17:34Z fptest $
9 $Id: iplib.py 1878 2006-11-03 23:00:22Z fptest $
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
464 self.var_expand = lambda cmd: str(ItplNS(cmd.replace('#','\#'),
465 self.user_ns))
466 # The first is similar to os.system, but it doesn't return a value,
463 # 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.
464 # and it allows interpolation of variables in the user's namespace.
468 self.system = lambda cmd: shell(self.var_expand(cmd),
465 self.system = lambda cmd: \
469 header='IPython system call: ',
466 shell(self.var_expand(cmd,depth=2),
470 verbose=self.rc.system_verbose)
467 header='IPython system call: ',
468 verbose=self.rc.system_verbose)
471 # These are for getoutput and getoutputerror:
469 # These are for getoutput and getoutputerror:
472 self.getoutput = lambda cmd: \
470 self.getoutput = lambda cmd: \
473 getoutput(self.var_expand(cmd),
471 getoutput(self.var_expand(cmd,depth=2),
474 header='IPython system call: ',
472 header='IPython system call: ',
475 verbose=self.rc.system_verbose)
473 verbose=self.rc.system_verbose)
476 self.getoutputerror = lambda cmd: \
474 self.getoutputerror = lambda cmd: \
477 getoutputerror(self.var_expand(cmd),
475 getoutputerror(self.var_expand(cmd,depth=2),
478 header='IPython system call: ',
476 header='IPython system call: ',
479 verbose=self.rc.system_verbose)
477 verbose=self.rc.system_verbose)
480
478
481 # RegExp for splitting line contents into pre-char//first
479 # RegExp for splitting line contents into pre-char//first
482 # word-method//rest. For clarity, each group in on one line.
480 # word-method//rest. For clarity, each group in on one line.
483
481
484 # WARNING: update the regexp if the above escapes are changed, as they
482 # WARNING: update the regexp if the above escapes are changed, as they
485 # are hardwired in.
483 # are hardwired in.
486
484
487 # Don't get carried away with trying to make the autocalling catch too
485 # 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
486 # much: it's better to be conservative rather than to trigger hidden
489 # evals() somewhere and end up causing side effects.
487 # evals() somewhere and end up causing side effects.
490
488
491 self.line_split = re.compile(r'^([\s*,;/])'
489 self.line_split = re.compile(r'^([\s*,;/])'
492 r'([\?\w\.]+\w*\s*)'
490 r'([\?\w\.]+\w*\s*)'
493 r'(\(?.*$)')
491 r'(\(?.*$)')
494
492
495 # Original re, keep around for a while in case changes break something
493 # Original re, keep around for a while in case changes break something
496 #self.line_split = re.compile(r'(^[\s*!\?%,/]?)'
494 #self.line_split = re.compile(r'(^[\s*!\?%,/]?)'
497 # r'(\s*[\?\w\.]+\w*\s*)'
495 # r'(\s*[\?\w\.]+\w*\s*)'
498 # r'(\(?.*$)')
496 # r'(\(?.*$)')
499
497
500 # RegExp to identify potential function names
498 # RegExp to identify potential function names
501 self.re_fun_name = re.compile(r'[a-zA-Z_]([a-zA-Z0-9_.]*) *$')
499 self.re_fun_name = re.compile(r'[a-zA-Z_]([a-zA-Z0-9_.]*) *$')
502
500
503 # RegExp to exclude strings with this start from autocalling. In
501 # RegExp to exclude strings with this start from autocalling. In
504 # particular, all binary operators should be excluded, so that if foo
502 # 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
503 # 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
504 # invalid. The characters '!=()' don't need to be checked for, as the
507 # _prefilter routine explicitely does so, to catch direct calls and
505 # _prefilter routine explicitely does so, to catch direct calls and
508 # rebindings of existing names.
506 # rebindings of existing names.
509
507
510 # Warning: the '-' HAS TO BE AT THE END of the first group, otherwise
508 # Warning: the '-' HAS TO BE AT THE END of the first group, otherwise
511 # it affects the rest of the group in square brackets.
509 # it affects the rest of the group in square brackets.
512 self.re_exclude_auto = re.compile(r'^[<>,&^\|\*/\+-]'
510 self.re_exclude_auto = re.compile(r'^[<>,&^\|\*/\+-]'
513 '|^is |^not |^in |^and |^or ')
511 '|^is |^not |^in |^and |^or ')
514
512
515 # try to catch also methods for stuff in lists/tuples/dicts: off
513 # try to catch also methods for stuff in lists/tuples/dicts: off
516 # (experimental). For this to work, the line_split regexp would need
514 # (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
515 # 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_.
516 # 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_.\[\]]*) ?$')
517 #self.re_fun_name = re.compile (r'[a-zA-Z_]([a-zA-Z0-9_.\[\]]*) ?$')
520
518
521 # keep track of where we started running (mainly for crash post-mortem)
519 # keep track of where we started running (mainly for crash post-mortem)
522 self.starting_dir = os.getcwd()
520 self.starting_dir = os.getcwd()
523
521
524 # Various switches which can be set
522 # Various switches which can be set
525 self.CACHELENGTH = 5000 # this is cheap, it's just text
523 self.CACHELENGTH = 5000 # this is cheap, it's just text
526 self.BANNER = "Python %(version)s on %(platform)s\n" % sys.__dict__
524 self.BANNER = "Python %(version)s on %(platform)s\n" % sys.__dict__
527 self.banner2 = banner2
525 self.banner2 = banner2
528
526
529 # TraceBack handlers:
527 # TraceBack handlers:
530
528
531 # Syntax error handler.
529 # Syntax error handler.
532 self.SyntaxTB = SyntaxTB(color_scheme='NoColor')
530 self.SyntaxTB = SyntaxTB(color_scheme='NoColor')
533
531
534 # The interactive one is initialized with an offset, meaning we always
532 # 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
533 # want to remove the topmost item in the traceback, which is our own
536 # internal code. Valid modes: ['Plain','Context','Verbose']
534 # internal code. Valid modes: ['Plain','Context','Verbose']
537 self.InteractiveTB = ultraTB.AutoFormattedTB(mode = 'Plain',
535 self.InteractiveTB = ultraTB.AutoFormattedTB(mode = 'Plain',
538 color_scheme='NoColor',
536 color_scheme='NoColor',
539 tb_offset = 1)
537 tb_offset = 1)
540
538
541 # IPython itself shouldn't crash. This will produce a detailed
539 # IPython itself shouldn't crash. This will produce a detailed
542 # post-mortem if it does. But we only install the crash handler for
540 # 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
541 # non-threaded shells, the threaded ones use a normal verbose reporter
544 # and lose the crash handler. This is because exceptions in the main
542 # and lose the crash handler. This is because exceptions in the main
545 # thread (such as in GUI code) propagate directly to sys.excepthook,
543 # 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.
544 # and there's no point in printing crash dumps for every user exception.
547 if self.isthreaded:
545 if self.isthreaded:
548 ipCrashHandler = ultraTB.FormattedTB()
546 ipCrashHandler = ultraTB.FormattedTB()
549 else:
547 else:
550 from IPython import CrashHandler
548 from IPython import CrashHandler
551 ipCrashHandler = CrashHandler.IPythonCrashHandler(self)
549 ipCrashHandler = CrashHandler.IPythonCrashHandler(self)
552 self.set_crash_handler(ipCrashHandler)
550 self.set_crash_handler(ipCrashHandler)
553
551
554 # and add any custom exception handlers the user may have specified
552 # and add any custom exception handlers the user may have specified
555 self.set_custom_exc(*custom_exceptions)
553 self.set_custom_exc(*custom_exceptions)
556
554
557 # indentation management
555 # indentation management
558 self.autoindent = False
556 self.autoindent = False
559 self.indent_current_nsp = 0
557 self.indent_current_nsp = 0
560
558
561 # Make some aliases automatically
559 # Make some aliases automatically
562 # Prepare list of shell aliases to auto-define
560 # Prepare list of shell aliases to auto-define
563 if os.name == 'posix':
561 if os.name == 'posix':
564 auto_alias = ('mkdir mkdir', 'rmdir rmdir',
562 auto_alias = ('mkdir mkdir', 'rmdir rmdir',
565 'mv mv -i','rm rm -i','cp cp -i',
563 'mv mv -i','rm rm -i','cp cp -i',
566 'cat cat','less less','clear clear',
564 'cat cat','less less','clear clear',
567 # a better ls
565 # a better ls
568 'ls ls -F',
566 'ls ls -F',
569 # long ls
567 # long ls
570 'll ls -lF')
568 'll ls -lF')
571 # Extra ls aliases with color, which need special treatment on BSD
569 # Extra ls aliases with color, which need special treatment on BSD
572 # variants
570 # variants
573 ls_extra = ( # color ls
571 ls_extra = ( # color ls
574 'lc ls -F -o --color',
572 'lc ls -F -o --color',
575 # ls normal files only
573 # ls normal files only
576 'lf ls -F -o --color %l | grep ^-',
574 'lf ls -F -o --color %l | grep ^-',
577 # ls symbolic links
575 # ls symbolic links
578 'lk ls -F -o --color %l | grep ^l',
576 'lk ls -F -o --color %l | grep ^l',
579 # directories or links to directories,
577 # directories or links to directories,
580 'ldir ls -F -o --color %l | grep /$',
578 'ldir ls -F -o --color %l | grep /$',
581 # things which are executable
579 # things which are executable
582 'lx ls -F -o --color %l | grep ^-..x',
580 'lx ls -F -o --color %l | grep ^-..x',
583 )
581 )
584 # The BSDs don't ship GNU ls, so they don't understand the
582 # The BSDs don't ship GNU ls, so they don't understand the
585 # --color switch out of the box
583 # --color switch out of the box
586 if 'bsd' in sys.platform:
584 if 'bsd' in sys.platform:
587 ls_extra = ( # ls normal files only
585 ls_extra = ( # ls normal files only
588 'lf ls -lF | grep ^-',
586 'lf ls -lF | grep ^-',
589 # ls symbolic links
587 # ls symbolic links
590 'lk ls -lF | grep ^l',
588 'lk ls -lF | grep ^l',
591 # directories or links to directories,
589 # directories or links to directories,
592 'ldir ls -lF | grep /$',
590 'ldir ls -lF | grep /$',
593 # things which are executable
591 # things which are executable
594 'lx ls -lF | grep ^-..x',
592 'lx ls -lF | grep ^-..x',
595 )
593 )
596 auto_alias = auto_alias + ls_extra
594 auto_alias = auto_alias + ls_extra
597 elif os.name in ['nt','dos']:
595 elif os.name in ['nt','dos']:
598 auto_alias = ('dir dir /on', 'ls dir /on',
596 auto_alias = ('dir dir /on', 'ls dir /on',
599 'ddir dir /ad /on', 'ldir dir /ad /on',
597 'ddir dir /ad /on', 'ldir dir /ad /on',
600 'mkdir mkdir','rmdir rmdir','echo echo',
598 'mkdir mkdir','rmdir rmdir','echo echo',
601 'ren ren','cls cls','copy copy')
599 'ren ren','cls cls','copy copy')
602 else:
600 else:
603 auto_alias = ()
601 auto_alias = ()
604 self.auto_alias = [s.split(None,1) for s in auto_alias]
602 self.auto_alias = [s.split(None,1) for s in auto_alias]
605 # Call the actual (public) initializer
603 # Call the actual (public) initializer
606 self.init_auto_alias()
604 self.init_auto_alias()
607
605
608 # Produce a public API instance
606 # Produce a public API instance
609 self.api = IPython.ipapi.IPApi(self)
607 self.api = IPython.ipapi.IPApi(self)
610
608
611 # track which builtins we add, so we can clean up later
609 # track which builtins we add, so we can clean up later
612 self.builtins_added = {}
610 self.builtins_added = {}
613 # This method will add the necessary builtins for operation, but
611 # This method will add the necessary builtins for operation, but
614 # tracking what it did via the builtins_added dict.
612 # tracking what it did via the builtins_added dict.
615 self.add_builtins()
613 self.add_builtins()
616
614
617 # end __init__
615 # end __init__
618
616
617 def var_expand(self,cmd,depth=0):
618 """Expand python variables in a string.
619
620 The depth argument indicates how many frames above the caller should
621 be walked to look for the local namespace where to expand variables.
622
623 The global namespace for expansion is always the user's interactive
624 namespace.
625 """
626
627 return str(ItplNS(cmd.replace('#','\#'),
628 self.user_ns, # globals
629 # Skip our own frame in searching for locals:
630 sys._getframe(depth+1).f_locals # locals
631 ))
632
619 def pre_config_initialization(self):
633 def pre_config_initialization(self):
620 """Pre-configuration init method
634 """Pre-configuration init method
621
635
622 This is called before the configuration files are processed to
636 This is called before the configuration files are processed to
623 prepare the services the config files might need.
637 prepare the services the config files might need.
624
638
625 self.rc already has reasonable default values at this point.
639 self.rc already has reasonable default values at this point.
626 """
640 """
627 rc = self.rc
641 rc = self.rc
628
642
629 self.db = pickleshare.PickleShareDB(rc.ipythondir + "/db")
643 self.db = pickleshare.PickleShareDB(rc.ipythondir + "/db")
630
644
631 def post_config_initialization(self):
645 def post_config_initialization(self):
632 """Post configuration init method
646 """Post configuration init method
633
647
634 This is called after the configuration files have been processed to
648 This is called after the configuration files have been processed to
635 'finalize' the initialization."""
649 'finalize' the initialization."""
636
650
637 rc = self.rc
651 rc = self.rc
638
652
639 # Object inspector
653 # Object inspector
640 self.inspector = OInspect.Inspector(OInspect.InspectColors,
654 self.inspector = OInspect.Inspector(OInspect.InspectColors,
641 PyColorize.ANSICodeColors,
655 PyColorize.ANSICodeColors,
642 'NoColor',
656 'NoColor',
643 rc.object_info_string_level)
657 rc.object_info_string_level)
644
658
645 # Load readline proper
659 # Load readline proper
646 if rc.readline:
660 if rc.readline:
647 self.init_readline()
661 self.init_readline()
648
662
649 # local shortcut, this is used a LOT
663 # local shortcut, this is used a LOT
650 self.log = self.logger.log
664 self.log = self.logger.log
651
665
652 # Initialize cache, set in/out prompts and printing system
666 # Initialize cache, set in/out prompts and printing system
653 self.outputcache = CachedOutput(self,
667 self.outputcache = CachedOutput(self,
654 rc.cache_size,
668 rc.cache_size,
655 rc.pprint,
669 rc.pprint,
656 input_sep = rc.separate_in,
670 input_sep = rc.separate_in,
657 output_sep = rc.separate_out,
671 output_sep = rc.separate_out,
658 output_sep2 = rc.separate_out2,
672 output_sep2 = rc.separate_out2,
659 ps1 = rc.prompt_in1,
673 ps1 = rc.prompt_in1,
660 ps2 = rc.prompt_in2,
674 ps2 = rc.prompt_in2,
661 ps_out = rc.prompt_out,
675 ps_out = rc.prompt_out,
662 pad_left = rc.prompts_pad_left)
676 pad_left = rc.prompts_pad_left)
663
677
664 # user may have over-ridden the default print hook:
678 # user may have over-ridden the default print hook:
665 try:
679 try:
666 self.outputcache.__class__.display = self.hooks.display
680 self.outputcache.__class__.display = self.hooks.display
667 except AttributeError:
681 except AttributeError:
668 pass
682 pass
669
683
670 # I don't like assigning globally to sys, because it means when
684 # I don't like assigning globally to sys, because it means when
671 # embedding instances, each embedded instance overrides the previous
685 # embedding instances, each embedded instance overrides the previous
672 # choice. But sys.displayhook seems to be called internally by exec,
686 # 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
687 # so I don't see a way around it. We first save the original and then
674 # overwrite it.
688 # overwrite it.
675 self.sys_displayhook = sys.displayhook
689 self.sys_displayhook = sys.displayhook
676 sys.displayhook = self.outputcache
690 sys.displayhook = self.outputcache
677
691
678 # Set user colors (don't do it in the constructor above so that it
692 # Set user colors (don't do it in the constructor above so that it
679 # doesn't crash if colors option is invalid)
693 # doesn't crash if colors option is invalid)
680 self.magic_colors(rc.colors)
694 self.magic_colors(rc.colors)
681
695
682 # Set calling of pdb on exceptions
696 # Set calling of pdb on exceptions
683 self.call_pdb = rc.pdb
697 self.call_pdb = rc.pdb
684
698
685 # Load user aliases
699 # Load user aliases
686 for alias in rc.alias:
700 for alias in rc.alias:
687 self.magic_alias(alias)
701 self.magic_alias(alias)
688 self.hooks.late_startup_hook()
702 self.hooks.late_startup_hook()
689
703
690 batchrun = False
704 batchrun = False
691 for batchfile in [path(arg) for arg in self.rc.args
705 for batchfile in [path(arg) for arg in self.rc.args
692 if arg.lower().endswith('.ipy')]:
706 if arg.lower().endswith('.ipy')]:
693 if not batchfile.isfile():
707 if not batchfile.isfile():
694 print "No such batch file:", batchfile
708 print "No such batch file:", batchfile
695 continue
709 continue
696 self.api.runlines(batchfile.text())
710 self.api.runlines(batchfile.text())
697 batchrun = True
711 batchrun = True
698 if batchrun:
712 if batchrun:
699 self.exit_now = True
713 self.exit_now = True
700
714
701 def add_builtins(self):
715 def add_builtins(self):
702 """Store ipython references into the builtin namespace.
716 """Store ipython references into the builtin namespace.
703
717
704 Some parts of ipython operate via builtins injected here, which hold a
718 Some parts of ipython operate via builtins injected here, which hold a
705 reference to IPython itself."""
719 reference to IPython itself."""
706
720
707 # TODO: deprecate all except _ip; 'jobs' should be installed
721 # TODO: deprecate all except _ip; 'jobs' should be installed
708 # by an extension and the rest are under _ip, ipalias is redundant
722 # by an extension and the rest are under _ip, ipalias is redundant
709 builtins_new = dict(__IPYTHON__ = self,
723 builtins_new = dict(__IPYTHON__ = self,
710 ip_set_hook = self.set_hook,
724 ip_set_hook = self.set_hook,
711 jobs = self.jobs,
725 jobs = self.jobs,
712 ipmagic = self.ipmagic,
726 ipmagic = self.ipmagic,
713 ipalias = self.ipalias,
727 ipalias = self.ipalias,
714 ipsystem = self.ipsystem,
728 ipsystem = self.ipsystem,
715 _ip = self.api
729 _ip = self.api
716 )
730 )
717 for biname,bival in builtins_new.items():
731 for biname,bival in builtins_new.items():
718 try:
732 try:
719 # store the orignal value so we can restore it
733 # store the orignal value so we can restore it
720 self.builtins_added[biname] = __builtin__.__dict__[biname]
734 self.builtins_added[biname] = __builtin__.__dict__[biname]
721 except KeyError:
735 except KeyError:
722 # or mark that it wasn't defined, and we'll just delete it at
736 # or mark that it wasn't defined, and we'll just delete it at
723 # cleanup
737 # cleanup
724 self.builtins_added[biname] = Undefined
738 self.builtins_added[biname] = Undefined
725 __builtin__.__dict__[biname] = bival
739 __builtin__.__dict__[biname] = bival
726
740
727 # Keep in the builtins a flag for when IPython is active. We set it
741 # 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
742 # with setdefault so that multiple nested IPythons don't clobber one
729 # another. Each will increase its value by one upon being activated,
743 # another. Each will increase its value by one upon being activated,
730 # which also gives us a way to determine the nesting level.
744 # which also gives us a way to determine the nesting level.
731 __builtin__.__dict__.setdefault('__IPYTHON__active',0)
745 __builtin__.__dict__.setdefault('__IPYTHON__active',0)
732
746
733 def clean_builtins(self):
747 def clean_builtins(self):
734 """Remove any builtins which might have been added by add_builtins, or
748 """Remove any builtins which might have been added by add_builtins, or
735 restore overwritten ones to their previous values."""
749 restore overwritten ones to their previous values."""
736 for biname,bival in self.builtins_added.items():
750 for biname,bival in self.builtins_added.items():
737 if bival is Undefined:
751 if bival is Undefined:
738 del __builtin__.__dict__[biname]
752 del __builtin__.__dict__[biname]
739 else:
753 else:
740 __builtin__.__dict__[biname] = bival
754 __builtin__.__dict__[biname] = bival
741 self.builtins_added.clear()
755 self.builtins_added.clear()
742
756
743 def set_hook(self,name,hook, priority = 50, str_key = None, re_key = None):
757 def set_hook(self,name,hook, priority = 50, str_key = None, re_key = None):
744 """set_hook(name,hook) -> sets an internal IPython hook.
758 """set_hook(name,hook) -> sets an internal IPython hook.
745
759
746 IPython exposes some of its internal API as user-modifiable hooks. By
760 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
761 adding your function to one of these hooks, you can modify IPython's
748 behavior to call at runtime your own routines."""
762 behavior to call at runtime your own routines."""
749
763
750 # At some point in the future, this should validate the hook before it
764 # 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
765 # accepts it. Probably at least check that the hook takes the number
752 # of args it's supposed to.
766 # of args it's supposed to.
753
767
754 f = new.instancemethod(hook,self,self.__class__)
768 f = new.instancemethod(hook,self,self.__class__)
755
769
756 # check if the hook is for strdispatcher first
770 # check if the hook is for strdispatcher first
757 if str_key is not None:
771 if str_key is not None:
758 sdp = self.strdispatchers.get(name, StrDispatch())
772 sdp = self.strdispatchers.get(name, StrDispatch())
759 sdp.add_s(str_key, f, priority )
773 sdp.add_s(str_key, f, priority )
760 self.strdispatchers[name] = sdp
774 self.strdispatchers[name] = sdp
761 return
775 return
762 if re_key is not None:
776 if re_key is not None:
763 sdp = self.strdispatchers.get(name, StrDispatch())
777 sdp = self.strdispatchers.get(name, StrDispatch())
764 sdp.add_re(re.compile(re_key), f, priority )
778 sdp.add_re(re.compile(re_key), f, priority )
765 self.strdispatchers[name] = sdp
779 self.strdispatchers[name] = sdp
766 return
780 return
767
781
768 dp = getattr(self.hooks, name, None)
782 dp = getattr(self.hooks, name, None)
769 if name not in IPython.hooks.__all__:
783 if name not in IPython.hooks.__all__:
770 print "Warning! Hook '%s' is not one of %s" % (name, IPython.hooks.__all__ )
784 print "Warning! Hook '%s' is not one of %s" % (name, IPython.hooks.__all__ )
771 if not dp:
785 if not dp:
772 dp = IPython.hooks.CommandChainDispatcher()
786 dp = IPython.hooks.CommandChainDispatcher()
773
787
774 try:
788 try:
775 dp.add(f,priority)
789 dp.add(f,priority)
776 except AttributeError:
790 except AttributeError:
777 # it was not commandchain, plain old func - replace
791 # it was not commandchain, plain old func - replace
778 dp = f
792 dp = f
779
793
780 setattr(self.hooks,name, dp)
794 setattr(self.hooks,name, dp)
781
795
782
796
783 #setattr(self.hooks,name,new.instancemethod(hook,self,self.__class__))
797 #setattr(self.hooks,name,new.instancemethod(hook,self,self.__class__))
784
798
785 def set_crash_handler(self,crashHandler):
799 def set_crash_handler(self,crashHandler):
786 """Set the IPython crash handler.
800 """Set the IPython crash handler.
787
801
788 This must be a callable with a signature suitable for use as
802 This must be a callable with a signature suitable for use as
789 sys.excepthook."""
803 sys.excepthook."""
790
804
791 # Install the given crash handler as the Python exception hook
805 # Install the given crash handler as the Python exception hook
792 sys.excepthook = crashHandler
806 sys.excepthook = crashHandler
793
807
794 # The instance will store a pointer to this, so that runtime code
808 # The instance will store a pointer to this, so that runtime code
795 # (such as magics) can access it. This is because during the
809 # (such as magics) can access it. This is because during the
796 # read-eval loop, it gets temporarily overwritten (to deal with GUI
810 # read-eval loop, it gets temporarily overwritten (to deal with GUI
797 # frameworks).
811 # frameworks).
798 self.sys_excepthook = sys.excepthook
812 self.sys_excepthook = sys.excepthook
799
813
800
814
801 def set_custom_exc(self,exc_tuple,handler):
815 def set_custom_exc(self,exc_tuple,handler):
802 """set_custom_exc(exc_tuple,handler)
816 """set_custom_exc(exc_tuple,handler)
803
817
804 Set a custom exception handler, which will be called if any of the
818 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
819 exceptions in exc_tuple occur in the mainloop (specifically, in the
806 runcode() method.
820 runcode() method.
807
821
808 Inputs:
822 Inputs:
809
823
810 - exc_tuple: a *tuple* of valid exceptions to call the defined
824 - 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
825 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
826 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:
827 you only want to trap a single exception, use a singleton tuple:
814
828
815 exc_tuple == (MyCustomException,)
829 exc_tuple == (MyCustomException,)
816
830
817 - handler: this must be defined as a function with the following
831 - handler: this must be defined as a function with the following
818 basic interface: def my_handler(self,etype,value,tb).
832 basic interface: def my_handler(self,etype,value,tb).
819
833
820 This will be made into an instance method (via new.instancemethod)
834 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
835 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
836 listed in the exc_tuple are caught. If the handler is None, an
823 internal basic one is used, which just prints basic info.
837 internal basic one is used, which just prints basic info.
824
838
825 WARNING: by putting in your own exception handler into IPython's main
839 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
840 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."""
841 facility should only be used if you really know what you are doing."""
828
842
829 assert type(exc_tuple)==type(()) , \
843 assert type(exc_tuple)==type(()) , \
830 "The custom exceptions must be given AS A TUPLE."
844 "The custom exceptions must be given AS A TUPLE."
831
845
832 def dummy_handler(self,etype,value,tb):
846 def dummy_handler(self,etype,value,tb):
833 print '*** Simple custom exception handler ***'
847 print '*** Simple custom exception handler ***'
834 print 'Exception type :',etype
848 print 'Exception type :',etype
835 print 'Exception value:',value
849 print 'Exception value:',value
836 print 'Traceback :',tb
850 print 'Traceback :',tb
837 print 'Source code :','\n'.join(self.buffer)
851 print 'Source code :','\n'.join(self.buffer)
838
852
839 if handler is None: handler = dummy_handler
853 if handler is None: handler = dummy_handler
840
854
841 self.CustomTB = new.instancemethod(handler,self,self.__class__)
855 self.CustomTB = new.instancemethod(handler,self,self.__class__)
842 self.custom_exceptions = exc_tuple
856 self.custom_exceptions = exc_tuple
843
857
844 def set_custom_completer(self,completer,pos=0):
858 def set_custom_completer(self,completer,pos=0):
845 """set_custom_completer(completer,pos=0)
859 """set_custom_completer(completer,pos=0)
846
860
847 Adds a new custom completer function.
861 Adds a new custom completer function.
848
862
849 The position argument (defaults to 0) is the index in the completers
863 The position argument (defaults to 0) is the index in the completers
850 list where you want the completer to be inserted."""
864 list where you want the completer to be inserted."""
851
865
852 newcomp = new.instancemethod(completer,self.Completer,
866 newcomp = new.instancemethod(completer,self.Completer,
853 self.Completer.__class__)
867 self.Completer.__class__)
854 self.Completer.matchers.insert(pos,newcomp)
868 self.Completer.matchers.insert(pos,newcomp)
855
869
856 def _get_call_pdb(self):
870 def _get_call_pdb(self):
857 return self._call_pdb
871 return self._call_pdb
858
872
859 def _set_call_pdb(self,val):
873 def _set_call_pdb(self,val):
860
874
861 if val not in (0,1,False,True):
875 if val not in (0,1,False,True):
862 raise ValueError,'new call_pdb value must be boolean'
876 raise ValueError,'new call_pdb value must be boolean'
863
877
864 # store value in instance
878 # store value in instance
865 self._call_pdb = val
879 self._call_pdb = val
866
880
867 # notify the actual exception handlers
881 # notify the actual exception handlers
868 self.InteractiveTB.call_pdb = val
882 self.InteractiveTB.call_pdb = val
869 if self.isthreaded:
883 if self.isthreaded:
870 try:
884 try:
871 self.sys_excepthook.call_pdb = val
885 self.sys_excepthook.call_pdb = val
872 except:
886 except:
873 warn('Failed to activate pdb for threaded exception handler')
887 warn('Failed to activate pdb for threaded exception handler')
874
888
875 call_pdb = property(_get_call_pdb,_set_call_pdb,None,
889 call_pdb = property(_get_call_pdb,_set_call_pdb,None,
876 'Control auto-activation of pdb at exceptions')
890 'Control auto-activation of pdb at exceptions')
877
891
878
892
879 # These special functions get installed in the builtin namespace, to
893 # These special functions get installed in the builtin namespace, to
880 # provide programmatic (pure python) access to magics, aliases and system
894 # provide programmatic (pure python) access to magics, aliases and system
881 # calls. This is important for logging, user scripting, and more.
895 # calls. This is important for logging, user scripting, and more.
882
896
883 # We are basically exposing, via normal python functions, the three
897 # We are basically exposing, via normal python functions, the three
884 # mechanisms in which ipython offers special call modes (magics for
898 # mechanisms in which ipython offers special call modes (magics for
885 # internal control, aliases for direct system access via pre-selected
899 # internal control, aliases for direct system access via pre-selected
886 # names, and !cmd for calling arbitrary system commands).
900 # names, and !cmd for calling arbitrary system commands).
887
901
888 def ipmagic(self,arg_s):
902 def ipmagic(self,arg_s):
889 """Call a magic function by name.
903 """Call a magic function by name.
890
904
891 Input: a string containing the name of the magic function to call and any
905 Input: a string containing the name of the magic function to call and any
892 additional arguments to be passed to the magic.
906 additional arguments to be passed to the magic.
893
907
894 ipmagic('name -opt foo bar') is equivalent to typing at the ipython
908 ipmagic('name -opt foo bar') is equivalent to typing at the ipython
895 prompt:
909 prompt:
896
910
897 In[1]: %name -opt foo bar
911 In[1]: %name -opt foo bar
898
912
899 To call a magic without arguments, simply use ipmagic('name').
913 To call a magic without arguments, simply use ipmagic('name').
900
914
901 This provides a proper Python function to call IPython's magics in any
915 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
916 valid Python code you can type at the interpreter, including loops and
903 compound statements. It is added by IPython to the Python builtin
917 compound statements. It is added by IPython to the Python builtin
904 namespace upon initialization."""
918 namespace upon initialization."""
905
919
906 args = arg_s.split(' ',1)
920 args = arg_s.split(' ',1)
907 magic_name = args[0]
921 magic_name = args[0]
908 magic_name = magic_name.lstrip(self.ESC_MAGIC)
922 magic_name = magic_name.lstrip(self.ESC_MAGIC)
909
923
910 try:
924 try:
911 magic_args = args[1]
925 magic_args = args[1]
912 except IndexError:
926 except IndexError:
913 magic_args = ''
927 magic_args = ''
914 fn = getattr(self,'magic_'+magic_name,None)
928 fn = getattr(self,'magic_'+magic_name,None)
915 if fn is None:
929 if fn is None:
916 error("Magic function `%s` not found." % magic_name)
930 error("Magic function `%s` not found." % magic_name)
917 else:
931 else:
918 magic_args = self.var_expand(magic_args)
932 magic_args = self.var_expand(magic_args,1)
919 return fn(magic_args)
933 return fn(magic_args)
920
934
921 def ipalias(self,arg_s):
935 def ipalias(self,arg_s):
922 """Call an alias by name.
936 """Call an alias by name.
923
937
924 Input: a string containing the name of the alias to call and any
938 Input: a string containing the name of the alias to call and any
925 additional arguments to be passed to the magic.
939 additional arguments to be passed to the magic.
926
940
927 ipalias('name -opt foo bar') is equivalent to typing at the ipython
941 ipalias('name -opt foo bar') is equivalent to typing at the ipython
928 prompt:
942 prompt:
929
943
930 In[1]: name -opt foo bar
944 In[1]: name -opt foo bar
931
945
932 To call an alias without arguments, simply use ipalias('name').
946 To call an alias without arguments, simply use ipalias('name').
933
947
934 This provides a proper Python function to call IPython's aliases in any
948 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
949 valid Python code you can type at the interpreter, including loops and
936 compound statements. It is added by IPython to the Python builtin
950 compound statements. It is added by IPython to the Python builtin
937 namespace upon initialization."""
951 namespace upon initialization."""
938
952
939 args = arg_s.split(' ',1)
953 args = arg_s.split(' ',1)
940 alias_name = args[0]
954 alias_name = args[0]
941 try:
955 try:
942 alias_args = args[1]
956 alias_args = args[1]
943 except IndexError:
957 except IndexError:
944 alias_args = ''
958 alias_args = ''
945 if alias_name in self.alias_table:
959 if alias_name in self.alias_table:
946 self.call_alias(alias_name,alias_args)
960 self.call_alias(alias_name,alias_args)
947 else:
961 else:
948 error("Alias `%s` not found." % alias_name)
962 error("Alias `%s` not found." % alias_name)
949
963
950 def ipsystem(self,arg_s):
964 def ipsystem(self,arg_s):
951 """Make a system call, using IPython."""
965 """Make a system call, using IPython."""
952
966
953 self.system(arg_s)
967 self.system(arg_s)
954
968
955 def complete(self,text):
969 def complete(self,text):
956 """Return a sorted list of all possible completions on text.
970 """Return a sorted list of all possible completions on text.
957
971
958 Inputs:
972 Inputs:
959
973
960 - text: a string of text to be completed on.
974 - text: a string of text to be completed on.
961
975
962 This is a wrapper around the completion mechanism, similar to what
976 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
977 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
978 exposing it as a method, it can be used by other non-readline
965 environments (such as GUIs) for text completion.
979 environments (such as GUIs) for text completion.
966
980
967 Simple usage example:
981 Simple usage example:
968
982
969 In [1]: x = 'hello'
983 In [1]: x = 'hello'
970
984
971 In [2]: __IP.complete('x.l')
985 In [2]: __IP.complete('x.l')
972 Out[2]: ['x.ljust', 'x.lower', 'x.lstrip']"""
986 Out[2]: ['x.ljust', 'x.lower', 'x.lstrip']"""
973
987
974 complete = self.Completer.complete
988 complete = self.Completer.complete
975 state = 0
989 state = 0
976 # use a dict so we get unique keys, since ipyhton's multiple
990 # use a dict so we get unique keys, since ipyhton's multiple
977 # completers can return duplicates.
991 # completers can return duplicates.
978 comps = {}
992 comps = {}
979 while True:
993 while True:
980 newcomp = complete(text,state)
994 newcomp = complete(text,state)
981 if newcomp is None:
995 if newcomp is None:
982 break
996 break
983 comps[newcomp] = 1
997 comps[newcomp] = 1
984 state += 1
998 state += 1
985 outcomps = comps.keys()
999 outcomps = comps.keys()
986 outcomps.sort()
1000 outcomps.sort()
987 return outcomps
1001 return outcomps
988
1002
989 def set_completer_frame(self, frame=None):
1003 def set_completer_frame(self, frame=None):
990 if frame:
1004 if frame:
991 self.Completer.namespace = frame.f_locals
1005 self.Completer.namespace = frame.f_locals
992 self.Completer.global_namespace = frame.f_globals
1006 self.Completer.global_namespace = frame.f_globals
993 else:
1007 else:
994 self.Completer.namespace = self.user_ns
1008 self.Completer.namespace = self.user_ns
995 self.Completer.global_namespace = self.user_global_ns
1009 self.Completer.global_namespace = self.user_global_ns
996
1010
997 def init_auto_alias(self):
1011 def init_auto_alias(self):
998 """Define some aliases automatically.
1012 """Define some aliases automatically.
999
1013
1000 These are ALL parameter-less aliases"""
1014 These are ALL parameter-less aliases"""
1001
1015
1002 for alias,cmd in self.auto_alias:
1016 for alias,cmd in self.auto_alias:
1003 self.alias_table[alias] = (0,cmd)
1017 self.alias_table[alias] = (0,cmd)
1004
1018
1005 def alias_table_validate(self,verbose=0):
1019 def alias_table_validate(self,verbose=0):
1006 """Update information about the alias table.
1020 """Update information about the alias table.
1007
1021
1008 In particular, make sure no Python keywords/builtins are in it."""
1022 In particular, make sure no Python keywords/builtins are in it."""
1009
1023
1010 no_alias = self.no_alias
1024 no_alias = self.no_alias
1011 for k in self.alias_table.keys():
1025 for k in self.alias_table.keys():
1012 if k in no_alias:
1026 if k in no_alias:
1013 del self.alias_table[k]
1027 del self.alias_table[k]
1014 if verbose:
1028 if verbose:
1015 print ("Deleting alias <%s>, it's a Python "
1029 print ("Deleting alias <%s>, it's a Python "
1016 "keyword or builtin." % k)
1030 "keyword or builtin." % k)
1017
1031
1018 def set_autoindent(self,value=None):
1032 def set_autoindent(self,value=None):
1019 """Set the autoindent flag, checking for readline support.
1033 """Set the autoindent flag, checking for readline support.
1020
1034
1021 If called with no arguments, it acts as a toggle."""
1035 If called with no arguments, it acts as a toggle."""
1022
1036
1023 if not self.has_readline:
1037 if not self.has_readline:
1024 if os.name == 'posix':
1038 if os.name == 'posix':
1025 warn("The auto-indent feature requires the readline library")
1039 warn("The auto-indent feature requires the readline library")
1026 self.autoindent = 0
1040 self.autoindent = 0
1027 return
1041 return
1028 if value is None:
1042 if value is None:
1029 self.autoindent = not self.autoindent
1043 self.autoindent = not self.autoindent
1030 else:
1044 else:
1031 self.autoindent = value
1045 self.autoindent = value
1032
1046
1033 def rc_set_toggle(self,rc_field,value=None):
1047 def rc_set_toggle(self,rc_field,value=None):
1034 """Set or toggle a field in IPython's rc config. structure.
1048 """Set or toggle a field in IPython's rc config. structure.
1035
1049
1036 If called with no arguments, it acts as a toggle.
1050 If called with no arguments, it acts as a toggle.
1037
1051
1038 If called with a non-existent field, the resulting AttributeError
1052 If called with a non-existent field, the resulting AttributeError
1039 exception will propagate out."""
1053 exception will propagate out."""
1040
1054
1041 rc_val = getattr(self.rc,rc_field)
1055 rc_val = getattr(self.rc,rc_field)
1042 if value is None:
1056 if value is None:
1043 value = not rc_val
1057 value = not rc_val
1044 setattr(self.rc,rc_field,value)
1058 setattr(self.rc,rc_field,value)
1045
1059
1046 def user_setup(self,ipythondir,rc_suffix,mode='install'):
1060 def user_setup(self,ipythondir,rc_suffix,mode='install'):
1047 """Install the user configuration directory.
1061 """Install the user configuration directory.
1048
1062
1049 Can be called when running for the first time or to upgrade the user's
1063 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'
1064 .ipython/ directory with the mode parameter. Valid modes are 'install'
1051 and 'upgrade'."""
1065 and 'upgrade'."""
1052
1066
1053 def wait():
1067 def wait():
1054 try:
1068 try:
1055 raw_input("Please press <RETURN> to start IPython.")
1069 raw_input("Please press <RETURN> to start IPython.")
1056 except EOFError:
1070 except EOFError:
1057 print >> Term.cout
1071 print >> Term.cout
1058 print '*'*70
1072 print '*'*70
1059
1073
1060 cwd = os.getcwd() # remember where we started
1074 cwd = os.getcwd() # remember where we started
1061 glb = glob.glob
1075 glb = glob.glob
1062 print '*'*70
1076 print '*'*70
1063 if mode == 'install':
1077 if mode == 'install':
1064 print \
1078 print \
1065 """Welcome to IPython. I will try to create a personal configuration directory
1079 """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"""
1080 where you can customize many aspects of IPython's functionality in:\n"""
1067 else:
1081 else:
1068 print 'I am going to upgrade your configuration in:'
1082 print 'I am going to upgrade your configuration in:'
1069
1083
1070 print ipythondir
1084 print ipythondir
1071
1085
1072 rcdirend = os.path.join('IPython','UserConfig')
1086 rcdirend = os.path.join('IPython','UserConfig')
1073 cfg = lambda d: os.path.join(d,rcdirend)
1087 cfg = lambda d: os.path.join(d,rcdirend)
1074 try:
1088 try:
1075 rcdir = filter(os.path.isdir,map(cfg,sys.path))[0]
1089 rcdir = filter(os.path.isdir,map(cfg,sys.path))[0]
1076 except IOError:
1090 except IOError:
1077 warning = """
1091 warning = """
1078 Installation error. IPython's directory was not found.
1092 Installation error. IPython's directory was not found.
1079
1093
1080 Check the following:
1094 Check the following:
1081
1095
1082 The ipython/IPython directory should be in a directory belonging to your
1096 The ipython/IPython directory should be in a directory belonging to your
1083 PYTHONPATH environment variable (that is, it should be in a directory
1097 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.
1098 belonging to sys.path). You can copy it explicitly there or just link to it.
1085
1099
1086 IPython will proceed with builtin defaults.
1100 IPython will proceed with builtin defaults.
1087 """
1101 """
1088 warn(warning)
1102 warn(warning)
1089 wait()
1103 wait()
1090 return
1104 return
1091
1105
1092 if mode == 'install':
1106 if mode == 'install':
1093 try:
1107 try:
1094 shutil.copytree(rcdir,ipythondir)
1108 shutil.copytree(rcdir,ipythondir)
1095 os.chdir(ipythondir)
1109 os.chdir(ipythondir)
1096 rc_files = glb("ipythonrc*")
1110 rc_files = glb("ipythonrc*")
1097 for rc_file in rc_files:
1111 for rc_file in rc_files:
1098 os.rename(rc_file,rc_file+rc_suffix)
1112 os.rename(rc_file,rc_file+rc_suffix)
1099 except:
1113 except:
1100 warning = """
1114 warning = """
1101
1115
1102 There was a problem with the installation:
1116 There was a problem with the installation:
1103 %s
1117 %s
1104 Try to correct it or contact the developers if you think it's a bug.
1118 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]
1119 IPython will proceed with builtin defaults.""" % sys.exc_info()[1]
1106 warn(warning)
1120 warn(warning)
1107 wait()
1121 wait()
1108 return
1122 return
1109
1123
1110 elif mode == 'upgrade':
1124 elif mode == 'upgrade':
1111 try:
1125 try:
1112 os.chdir(ipythondir)
1126 os.chdir(ipythondir)
1113 except:
1127 except:
1114 print """
1128 print """
1115 Can not upgrade: changing to directory %s failed. Details:
1129 Can not upgrade: changing to directory %s failed. Details:
1116 %s
1130 %s
1117 """ % (ipythondir,sys.exc_info()[1])
1131 """ % (ipythondir,sys.exc_info()[1])
1118 wait()
1132 wait()
1119 return
1133 return
1120 else:
1134 else:
1121 sources = glb(os.path.join(rcdir,'[A-Za-z]*'))
1135 sources = glb(os.path.join(rcdir,'[A-Za-z]*'))
1122 for new_full_path in sources:
1136 for new_full_path in sources:
1123 new_filename = os.path.basename(new_full_path)
1137 new_filename = os.path.basename(new_full_path)
1124 if new_filename.startswith('ipythonrc'):
1138 if new_filename.startswith('ipythonrc'):
1125 new_filename = new_filename + rc_suffix
1139 new_filename = new_filename + rc_suffix
1126 # The config directory should only contain files, skip any
1140 # The config directory should only contain files, skip any
1127 # directories which may be there (like CVS)
1141 # directories which may be there (like CVS)
1128 if os.path.isdir(new_full_path):
1142 if os.path.isdir(new_full_path):
1129 continue
1143 continue
1130 if os.path.exists(new_filename):
1144 if os.path.exists(new_filename):
1131 old_file = new_filename+'.old'
1145 old_file = new_filename+'.old'
1132 if os.path.exists(old_file):
1146 if os.path.exists(old_file):
1133 os.remove(old_file)
1147 os.remove(old_file)
1134 os.rename(new_filename,old_file)
1148 os.rename(new_filename,old_file)
1135 shutil.copy(new_full_path,new_filename)
1149 shutil.copy(new_full_path,new_filename)
1136 else:
1150 else:
1137 raise ValueError,'unrecognized mode for install:',`mode`
1151 raise ValueError,'unrecognized mode for install:',`mode`
1138
1152
1139 # Fix line-endings to those native to each platform in the config
1153 # Fix line-endings to those native to each platform in the config
1140 # directory.
1154 # directory.
1141 try:
1155 try:
1142 os.chdir(ipythondir)
1156 os.chdir(ipythondir)
1143 except:
1157 except:
1144 print """
1158 print """
1145 Problem: changing to directory %s failed.
1159 Problem: changing to directory %s failed.
1146 Details:
1160 Details:
1147 %s
1161 %s
1148
1162
1149 Some configuration files may have incorrect line endings. This should not
1163 Some configuration files may have incorrect line endings. This should not
1150 cause any problems during execution. """ % (ipythondir,sys.exc_info()[1])
1164 cause any problems during execution. """ % (ipythondir,sys.exc_info()[1])
1151 wait()
1165 wait()
1152 else:
1166 else:
1153 for fname in glb('ipythonrc*'):
1167 for fname in glb('ipythonrc*'):
1154 try:
1168 try:
1155 native_line_ends(fname,backup=0)
1169 native_line_ends(fname,backup=0)
1156 except IOError:
1170 except IOError:
1157 pass
1171 pass
1158
1172
1159 if mode == 'install':
1173 if mode == 'install':
1160 print """
1174 print """
1161 Successful installation!
1175 Successful installation!
1162
1176
1163 Please read the sections 'Initial Configuration' and 'Quick Tips' in the
1177 Please read the sections 'Initial Configuration' and 'Quick Tips' in the
1164 IPython manual (there are both HTML and PDF versions supplied with the
1178 IPython manual (there are both HTML and PDF versions supplied with the
1165 distribution) to make sure that your system environment is properly configured
1179 distribution) to make sure that your system environment is properly configured
1166 to take advantage of IPython's features.
1180 to take advantage of IPython's features.
1167
1181
1168 Important note: the configuration system has changed! The old system is
1182 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
1183 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
1184 "~/.ipython/ipy_user_conf.py" config file. Please take a look at the file
1171 if some of the new settings bother you.
1185 if some of the new settings bother you.
1172
1186
1173 """
1187 """
1174 else:
1188 else:
1175 print """
1189 print """
1176 Successful upgrade!
1190 Successful upgrade!
1177
1191
1178 All files in your directory:
1192 All files in your directory:
1179 %(ipythondir)s
1193 %(ipythondir)s
1180 which would have been overwritten by the upgrade were backed up with a .old
1194 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
1195 extension. If you had made particular customizations in those files you may
1182 want to merge them back into the new files.""" % locals()
1196 want to merge them back into the new files.""" % locals()
1183 wait()
1197 wait()
1184 os.chdir(cwd)
1198 os.chdir(cwd)
1185 # end user_setup()
1199 # end user_setup()
1186
1200
1187 def atexit_operations(self):
1201 def atexit_operations(self):
1188 """This will be executed at the time of exit.
1202 """This will be executed at the time of exit.
1189
1203
1190 Saving of persistent data should be performed here. """
1204 Saving of persistent data should be performed here. """
1191
1205
1192 #print '*** IPython exit cleanup ***' # dbg
1206 #print '*** IPython exit cleanup ***' # dbg
1193 # input history
1207 # input history
1194 self.savehist()
1208 self.savehist()
1195
1209
1196 # Cleanup all tempfiles left around
1210 # Cleanup all tempfiles left around
1197 for tfile in self.tempfiles:
1211 for tfile in self.tempfiles:
1198 try:
1212 try:
1199 os.unlink(tfile)
1213 os.unlink(tfile)
1200 except OSError:
1214 except OSError:
1201 pass
1215 pass
1202
1216
1203 # save the "persistent data" catch-all dictionary
1217 # save the "persistent data" catch-all dictionary
1204 self.hooks.shutdown_hook()
1218 self.hooks.shutdown_hook()
1205
1219
1206 def savehist(self):
1220 def savehist(self):
1207 """Save input history to a file (via readline library)."""
1221 """Save input history to a file (via readline library)."""
1208 try:
1222 try:
1209 self.readline.write_history_file(self.histfile)
1223 self.readline.write_history_file(self.histfile)
1210 except:
1224 except:
1211 print 'Unable to save IPython command history to file: ' + \
1225 print 'Unable to save IPython command history to file: ' + \
1212 `self.histfile`
1226 `self.histfile`
1213
1227
1214 def history_saving_wrapper(self, func):
1228 def history_saving_wrapper(self, func):
1215 """ Wrap func for readline history saving
1229 """ Wrap func for readline history saving
1216
1230
1217 Convert func into callable that saves & restores
1231 Convert func into callable that saves & restores
1218 history around the call """
1232 history around the call """
1219
1233
1220 if not self.has_readline:
1234 if not self.has_readline:
1221 return func
1235 return func
1222
1236
1223 def wrapper():
1237 def wrapper():
1224 self.savehist()
1238 self.savehist()
1225 try:
1239 try:
1226 func()
1240 func()
1227 finally:
1241 finally:
1228 readline.read_history_file(self.histfile)
1242 readline.read_history_file(self.histfile)
1229 return wrapper
1243 return wrapper
1230
1244
1231
1245
1232 def pre_readline(self):
1246 def pre_readline(self):
1233 """readline hook to be used at the start of each line.
1247 """readline hook to be used at the start of each line.
1234
1248
1235 Currently it handles auto-indent only."""
1249 Currently it handles auto-indent only."""
1236
1250
1237 #debugx('self.indent_current_nsp','pre_readline:')
1251 #debugx('self.indent_current_nsp','pre_readline:')
1238 self.readline.insert_text(self.indent_current_str())
1252 self.readline.insert_text(self.indent_current_str())
1239
1253
1240 def init_readline(self):
1254 def init_readline(self):
1241 """Command history completion/saving/reloading."""
1255 """Command history completion/saving/reloading."""
1242
1256
1243 import IPython.rlineimpl as readline
1257 import IPython.rlineimpl as readline
1244 if not readline.have_readline:
1258 if not readline.have_readline:
1245 self.has_readline = 0
1259 self.has_readline = 0
1246 self.readline = None
1260 self.readline = None
1247 # no point in bugging windows users with this every time:
1261 # no point in bugging windows users with this every time:
1248 warn('Readline services not available on this platform.')
1262 warn('Readline services not available on this platform.')
1249 else:
1263 else:
1250 sys.modules['readline'] = readline
1264 sys.modules['readline'] = readline
1251 import atexit
1265 import atexit
1252 from IPython.completer import IPCompleter
1266 from IPython.completer import IPCompleter
1253 self.Completer = IPCompleter(self,
1267 self.Completer = IPCompleter(self,
1254 self.user_ns,
1268 self.user_ns,
1255 self.user_global_ns,
1269 self.user_global_ns,
1256 self.rc.readline_omit__names,
1270 self.rc.readline_omit__names,
1257 self.alias_table)
1271 self.alias_table)
1258 sdisp = self.strdispatchers.get('complete_command', StrDispatch())
1272 sdisp = self.strdispatchers.get('complete_command', StrDispatch())
1259 self.strdispatchers['complete_command'] = sdisp
1273 self.strdispatchers['complete_command'] = sdisp
1260 self.Completer.custom_completers = sdisp
1274 self.Completer.custom_completers = sdisp
1261 # Platform-specific configuration
1275 # Platform-specific configuration
1262 if os.name == 'nt':
1276 if os.name == 'nt':
1263 self.readline_startup_hook = readline.set_pre_input_hook
1277 self.readline_startup_hook = readline.set_pre_input_hook
1264 else:
1278 else:
1265 self.readline_startup_hook = readline.set_startup_hook
1279 self.readline_startup_hook = readline.set_startup_hook
1266
1280
1267 # Load user's initrc file (readline config)
1281 # Load user's initrc file (readline config)
1268 inputrc_name = os.environ.get('INPUTRC')
1282 inputrc_name = os.environ.get('INPUTRC')
1269 if inputrc_name is None:
1283 if inputrc_name is None:
1270 home_dir = get_home_dir()
1284 home_dir = get_home_dir()
1271 if home_dir is not None:
1285 if home_dir is not None:
1272 inputrc_name = os.path.join(home_dir,'.inputrc')
1286 inputrc_name = os.path.join(home_dir,'.inputrc')
1273 if os.path.isfile(inputrc_name):
1287 if os.path.isfile(inputrc_name):
1274 try:
1288 try:
1275 readline.read_init_file(inputrc_name)
1289 readline.read_init_file(inputrc_name)
1276 except:
1290 except:
1277 warn('Problems reading readline initialization file <%s>'
1291 warn('Problems reading readline initialization file <%s>'
1278 % inputrc_name)
1292 % inputrc_name)
1279
1293
1280 self.has_readline = 1
1294 self.has_readline = 1
1281 self.readline = readline
1295 self.readline = readline
1282 # save this in sys so embedded copies can restore it properly
1296 # save this in sys so embedded copies can restore it properly
1283 sys.ipcompleter = self.Completer.complete
1297 sys.ipcompleter = self.Completer.complete
1284 readline.set_completer(self.Completer.complete)
1298 readline.set_completer(self.Completer.complete)
1285
1299
1286 # Configure readline according to user's prefs
1300 # Configure readline according to user's prefs
1287 for rlcommand in self.rc.readline_parse_and_bind:
1301 for rlcommand in self.rc.readline_parse_and_bind:
1288 readline.parse_and_bind(rlcommand)
1302 readline.parse_and_bind(rlcommand)
1289
1303
1290 # remove some chars from the delimiters list
1304 # remove some chars from the delimiters list
1291 delims = readline.get_completer_delims()
1305 delims = readline.get_completer_delims()
1292 delims = delims.translate(string._idmap,
1306 delims = delims.translate(string._idmap,
1293 self.rc.readline_remove_delims)
1307 self.rc.readline_remove_delims)
1294 readline.set_completer_delims(delims)
1308 readline.set_completer_delims(delims)
1295 # otherwise we end up with a monster history after a while:
1309 # otherwise we end up with a monster history after a while:
1296 readline.set_history_length(1000)
1310 readline.set_history_length(1000)
1297 try:
1311 try:
1298 #print '*** Reading readline history' # dbg
1312 #print '*** Reading readline history' # dbg
1299 readline.read_history_file(self.histfile)
1313 readline.read_history_file(self.histfile)
1300 except IOError:
1314 except IOError:
1301 pass # It doesn't exist yet.
1315 pass # It doesn't exist yet.
1302
1316
1303 atexit.register(self.atexit_operations)
1317 atexit.register(self.atexit_operations)
1304 del atexit
1318 del atexit
1305
1319
1306 # Configure auto-indent for all platforms
1320 # Configure auto-indent for all platforms
1307 self.set_autoindent(self.rc.autoindent)
1321 self.set_autoindent(self.rc.autoindent)
1308
1322
1309 def ask_yes_no(self,prompt,default=True):
1323 def ask_yes_no(self,prompt,default=True):
1310 if self.rc.quiet:
1324 if self.rc.quiet:
1311 return True
1325 return True
1312 return ask_yes_no(prompt,default)
1326 return ask_yes_no(prompt,default)
1313
1327
1314 def _should_recompile(self,e):
1328 def _should_recompile(self,e):
1315 """Utility routine for edit_syntax_error"""
1329 """Utility routine for edit_syntax_error"""
1316
1330
1317 if e.filename in ('<ipython console>','<input>','<string>',
1331 if e.filename in ('<ipython console>','<input>','<string>',
1318 '<console>','<BackgroundJob compilation>',
1332 '<console>','<BackgroundJob compilation>',
1319 None):
1333 None):
1320
1334
1321 return False
1335 return False
1322 try:
1336 try:
1323 if (self.rc.autoedit_syntax and
1337 if (self.rc.autoedit_syntax and
1324 not self.ask_yes_no('Return to editor to correct syntax error? '
1338 not self.ask_yes_no('Return to editor to correct syntax error? '
1325 '[Y/n] ','y')):
1339 '[Y/n] ','y')):
1326 return False
1340 return False
1327 except EOFError:
1341 except EOFError:
1328 return False
1342 return False
1329
1343
1330 def int0(x):
1344 def int0(x):
1331 try:
1345 try:
1332 return int(x)
1346 return int(x)
1333 except TypeError:
1347 except TypeError:
1334 return 0
1348 return 0
1335 # always pass integer line and offset values to editor hook
1349 # always pass integer line and offset values to editor hook
1336 self.hooks.fix_error_editor(e.filename,
1350 self.hooks.fix_error_editor(e.filename,
1337 int0(e.lineno),int0(e.offset),e.msg)
1351 int0(e.lineno),int0(e.offset),e.msg)
1338 return True
1352 return True
1339
1353
1340 def edit_syntax_error(self):
1354 def edit_syntax_error(self):
1341 """The bottom half of the syntax error handler called in the main loop.
1355 """The bottom half of the syntax error handler called in the main loop.
1342
1356
1343 Loop until syntax error is fixed or user cancels.
1357 Loop until syntax error is fixed or user cancels.
1344 """
1358 """
1345
1359
1346 while self.SyntaxTB.last_syntax_error:
1360 while self.SyntaxTB.last_syntax_error:
1347 # copy and clear last_syntax_error
1361 # copy and clear last_syntax_error
1348 err = self.SyntaxTB.clear_err_state()
1362 err = self.SyntaxTB.clear_err_state()
1349 if not self._should_recompile(err):
1363 if not self._should_recompile(err):
1350 return
1364 return
1351 try:
1365 try:
1352 # may set last_syntax_error again if a SyntaxError is raised
1366 # may set last_syntax_error again if a SyntaxError is raised
1353 self.safe_execfile(err.filename,self.user_ns)
1367 self.safe_execfile(err.filename,self.user_ns)
1354 except:
1368 except:
1355 self.showtraceback()
1369 self.showtraceback()
1356 else:
1370 else:
1357 try:
1371 try:
1358 f = file(err.filename)
1372 f = file(err.filename)
1359 try:
1373 try:
1360 sys.displayhook(f.read())
1374 sys.displayhook(f.read())
1361 finally:
1375 finally:
1362 f.close()
1376 f.close()
1363 except:
1377 except:
1364 self.showtraceback()
1378 self.showtraceback()
1365
1379
1366 def showsyntaxerror(self, filename=None):
1380 def showsyntaxerror(self, filename=None):
1367 """Display the syntax error that just occurred.
1381 """Display the syntax error that just occurred.
1368
1382
1369 This doesn't display a stack trace because there isn't one.
1383 This doesn't display a stack trace because there isn't one.
1370
1384
1371 If a filename is given, it is stuffed in the exception instead
1385 If a filename is given, it is stuffed in the exception instead
1372 of what was there before (because Python's parser always uses
1386 of what was there before (because Python's parser always uses
1373 "<string>" when reading from a string).
1387 "<string>" when reading from a string).
1374 """
1388 """
1375 etype, value, last_traceback = sys.exc_info()
1389 etype, value, last_traceback = sys.exc_info()
1376
1390
1377 # See note about these variables in showtraceback() below
1391 # See note about these variables in showtraceback() below
1378 sys.last_type = etype
1392 sys.last_type = etype
1379 sys.last_value = value
1393 sys.last_value = value
1380 sys.last_traceback = last_traceback
1394 sys.last_traceback = last_traceback
1381
1395
1382 if filename and etype is SyntaxError:
1396 if filename and etype is SyntaxError:
1383 # Work hard to stuff the correct filename in the exception
1397 # Work hard to stuff the correct filename in the exception
1384 try:
1398 try:
1385 msg, (dummy_filename, lineno, offset, line) = value
1399 msg, (dummy_filename, lineno, offset, line) = value
1386 except:
1400 except:
1387 # Not the format we expect; leave it alone
1401 # Not the format we expect; leave it alone
1388 pass
1402 pass
1389 else:
1403 else:
1390 # Stuff in the right filename
1404 # Stuff in the right filename
1391 try:
1405 try:
1392 # Assume SyntaxError is a class exception
1406 # Assume SyntaxError is a class exception
1393 value = SyntaxError(msg, (filename, lineno, offset, line))
1407 value = SyntaxError(msg, (filename, lineno, offset, line))
1394 except:
1408 except:
1395 # If that failed, assume SyntaxError is a string
1409 # If that failed, assume SyntaxError is a string
1396 value = msg, (filename, lineno, offset, line)
1410 value = msg, (filename, lineno, offset, line)
1397 self.SyntaxTB(etype,value,[])
1411 self.SyntaxTB(etype,value,[])
1398
1412
1399 def debugger(self):
1413 def debugger(self):
1400 """Call the pydb/pdb debugger."""
1414 """Call the pydb/pdb debugger."""
1401
1415
1402 if not self.rc.pdb:
1416 if not self.rc.pdb:
1403 return
1417 return
1404 have_pydb = False
1418 have_pydb = False
1405 if sys.version[:3] >= '2.5':
1419 if sys.version[:3] >= '2.5':
1406 try:
1420 try:
1407 from pydb import pm
1421 from pydb import pm
1408 have_pydb = True
1422 have_pydb = True
1409 except ImportError:
1423 except ImportError:
1410 pass
1424 pass
1411 if not have_pydb:
1425 if not have_pydb:
1412 from pdb import pm
1426 from pdb import pm
1413 self.history_saving_wrapper(pm)()
1427 self.history_saving_wrapper(pm)()
1414
1428
1415 def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None):
1429 def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None):
1416 """Display the exception that just occurred.
1430 """Display the exception that just occurred.
1417
1431
1418 If nothing is known about the exception, this is the method which
1432 If nothing is known about the exception, this is the method which
1419 should be used throughout the code for presenting user tracebacks,
1433 should be used throughout the code for presenting user tracebacks,
1420 rather than directly invoking the InteractiveTB object.
1434 rather than directly invoking the InteractiveTB object.
1421
1435
1422 A specific showsyntaxerror() also exists, but this method can take
1436 A specific showsyntaxerror() also exists, but this method can take
1423 care of calling it if needed, so unless you are explicitly catching a
1437 care of calling it if needed, so unless you are explicitly catching a
1424 SyntaxError exception, don't try to analyze the stack manually and
1438 SyntaxError exception, don't try to analyze the stack manually and
1425 simply call this method."""
1439 simply call this method."""
1426
1440
1427 # Though this won't be called by syntax errors in the input line,
1441 # Though this won't be called by syntax errors in the input line,
1428 # there may be SyntaxError cases whith imported code.
1442 # there may be SyntaxError cases whith imported code.
1429 if exc_tuple is None:
1443 if exc_tuple is None:
1430 etype, value, tb = sys.exc_info()
1444 etype, value, tb = sys.exc_info()
1431 else:
1445 else:
1432 etype, value, tb = exc_tuple
1446 etype, value, tb = exc_tuple
1433 if etype is SyntaxError:
1447 if etype is SyntaxError:
1434 self.showsyntaxerror(filename)
1448 self.showsyntaxerror(filename)
1435 else:
1449 else:
1436 # WARNING: these variables are somewhat deprecated and not
1450 # WARNING: these variables are somewhat deprecated and not
1437 # necessarily safe to use in a threaded environment, but tools
1451 # necessarily safe to use in a threaded environment, but tools
1438 # like pdb depend on their existence, so let's set them. If we
1452 # like pdb depend on their existence, so let's set them. If we
1439 # find problems in the field, we'll need to revisit their use.
1453 # find problems in the field, we'll need to revisit their use.
1440 sys.last_type = etype
1454 sys.last_type = etype
1441 sys.last_value = value
1455 sys.last_value = value
1442 sys.last_traceback = tb
1456 sys.last_traceback = tb
1443
1457
1444 self.InteractiveTB(etype,value,tb,tb_offset=tb_offset)
1458 self.InteractiveTB(etype,value,tb,tb_offset=tb_offset)
1445 if self.InteractiveTB.call_pdb and self.has_readline:
1459 if self.InteractiveTB.call_pdb and self.has_readline:
1446 # pdb mucks up readline, fix it back
1460 # pdb mucks up readline, fix it back
1447 self.readline.set_completer(self.Completer.complete)
1461 self.readline.set_completer(self.Completer.complete)
1448
1462
1449 def mainloop(self,banner=None):
1463 def mainloop(self,banner=None):
1450 """Creates the local namespace and starts the mainloop.
1464 """Creates the local namespace and starts the mainloop.
1451
1465
1452 If an optional banner argument is given, it will override the
1466 If an optional banner argument is given, it will override the
1453 internally created default banner."""
1467 internally created default banner."""
1454
1468
1455 if self.rc.c: # Emulate Python's -c option
1469 if self.rc.c: # Emulate Python's -c option
1456 self.exec_init_cmd()
1470 self.exec_init_cmd()
1457 if banner is None:
1471 if banner is None:
1458 if not self.rc.banner:
1472 if not self.rc.banner:
1459 banner = ''
1473 banner = ''
1460 # banner is string? Use it directly!
1474 # banner is string? Use it directly!
1461 elif isinstance(self.rc.banner,basestring):
1475 elif isinstance(self.rc.banner,basestring):
1462 banner = self.rc.banner
1476 banner = self.rc.banner
1463 else:
1477 else:
1464 banner = self.BANNER+self.banner2
1478 banner = self.BANNER+self.banner2
1465
1479
1466 self.interact(banner)
1480 self.interact(banner)
1467
1481
1468 def exec_init_cmd(self):
1482 def exec_init_cmd(self):
1469 """Execute a command given at the command line.
1483 """Execute a command given at the command line.
1470
1484
1471 This emulates Python's -c option."""
1485 This emulates Python's -c option."""
1472
1486
1473 #sys.argv = ['-c']
1487 #sys.argv = ['-c']
1474 self.push(self.rc.c)
1488 self.push(self.rc.c)
1475
1489
1476 def embed_mainloop(self,header='',local_ns=None,global_ns=None,stack_depth=0):
1490 def embed_mainloop(self,header='',local_ns=None,global_ns=None,stack_depth=0):
1477 """Embeds IPython into a running python program.
1491 """Embeds IPython into a running python program.
1478
1492
1479 Input:
1493 Input:
1480
1494
1481 - header: An optional header message can be specified.
1495 - header: An optional header message can be specified.
1482
1496
1483 - local_ns, global_ns: working namespaces. If given as None, the
1497 - local_ns, global_ns: working namespaces. If given as None, the
1484 IPython-initialized one is updated with __main__.__dict__, so that
1498 IPython-initialized one is updated with __main__.__dict__, so that
1485 program variables become visible but user-specific configuration
1499 program variables become visible but user-specific configuration
1486 remains possible.
1500 remains possible.
1487
1501
1488 - stack_depth: specifies how many levels in the stack to go to
1502 - stack_depth: specifies how many levels in the stack to go to
1489 looking for namespaces (when local_ns and global_ns are None). This
1503 looking for namespaces (when local_ns and global_ns are None). This
1490 allows an intermediate caller to make sure that this function gets
1504 allows an intermediate caller to make sure that this function gets
1491 the namespace from the intended level in the stack. By default (0)
1505 the namespace from the intended level in the stack. By default (0)
1492 it will get its locals and globals from the immediate caller.
1506 it will get its locals and globals from the immediate caller.
1493
1507
1494 Warning: it's possible to use this in a program which is being run by
1508 Warning: it's possible to use this in a program which is being run by
1495 IPython itself (via %run), but some funny things will happen (a few
1509 IPython itself (via %run), but some funny things will happen (a few
1496 globals get overwritten). In the future this will be cleaned up, as
1510 globals get overwritten). In the future this will be cleaned up, as
1497 there is no fundamental reason why it can't work perfectly."""
1511 there is no fundamental reason why it can't work perfectly."""
1498
1512
1499 # Get locals and globals from caller
1513 # Get locals and globals from caller
1500 if local_ns is None or global_ns is None:
1514 if local_ns is None or global_ns is None:
1501 call_frame = sys._getframe(stack_depth).f_back
1515 call_frame = sys._getframe(stack_depth).f_back
1502
1516
1503 if local_ns is None:
1517 if local_ns is None:
1504 local_ns = call_frame.f_locals
1518 local_ns = call_frame.f_locals
1505 if global_ns is None:
1519 if global_ns is None:
1506 global_ns = call_frame.f_globals
1520 global_ns = call_frame.f_globals
1507
1521
1508 # Update namespaces and fire up interpreter
1522 # Update namespaces and fire up interpreter
1509
1523
1510 # The global one is easy, we can just throw it in
1524 # The global one is easy, we can just throw it in
1511 self.user_global_ns = global_ns
1525 self.user_global_ns = global_ns
1512
1526
1513 # but the user/local one is tricky: ipython needs it to store internal
1527 # but the user/local one is tricky: ipython needs it to store internal
1514 # data, but we also need the locals. We'll copy locals in the user
1528 # data, but we also need the locals. We'll copy locals in the user
1515 # one, but will track what got copied so we can delete them at exit.
1529 # one, but will track what got copied so we can delete them at exit.
1516 # This is so that a later embedded call doesn't see locals from a
1530 # This is so that a later embedded call doesn't see locals from a
1517 # previous call (which most likely existed in a separate scope).
1531 # previous call (which most likely existed in a separate scope).
1518 local_varnames = local_ns.keys()
1532 local_varnames = local_ns.keys()
1519 self.user_ns.update(local_ns)
1533 self.user_ns.update(local_ns)
1520
1534
1521 # Patch for global embedding to make sure that things don't overwrite
1535 # Patch for global embedding to make sure that things don't overwrite
1522 # user globals accidentally. Thanks to Richard <rxe@renre-europe.com>
1536 # user globals accidentally. Thanks to Richard <rxe@renre-europe.com>
1523 # FIXME. Test this a bit more carefully (the if.. is new)
1537 # FIXME. Test this a bit more carefully (the if.. is new)
1524 if local_ns is None and global_ns is None:
1538 if local_ns is None and global_ns is None:
1525 self.user_global_ns.update(__main__.__dict__)
1539 self.user_global_ns.update(__main__.__dict__)
1526
1540
1527 # make sure the tab-completer has the correct frame information, so it
1541 # make sure the tab-completer has the correct frame information, so it
1528 # actually completes using the frame's locals/globals
1542 # actually completes using the frame's locals/globals
1529 self.set_completer_frame()
1543 self.set_completer_frame()
1530
1544
1531 # before activating the interactive mode, we need to make sure that
1545 # before activating the interactive mode, we need to make sure that
1532 # all names in the builtin namespace needed by ipython point to
1546 # all names in the builtin namespace needed by ipython point to
1533 # ourselves, and not to other instances.
1547 # ourselves, and not to other instances.
1534 self.add_builtins()
1548 self.add_builtins()
1535
1549
1536 self.interact(header)
1550 self.interact(header)
1537
1551
1538 # now, purge out the user namespace from anything we might have added
1552 # now, purge out the user namespace from anything we might have added
1539 # from the caller's local namespace
1553 # from the caller's local namespace
1540 delvar = self.user_ns.pop
1554 delvar = self.user_ns.pop
1541 for var in local_varnames:
1555 for var in local_varnames:
1542 delvar(var,None)
1556 delvar(var,None)
1543 # and clean builtins we may have overridden
1557 # and clean builtins we may have overridden
1544 self.clean_builtins()
1558 self.clean_builtins()
1545
1559
1546 def interact(self, banner=None):
1560 def interact(self, banner=None):
1547 """Closely emulate the interactive Python console.
1561 """Closely emulate the interactive Python console.
1548
1562
1549 The optional banner argument specify the banner to print
1563 The optional banner argument specify the banner to print
1550 before the first interaction; by default it prints a banner
1564 before the first interaction; by default it prints a banner
1551 similar to the one printed by the real Python interpreter,
1565 similar to the one printed by the real Python interpreter,
1552 followed by the current class name in parentheses (so as not
1566 followed by the current class name in parentheses (so as not
1553 to confuse this with the real interpreter -- since it's so
1567 to confuse this with the real interpreter -- since it's so
1554 close!).
1568 close!).
1555
1569
1556 """
1570 """
1557
1571
1558 if self.exit_now:
1572 if self.exit_now:
1559 # batch run -> do not interact
1573 # batch run -> do not interact
1560 return
1574 return
1561 cprt = 'Type "copyright", "credits" or "license" for more information.'
1575 cprt = 'Type "copyright", "credits" or "license" for more information.'
1562 if banner is None:
1576 if banner is None:
1563 self.write("Python %s on %s\n%s\n(%s)\n" %
1577 self.write("Python %s on %s\n%s\n(%s)\n" %
1564 (sys.version, sys.platform, cprt,
1578 (sys.version, sys.platform, cprt,
1565 self.__class__.__name__))
1579 self.__class__.__name__))
1566 else:
1580 else:
1567 self.write(banner)
1581 self.write(banner)
1568
1582
1569 more = 0
1583 more = 0
1570
1584
1571 # Mark activity in the builtins
1585 # Mark activity in the builtins
1572 __builtin__.__dict__['__IPYTHON__active'] += 1
1586 __builtin__.__dict__['__IPYTHON__active'] += 1
1573
1587
1574 # exit_now is set by a call to %Exit or %Quit
1588 # exit_now is set by a call to %Exit or %Quit
1575 while not self.exit_now:
1589 while not self.exit_now:
1576 if more:
1590 if more:
1577 prompt = self.hooks.generate_prompt(True)
1591 prompt = self.hooks.generate_prompt(True)
1578 if self.autoindent:
1592 if self.autoindent:
1579 self.readline_startup_hook(self.pre_readline)
1593 self.readline_startup_hook(self.pre_readline)
1580 else:
1594 else:
1581 prompt = self.hooks.generate_prompt(False)
1595 prompt = self.hooks.generate_prompt(False)
1582 try:
1596 try:
1583 line = self.raw_input(prompt,more)
1597 line = self.raw_input(prompt,more)
1584 if self.exit_now:
1598 if self.exit_now:
1585 # quick exit on sys.std[in|out] close
1599 # quick exit on sys.std[in|out] close
1586 break
1600 break
1587 if self.autoindent:
1601 if self.autoindent:
1588 self.readline_startup_hook(None)
1602 self.readline_startup_hook(None)
1589 except KeyboardInterrupt:
1603 except KeyboardInterrupt:
1590 self.write('\nKeyboardInterrupt\n')
1604 self.write('\nKeyboardInterrupt\n')
1591 self.resetbuffer()
1605 self.resetbuffer()
1592 # keep cache in sync with the prompt counter:
1606 # keep cache in sync with the prompt counter:
1593 self.outputcache.prompt_count -= 1
1607 self.outputcache.prompt_count -= 1
1594
1608
1595 if self.autoindent:
1609 if self.autoindent:
1596 self.indent_current_nsp = 0
1610 self.indent_current_nsp = 0
1597 more = 0
1611 more = 0
1598 except EOFError:
1612 except EOFError:
1599 if self.autoindent:
1613 if self.autoindent:
1600 self.readline_startup_hook(None)
1614 self.readline_startup_hook(None)
1601 self.write('\n')
1615 self.write('\n')
1602 self.exit()
1616 self.exit()
1603 except bdb.BdbQuit:
1617 except bdb.BdbQuit:
1604 warn('The Python debugger has exited with a BdbQuit exception.\n'
1618 warn('The Python debugger has exited with a BdbQuit exception.\n'
1605 'Because of how pdb handles the stack, it is impossible\n'
1619 'Because of how pdb handles the stack, it is impossible\n'
1606 'for IPython to properly format this particular exception.\n'
1620 'for IPython to properly format this particular exception.\n'
1607 'IPython will resume normal operation.')
1621 'IPython will resume normal operation.')
1608 except:
1622 except:
1609 # exceptions here are VERY RARE, but they can be triggered
1623 # exceptions here are VERY RARE, but they can be triggered
1610 # asynchronously by signal handlers, for example.
1624 # asynchronously by signal handlers, for example.
1611 self.showtraceback()
1625 self.showtraceback()
1612 else:
1626 else:
1613 more = self.push(line)
1627 more = self.push(line)
1614 if (self.SyntaxTB.last_syntax_error and
1628 if (self.SyntaxTB.last_syntax_error and
1615 self.rc.autoedit_syntax):
1629 self.rc.autoedit_syntax):
1616 self.edit_syntax_error()
1630 self.edit_syntax_error()
1617
1631
1618 # We are off again...
1632 # We are off again...
1619 __builtin__.__dict__['__IPYTHON__active'] -= 1
1633 __builtin__.__dict__['__IPYTHON__active'] -= 1
1620
1634
1621 def excepthook(self, etype, value, tb):
1635 def excepthook(self, etype, value, tb):
1622 """One more defense for GUI apps that call sys.excepthook.
1636 """One more defense for GUI apps that call sys.excepthook.
1623
1637
1624 GUI frameworks like wxPython trap exceptions and call
1638 GUI frameworks like wxPython trap exceptions and call
1625 sys.excepthook themselves. I guess this is a feature that
1639 sys.excepthook themselves. I guess this is a feature that
1626 enables them to keep running after exceptions that would
1640 enables them to keep running after exceptions that would
1627 otherwise kill their mainloop. This is a bother for IPython
1641 otherwise kill their mainloop. This is a bother for IPython
1628 which excepts to catch all of the program exceptions with a try:
1642 which excepts to catch all of the program exceptions with a try:
1629 except: statement.
1643 except: statement.
1630
1644
1631 Normally, IPython sets sys.excepthook to a CrashHandler instance, so if
1645 Normally, IPython sets sys.excepthook to a CrashHandler instance, so if
1632 any app directly invokes sys.excepthook, it will look to the user like
1646 any app directly invokes sys.excepthook, it will look to the user like
1633 IPython crashed. In order to work around this, we can disable the
1647 IPython crashed. In order to work around this, we can disable the
1634 CrashHandler and replace it with this excepthook instead, which prints a
1648 CrashHandler and replace it with this excepthook instead, which prints a
1635 regular traceback using our InteractiveTB. In this fashion, apps which
1649 regular traceback using our InteractiveTB. In this fashion, apps which
1636 call sys.excepthook will generate a regular-looking exception from
1650 call sys.excepthook will generate a regular-looking exception from
1637 IPython, and the CrashHandler will only be triggered by real IPython
1651 IPython, and the CrashHandler will only be triggered by real IPython
1638 crashes.
1652 crashes.
1639
1653
1640 This hook should be used sparingly, only in places which are not likely
1654 This hook should be used sparingly, only in places which are not likely
1641 to be true IPython errors.
1655 to be true IPython errors.
1642 """
1656 """
1643 self.showtraceback((etype,value,tb),tb_offset=0)
1657 self.showtraceback((etype,value,tb),tb_offset=0)
1644
1658
1645 def expand_aliases(self,fn,rest):
1659 def expand_aliases(self,fn,rest):
1646 """ Expand multiple levels of aliases:
1660 """ Expand multiple levels of aliases:
1647
1661
1648 if:
1662 if:
1649
1663
1650 alias foo bar /tmp
1664 alias foo bar /tmp
1651 alias baz foo
1665 alias baz foo
1652
1666
1653 then:
1667 then:
1654
1668
1655 baz huhhahhei -> bar /tmp huhhahhei
1669 baz huhhahhei -> bar /tmp huhhahhei
1656
1670
1657 """
1671 """
1658 line = fn + " " + rest
1672 line = fn + " " + rest
1659
1673
1660 done = Set()
1674 done = Set()
1661 while 1:
1675 while 1:
1662 pre,fn,rest = self.split_user_input(line)
1676 pre,fn,rest = self.split_user_input(line)
1663 if fn in self.alias_table:
1677 if fn in self.alias_table:
1664 if fn in done:
1678 if fn in done:
1665 warn("Cyclic alias definition, repeated '%s'" % fn)
1679 warn("Cyclic alias definition, repeated '%s'" % fn)
1666 return ""
1680 return ""
1667 done.add(fn)
1681 done.add(fn)
1668
1682
1669 l2 = self.transform_alias(fn,rest)
1683 l2 = self.transform_alias(fn,rest)
1670 # dir -> dir
1684 # dir -> dir
1671 # print "alias",line, "->",l2 #dbg
1685 # print "alias",line, "->",l2 #dbg
1672 if l2 == line:
1686 if l2 == line:
1673 break
1687 break
1674 # ls -> ls -F should not recurse forever
1688 # ls -> ls -F should not recurse forever
1675 if l2.split(None,1)[0] == line.split(None,1)[0]:
1689 if l2.split(None,1)[0] == line.split(None,1)[0]:
1676 line = l2
1690 line = l2
1677 break
1691 break
1678
1692
1679 line=l2
1693 line=l2
1680
1694
1681
1695
1682 # print "al expand to",line #dbg
1696 # print "al expand to",line #dbg
1683 else:
1697 else:
1684 break
1698 break
1685
1699
1686 return line
1700 return line
1687
1701
1688 def transform_alias(self, alias,rest=''):
1702 def transform_alias(self, alias,rest=''):
1689 """ Transform alias to system command string.
1703 """ Transform alias to system command string.
1690 """
1704 """
1691 nargs,cmd = self.alias_table[alias]
1705 nargs,cmd = self.alias_table[alias]
1692 if ' ' in cmd and os.path.isfile(cmd):
1706 if ' ' in cmd and os.path.isfile(cmd):
1693 cmd = '"%s"' % cmd
1707 cmd = '"%s"' % cmd
1694
1708
1695 # Expand the %l special to be the user's input line
1709 # Expand the %l special to be the user's input line
1696 if cmd.find('%l') >= 0:
1710 if cmd.find('%l') >= 0:
1697 cmd = cmd.replace('%l',rest)
1711 cmd = cmd.replace('%l',rest)
1698 rest = ''
1712 rest = ''
1699 if nargs==0:
1713 if nargs==0:
1700 # Simple, argument-less aliases
1714 # Simple, argument-less aliases
1701 cmd = '%s %s' % (cmd,rest)
1715 cmd = '%s %s' % (cmd,rest)
1702 else:
1716 else:
1703 # Handle aliases with positional arguments
1717 # Handle aliases with positional arguments
1704 args = rest.split(None,nargs)
1718 args = rest.split(None,nargs)
1705 if len(args)< nargs:
1719 if len(args)< nargs:
1706 error('Alias <%s> requires %s arguments, %s given.' %
1720 error('Alias <%s> requires %s arguments, %s given.' %
1707 (alias,nargs,len(args)))
1721 (alias,nargs,len(args)))
1708 return None
1722 return None
1709 cmd = '%s %s' % (cmd % tuple(args[:nargs]),' '.join(args[nargs:]))
1723 cmd = '%s %s' % (cmd % tuple(args[:nargs]),' '.join(args[nargs:]))
1710 # Now call the macro, evaluating in the user's namespace
1724 # Now call the macro, evaluating in the user's namespace
1711 #print 'new command: <%r>' % cmd # dbg
1725 #print 'new command: <%r>' % cmd # dbg
1712 return cmd
1726 return cmd
1713
1727
1714 def call_alias(self,alias,rest=''):
1728 def call_alias(self,alias,rest=''):
1715 """Call an alias given its name and the rest of the line.
1729 """Call an alias given its name and the rest of the line.
1716
1730
1717 This is only used to provide backwards compatibility for users of
1731 This is only used to provide backwards compatibility for users of
1718 ipalias(), use of which is not recommended for anymore."""
1732 ipalias(), use of which is not recommended for anymore."""
1719
1733
1720 # Now call the macro, evaluating in the user's namespace
1734 # Now call the macro, evaluating in the user's namespace
1721 cmd = self.transform_alias(alias, rest)
1735 cmd = self.transform_alias(alias, rest)
1722 try:
1736 try:
1723 self.system(cmd)
1737 self.system(cmd)
1724 except:
1738 except:
1725 self.showtraceback()
1739 self.showtraceback()
1726
1740
1727 def indent_current_str(self):
1741 def indent_current_str(self):
1728 """return the current level of indentation as a string"""
1742 """return the current level of indentation as a string"""
1729 return self.indent_current_nsp * ' '
1743 return self.indent_current_nsp * ' '
1730
1744
1731 def autoindent_update(self,line):
1745 def autoindent_update(self,line):
1732 """Keep track of the indent level."""
1746 """Keep track of the indent level."""
1733
1747
1734 #debugx('line')
1748 #debugx('line')
1735 #debugx('self.indent_current_nsp')
1749 #debugx('self.indent_current_nsp')
1736 if self.autoindent:
1750 if self.autoindent:
1737 if line:
1751 if line:
1738 inisp = num_ini_spaces(line)
1752 inisp = num_ini_spaces(line)
1739 if inisp < self.indent_current_nsp:
1753 if inisp < self.indent_current_nsp:
1740 self.indent_current_nsp = inisp
1754 self.indent_current_nsp = inisp
1741
1755
1742 if line[-1] == ':':
1756 if line[-1] == ':':
1743 self.indent_current_nsp += 4
1757 self.indent_current_nsp += 4
1744 elif dedent_re.match(line):
1758 elif dedent_re.match(line):
1745 self.indent_current_nsp -= 4
1759 self.indent_current_nsp -= 4
1746 else:
1760 else:
1747 self.indent_current_nsp = 0
1761 self.indent_current_nsp = 0
1748
1762
1749 def runlines(self,lines):
1763 def runlines(self,lines):
1750 """Run a string of one or more lines of source.
1764 """Run a string of one or more lines of source.
1751
1765
1752 This method is capable of running a string containing multiple source
1766 This method is capable of running a string containing multiple source
1753 lines, as if they had been entered at the IPython prompt. Since it
1767 lines, as if they had been entered at the IPython prompt. Since it
1754 exposes IPython's processing machinery, the given strings can contain
1768 exposes IPython's processing machinery, the given strings can contain
1755 magic calls (%magic), special shell access (!cmd), etc."""
1769 magic calls (%magic), special shell access (!cmd), etc."""
1756
1770
1757 # We must start with a clean buffer, in case this is run from an
1771 # We must start with a clean buffer, in case this is run from an
1758 # interactive IPython session (via a magic, for example).
1772 # interactive IPython session (via a magic, for example).
1759 self.resetbuffer()
1773 self.resetbuffer()
1760 lines = lines.split('\n')
1774 lines = lines.split('\n')
1761 more = 0
1775 more = 0
1762 for line in lines:
1776 for line in lines:
1763 # skip blank lines so we don't mess up the prompt counter, but do
1777 # skip blank lines so we don't mess up the prompt counter, but do
1764 # NOT skip even a blank line if we are in a code block (more is
1778 # NOT skip even a blank line if we are in a code block (more is
1765 # true)
1779 # true)
1766 if line or more:
1780 if line or more:
1767 more = self.push(self.prefilter(line,more))
1781 more = self.push(self.prefilter(line,more))
1768 # IPython's runsource returns None if there was an error
1782 # IPython's runsource returns None if there was an error
1769 # compiling the code. This allows us to stop processing right
1783 # compiling the code. This allows us to stop processing right
1770 # away, so the user gets the error message at the right place.
1784 # away, so the user gets the error message at the right place.
1771 if more is None:
1785 if more is None:
1772 break
1786 break
1773 # final newline in case the input didn't have it, so that the code
1787 # final newline in case the input didn't have it, so that the code
1774 # actually does get executed
1788 # actually does get executed
1775 if more:
1789 if more:
1776 self.push('\n')
1790 self.push('\n')
1777
1791
1778 def runsource(self, source, filename='<input>', symbol='single'):
1792 def runsource(self, source, filename='<input>', symbol='single'):
1779 """Compile and run some source in the interpreter.
1793 """Compile and run some source in the interpreter.
1780
1794
1781 Arguments are as for compile_command().
1795 Arguments are as for compile_command().
1782
1796
1783 One several things can happen:
1797 One several things can happen:
1784
1798
1785 1) The input is incorrect; compile_command() raised an
1799 1) The input is incorrect; compile_command() raised an
1786 exception (SyntaxError or OverflowError). A syntax traceback
1800 exception (SyntaxError or OverflowError). A syntax traceback
1787 will be printed by calling the showsyntaxerror() method.
1801 will be printed by calling the showsyntaxerror() method.
1788
1802
1789 2) The input is incomplete, and more input is required;
1803 2) The input is incomplete, and more input is required;
1790 compile_command() returned None. Nothing happens.
1804 compile_command() returned None. Nothing happens.
1791
1805
1792 3) The input is complete; compile_command() returned a code
1806 3) The input is complete; compile_command() returned a code
1793 object. The code is executed by calling self.runcode() (which
1807 object. The code is executed by calling self.runcode() (which
1794 also handles run-time exceptions, except for SystemExit).
1808 also handles run-time exceptions, except for SystemExit).
1795
1809
1796 The return value is:
1810 The return value is:
1797
1811
1798 - True in case 2
1812 - True in case 2
1799
1813
1800 - False in the other cases, unless an exception is raised, where
1814 - False in the other cases, unless an exception is raised, where
1801 None is returned instead. This can be used by external callers to
1815 None is returned instead. This can be used by external callers to
1802 know whether to continue feeding input or not.
1816 know whether to continue feeding input or not.
1803
1817
1804 The return value can be used to decide whether to use sys.ps1 or
1818 The return value can be used to decide whether to use sys.ps1 or
1805 sys.ps2 to prompt the next line."""
1819 sys.ps2 to prompt the next line."""
1806
1820
1807 try:
1821 try:
1808 code = self.compile(source,filename,symbol)
1822 code = self.compile(source,filename,symbol)
1809 except (OverflowError, SyntaxError, ValueError):
1823 except (OverflowError, SyntaxError, ValueError):
1810 # Case 1
1824 # Case 1
1811 self.showsyntaxerror(filename)
1825 self.showsyntaxerror(filename)
1812 return None
1826 return None
1813
1827
1814 if code is None:
1828 if code is None:
1815 # Case 2
1829 # Case 2
1816 return True
1830 return True
1817
1831
1818 # Case 3
1832 # Case 3
1819 # We store the code object so that threaded shells and
1833 # We store the code object so that threaded shells and
1820 # custom exception handlers can access all this info if needed.
1834 # custom exception handlers can access all this info if needed.
1821 # The source corresponding to this can be obtained from the
1835 # The source corresponding to this can be obtained from the
1822 # buffer attribute as '\n'.join(self.buffer).
1836 # buffer attribute as '\n'.join(self.buffer).
1823 self.code_to_run = code
1837 self.code_to_run = code
1824 # now actually execute the code object
1838 # now actually execute the code object
1825 if self.runcode(code) == 0:
1839 if self.runcode(code) == 0:
1826 return False
1840 return False
1827 else:
1841 else:
1828 return None
1842 return None
1829
1843
1830 def runcode(self,code_obj):
1844 def runcode(self,code_obj):
1831 """Execute a code object.
1845 """Execute a code object.
1832
1846
1833 When an exception occurs, self.showtraceback() is called to display a
1847 When an exception occurs, self.showtraceback() is called to display a
1834 traceback.
1848 traceback.
1835
1849
1836 Return value: a flag indicating whether the code to be run completed
1850 Return value: a flag indicating whether the code to be run completed
1837 successfully:
1851 successfully:
1838
1852
1839 - 0: successful execution.
1853 - 0: successful execution.
1840 - 1: an error occurred.
1854 - 1: an error occurred.
1841 """
1855 """
1842
1856
1843 # Set our own excepthook in case the user code tries to call it
1857 # Set our own excepthook in case the user code tries to call it
1844 # directly, so that the IPython crash handler doesn't get triggered
1858 # directly, so that the IPython crash handler doesn't get triggered
1845 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
1859 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
1846
1860
1847 # we save the original sys.excepthook in the instance, in case config
1861 # we save the original sys.excepthook in the instance, in case config
1848 # code (such as magics) needs access to it.
1862 # code (such as magics) needs access to it.
1849 self.sys_excepthook = old_excepthook
1863 self.sys_excepthook = old_excepthook
1850 outflag = 1 # happens in more places, so it's easier as default
1864 outflag = 1 # happens in more places, so it's easier as default
1851 try:
1865 try:
1852 try:
1866 try:
1853 # Embedded instances require separate global/local namespaces
1867 # Embedded instances require separate global/local namespaces
1854 # so they can see both the surrounding (local) namespace and
1868 # so they can see both the surrounding (local) namespace and
1855 # the module-level globals when called inside another function.
1869 # the module-level globals when called inside another function.
1856 if self.embedded:
1870 if self.embedded:
1857 exec code_obj in self.user_global_ns, self.user_ns
1871 exec code_obj in self.user_global_ns, self.user_ns
1858 # Normal (non-embedded) instances should only have a single
1872 # Normal (non-embedded) instances should only have a single
1859 # namespace for user code execution, otherwise functions won't
1873 # namespace for user code execution, otherwise functions won't
1860 # see interactive top-level globals.
1874 # see interactive top-level globals.
1861 else:
1875 else:
1862 exec code_obj in self.user_ns
1876 exec code_obj in self.user_ns
1863 finally:
1877 finally:
1864 # Reset our crash handler in place
1878 # Reset our crash handler in place
1865 sys.excepthook = old_excepthook
1879 sys.excepthook = old_excepthook
1866 except SystemExit:
1880 except SystemExit:
1867 self.resetbuffer()
1881 self.resetbuffer()
1868 self.showtraceback()
1882 self.showtraceback()
1869 warn("Type %exit or %quit to exit IPython "
1883 warn("Type %exit or %quit to exit IPython "
1870 "(%Exit or %Quit do so unconditionally).",level=1)
1884 "(%Exit or %Quit do so unconditionally).",level=1)
1871 except self.custom_exceptions:
1885 except self.custom_exceptions:
1872 etype,value,tb = sys.exc_info()
1886 etype,value,tb = sys.exc_info()
1873 self.CustomTB(etype,value,tb)
1887 self.CustomTB(etype,value,tb)
1874 except:
1888 except:
1875 self.showtraceback()
1889 self.showtraceback()
1876 else:
1890 else:
1877 outflag = 0
1891 outflag = 0
1878 if softspace(sys.stdout, 0):
1892 if softspace(sys.stdout, 0):
1879 print
1893 print
1880 # Flush out code object which has been run (and source)
1894 # Flush out code object which has been run (and source)
1881 self.code_to_run = None
1895 self.code_to_run = None
1882 return outflag
1896 return outflag
1883
1897
1884 def push(self, line):
1898 def push(self, line):
1885 """Push a line to the interpreter.
1899 """Push a line to the interpreter.
1886
1900
1887 The line should not have a trailing newline; it may have
1901 The line should not have a trailing newline; it may have
1888 internal newlines. The line is appended to a buffer and the
1902 internal newlines. The line is appended to a buffer and the
1889 interpreter's runsource() method is called with the
1903 interpreter's runsource() method is called with the
1890 concatenated contents of the buffer as source. If this
1904 concatenated contents of the buffer as source. If this
1891 indicates that the command was executed or invalid, the buffer
1905 indicates that the command was executed or invalid, the buffer
1892 is reset; otherwise, the command is incomplete, and the buffer
1906 is reset; otherwise, the command is incomplete, and the buffer
1893 is left as it was after the line was appended. The return
1907 is left as it was after the line was appended. The return
1894 value is 1 if more input is required, 0 if the line was dealt
1908 value is 1 if more input is required, 0 if the line was dealt
1895 with in some way (this is the same as runsource()).
1909 with in some way (this is the same as runsource()).
1896 """
1910 """
1897
1911
1898 # autoindent management should be done here, and not in the
1912 # autoindent management should be done here, and not in the
1899 # interactive loop, since that one is only seen by keyboard input. We
1913 # interactive loop, since that one is only seen by keyboard input. We
1900 # need this done correctly even for code run via runlines (which uses
1914 # need this done correctly even for code run via runlines (which uses
1901 # push).
1915 # push).
1902
1916
1903 #print 'push line: <%s>' % line # dbg
1917 #print 'push line: <%s>' % line # dbg
1904 for subline in line.splitlines():
1918 for subline in line.splitlines():
1905 self.autoindent_update(subline)
1919 self.autoindent_update(subline)
1906 self.buffer.append(line)
1920 self.buffer.append(line)
1907 more = self.runsource('\n'.join(self.buffer), self.filename)
1921 more = self.runsource('\n'.join(self.buffer), self.filename)
1908 if not more:
1922 if not more:
1909 self.resetbuffer()
1923 self.resetbuffer()
1910 return more
1924 return more
1911
1925
1912 def resetbuffer(self):
1926 def resetbuffer(self):
1913 """Reset the input buffer."""
1927 """Reset the input buffer."""
1914 self.buffer[:] = []
1928 self.buffer[:] = []
1915
1929
1916 def raw_input(self,prompt='',continue_prompt=False):
1930 def raw_input(self,prompt='',continue_prompt=False):
1917 """Write a prompt and read a line.
1931 """Write a prompt and read a line.
1918
1932
1919 The returned line does not include the trailing newline.
1933 The returned line does not include the trailing newline.
1920 When the user enters the EOF key sequence, EOFError is raised.
1934 When the user enters the EOF key sequence, EOFError is raised.
1921
1935
1922 Optional inputs:
1936 Optional inputs:
1923
1937
1924 - prompt(''): a string to be printed to prompt the user.
1938 - prompt(''): a string to be printed to prompt the user.
1925
1939
1926 - continue_prompt(False): whether this line is the first one or a
1940 - continue_prompt(False): whether this line is the first one or a
1927 continuation in a sequence of inputs.
1941 continuation in a sequence of inputs.
1928 """
1942 """
1929
1943
1930 try:
1944 try:
1931 line = raw_input_original(prompt)
1945 line = raw_input_original(prompt)
1932 except ValueError:
1946 except ValueError:
1933 warn("\n********\nYou or a %run:ed script called sys.stdin.close() or sys.stdout.close()!\nExiting IPython!")
1947 warn("\n********\nYou or a %run:ed script called sys.stdin.close() or sys.stdout.close()!\nExiting IPython!")
1934 self.exit_now = True
1948 self.exit_now = True
1935 return ""
1949 return ""
1936
1950
1937
1951
1938 # Try to be reasonably smart about not re-indenting pasted input more
1952 # Try to be reasonably smart about not re-indenting pasted input more
1939 # than necessary. We do this by trimming out the auto-indent initial
1953 # than necessary. We do this by trimming out the auto-indent initial
1940 # spaces, if the user's actual input started itself with whitespace.
1954 # spaces, if the user's actual input started itself with whitespace.
1941 #debugx('self.buffer[-1]')
1955 #debugx('self.buffer[-1]')
1942
1956
1943 if self.autoindent:
1957 if self.autoindent:
1944 if num_ini_spaces(line) > self.indent_current_nsp:
1958 if num_ini_spaces(line) > self.indent_current_nsp:
1945 line = line[self.indent_current_nsp:]
1959 line = line[self.indent_current_nsp:]
1946 self.indent_current_nsp = 0
1960 self.indent_current_nsp = 0
1947
1961
1948 # store the unfiltered input before the user has any chance to modify
1962 # store the unfiltered input before the user has any chance to modify
1949 # it.
1963 # it.
1950 if line.strip():
1964 if line.strip():
1951 if continue_prompt:
1965 if continue_prompt:
1952 self.input_hist_raw[-1] += '%s\n' % line
1966 self.input_hist_raw[-1] += '%s\n' % line
1953 if self.has_readline: # and some config option is set?
1967 if self.has_readline: # and some config option is set?
1954 try:
1968 try:
1955 histlen = self.readline.get_current_history_length()
1969 histlen = self.readline.get_current_history_length()
1956 newhist = self.input_hist_raw[-1].rstrip()
1970 newhist = self.input_hist_raw[-1].rstrip()
1957 self.readline.remove_history_item(histlen-1)
1971 self.readline.remove_history_item(histlen-1)
1958 self.readline.replace_history_item(histlen-2,newhist)
1972 self.readline.replace_history_item(histlen-2,newhist)
1959 except AttributeError:
1973 except AttributeError:
1960 pass # re{move,place}_history_item are new in 2.4.
1974 pass # re{move,place}_history_item are new in 2.4.
1961 else:
1975 else:
1962 self.input_hist_raw.append('%s\n' % line)
1976 self.input_hist_raw.append('%s\n' % line)
1963
1977
1964 try:
1978 try:
1965 lineout = self.prefilter(line,continue_prompt)
1979 lineout = self.prefilter(line,continue_prompt)
1966 except:
1980 except:
1967 # blanket except, in case a user-defined prefilter crashes, so it
1981 # blanket except, in case a user-defined prefilter crashes, so it
1968 # can't take all of ipython with it.
1982 # can't take all of ipython with it.
1969 self.showtraceback()
1983 self.showtraceback()
1970 return ''
1984 return ''
1971 else:
1985 else:
1972 return lineout
1986 return lineout
1973
1987
1974 def split_user_input(self,line):
1988 def split_user_input(self,line):
1975 """Split user input into pre-char, function part and rest."""
1989 """Split user input into pre-char, function part and rest."""
1976
1990
1977 lsplit = self.line_split.match(line)
1991 lsplit = self.line_split.match(line)
1978 if lsplit is None: # no regexp match returns None
1992 if lsplit is None: # no regexp match returns None
1979 try:
1993 try:
1980 iFun,theRest = line.split(None,1)
1994 iFun,theRest = line.split(None,1)
1981 except ValueError:
1995 except ValueError:
1982 iFun,theRest = line,''
1996 iFun,theRest = line,''
1983 pre = re.match('^(\s*)(.*)',line).groups()[0]
1997 pre = re.match('^(\s*)(.*)',line).groups()[0]
1984 else:
1998 else:
1985 pre,iFun,theRest = lsplit.groups()
1999 pre,iFun,theRest = lsplit.groups()
1986
2000
1987 #print 'line:<%s>' % line # dbg
2001 #print 'line:<%s>' % line # dbg
1988 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
2002 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
1989 return pre,iFun.strip(),theRest
2003 return pre,iFun.strip(),theRest
1990
2004
1991 def _prefilter(self, line, continue_prompt):
2005 def _prefilter(self, line, continue_prompt):
1992 """Calls different preprocessors, depending on the form of line."""
2006 """Calls different preprocessors, depending on the form of line."""
1993
2007
1994 # All handlers *must* return a value, even if it's blank ('').
2008 # All handlers *must* return a value, even if it's blank ('').
1995
2009
1996 # Lines are NOT logged here. Handlers should process the line as
2010 # Lines are NOT logged here. Handlers should process the line as
1997 # needed, update the cache AND log it (so that the input cache array
2011 # needed, update the cache AND log it (so that the input cache array
1998 # stays synced).
2012 # stays synced).
1999
2013
2000 # This function is _very_ delicate, and since it's also the one which
2014 # This function is _very_ delicate, and since it's also the one which
2001 # determines IPython's response to user input, it must be as efficient
2015 # determines IPython's response to user input, it must be as efficient
2002 # as possible. For this reason it has _many_ returns in it, trying
2016 # as possible. For this reason it has _many_ returns in it, trying
2003 # always to exit as quickly as it can figure out what it needs to do.
2017 # always to exit as quickly as it can figure out what it needs to do.
2004
2018
2005 # This function is the main responsible for maintaining IPython's
2019 # This function is the main responsible for maintaining IPython's
2006 # behavior respectful of Python's semantics. So be _very_ careful if
2020 # behavior respectful of Python's semantics. So be _very_ careful if
2007 # making changes to anything here.
2021 # making changes to anything here.
2008
2022
2009 #.....................................................................
2023 #.....................................................................
2010 # Code begins
2024 # Code begins
2011
2025
2012 #if line.startswith('%crash'): raise RuntimeError,'Crash now!' # dbg
2026 #if line.startswith('%crash'): raise RuntimeError,'Crash now!' # dbg
2013
2027
2014 # save the line away in case we crash, so the post-mortem handler can
2028 # save the line away in case we crash, so the post-mortem handler can
2015 # record it
2029 # record it
2016 self._last_input_line = line
2030 self._last_input_line = line
2017
2031
2018 #print '***line: <%s>' % line # dbg
2032 #print '***line: <%s>' % line # dbg
2019
2033
2020 # the input history needs to track even empty lines
2034 # the input history needs to track even empty lines
2021 stripped = line.strip()
2035 stripped = line.strip()
2022
2036
2023 if not stripped:
2037 if not stripped:
2024 if not continue_prompt:
2038 if not continue_prompt:
2025 self.outputcache.prompt_count -= 1
2039 self.outputcache.prompt_count -= 1
2026 return self.handle_normal(line,continue_prompt)
2040 return self.handle_normal(line,continue_prompt)
2027 #return self.handle_normal('',continue_prompt)
2041 #return self.handle_normal('',continue_prompt)
2028
2042
2029 # print '***cont',continue_prompt # dbg
2043 # print '***cont',continue_prompt # dbg
2030 # special handlers are only allowed for single line statements
2044 # special handlers are only allowed for single line statements
2031 if continue_prompt and not self.rc.multi_line_specials:
2045 if continue_prompt and not self.rc.multi_line_specials:
2032 return self.handle_normal(line,continue_prompt)
2046 return self.handle_normal(line,continue_prompt)
2033
2047
2034
2048
2035 # For the rest, we need the structure of the input
2049 # For the rest, we need the structure of the input
2036 pre,iFun,theRest = self.split_user_input(line)
2050 pre,iFun,theRest = self.split_user_input(line)
2037
2051
2038 # See whether any pre-existing handler can take care of it
2052 # See whether any pre-existing handler can take care of it
2039
2053
2040 rewritten = self.hooks.input_prefilter(stripped)
2054 rewritten = self.hooks.input_prefilter(stripped)
2041 if rewritten != stripped: # ok, some prefilter did something
2055 if rewritten != stripped: # ok, some prefilter did something
2042 rewritten = pre + rewritten # add indentation
2056 rewritten = pre + rewritten # add indentation
2043 return self.handle_normal(rewritten)
2057 return self.handle_normal(rewritten)
2044
2058
2045 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2059 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2046
2060
2047 # First check for explicit escapes in the last/first character
2061 # First check for explicit escapes in the last/first character
2048 handler = None
2062 handler = None
2049 if line[-1] == self.ESC_HELP:
2063 if line[-1] == self.ESC_HELP:
2050 handler = self.esc_handlers.get(line[-1]) # the ? can be at the end
2064 handler = self.esc_handlers.get(line[-1]) # the ? can be at the end
2051 if handler is None:
2065 if handler is None:
2052 # look at the first character of iFun, NOT of line, so we skip
2066 # look at the first character of iFun, NOT of line, so we skip
2053 # leading whitespace in multiline input
2067 # leading whitespace in multiline input
2054 handler = self.esc_handlers.get(iFun[0:1])
2068 handler = self.esc_handlers.get(iFun[0:1])
2055 if handler is not None:
2069 if handler is not None:
2056 return handler(line,continue_prompt,pre,iFun,theRest)
2070 return handler(line,continue_prompt,pre,iFun,theRest)
2057 # Emacs ipython-mode tags certain input lines
2071 # Emacs ipython-mode tags certain input lines
2058 if line.endswith('# PYTHON-MODE'):
2072 if line.endswith('# PYTHON-MODE'):
2059 return self.handle_emacs(line,continue_prompt)
2073 return self.handle_emacs(line,continue_prompt)
2060
2074
2061 # Next, check if we can automatically execute this thing
2075 # Next, check if we can automatically execute this thing
2062
2076
2063 # Allow ! in multi-line statements if multi_line_specials is on:
2077 # Allow ! in multi-line statements if multi_line_specials is on:
2064 if continue_prompt and self.rc.multi_line_specials and \
2078 if continue_prompt and self.rc.multi_line_specials and \
2065 iFun.startswith(self.ESC_SHELL):
2079 iFun.startswith(self.ESC_SHELL):
2066 return self.handle_shell_escape(line,continue_prompt,
2080 return self.handle_shell_escape(line,continue_prompt,
2067 pre=pre,iFun=iFun,
2081 pre=pre,iFun=iFun,
2068 theRest=theRest)
2082 theRest=theRest)
2069
2083
2070 # Let's try to find if the input line is a magic fn
2084 # Let's try to find if the input line is a magic fn
2071 oinfo = None
2085 oinfo = None
2072 if hasattr(self,'magic_'+iFun):
2086 if hasattr(self,'magic_'+iFun):
2073 # WARNING: _ofind uses getattr(), so it can consume generators and
2087 # WARNING: _ofind uses getattr(), so it can consume generators and
2074 # cause other side effects.
2088 # cause other side effects.
2075 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2089 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2076 if oinfo['ismagic']:
2090 if oinfo['ismagic']:
2077 # Be careful not to call magics when a variable assignment is
2091 # Be careful not to call magics when a variable assignment is
2078 # being made (ls='hi', for example)
2092 # being made (ls='hi', for example)
2079 if self.rc.automagic and \
2093 if self.rc.automagic and \
2080 (len(theRest)==0 or theRest[0] not in '!=()<>,') and \
2094 (len(theRest)==0 or theRest[0] not in '!=()<>,') and \
2081 (self.rc.multi_line_specials or not continue_prompt):
2095 (self.rc.multi_line_specials or not continue_prompt):
2082 return self.handle_magic(line,continue_prompt,
2096 return self.handle_magic(line,continue_prompt,
2083 pre,iFun,theRest)
2097 pre,iFun,theRest)
2084 else:
2098 else:
2085 return self.handle_normal(line,continue_prompt)
2099 return self.handle_normal(line,continue_prompt)
2086
2100
2087 # If the rest of the line begins with an (in)equality, assginment or
2101 # If the rest of the line begins with an (in)equality, assginment or
2088 # function call, we should not call _ofind but simply execute it.
2102 # function call, we should not call _ofind but simply execute it.
2089 # This avoids spurious geattr() accesses on objects upon assignment.
2103 # This avoids spurious geattr() accesses on objects upon assignment.
2090 #
2104 #
2091 # It also allows users to assign to either alias or magic names true
2105 # It also allows users to assign to either alias or magic names true
2092 # python variables (the magic/alias systems always take second seat to
2106 # python variables (the magic/alias systems always take second seat to
2093 # true python code).
2107 # true python code).
2094 if theRest and theRest[0] in '!=()':
2108 if theRest and theRest[0] in '!=()':
2095 return self.handle_normal(line,continue_prompt)
2109 return self.handle_normal(line,continue_prompt)
2096
2110
2097 if oinfo is None:
2111 if oinfo is None:
2098 # let's try to ensure that _oinfo is ONLY called when autocall is
2112 # let's try to ensure that _oinfo is ONLY called when autocall is
2099 # on. Since it has inevitable potential side effects, at least
2113 # on. Since it has inevitable potential side effects, at least
2100 # having autocall off should be a guarantee to the user that no
2114 # having autocall off should be a guarantee to the user that no
2101 # weird things will happen.
2115 # weird things will happen.
2102
2116
2103 if self.rc.autocall:
2117 if self.rc.autocall:
2104 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2118 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2105 else:
2119 else:
2106 # in this case, all that's left is either an alias or
2120 # in this case, all that's left is either an alias or
2107 # processing the line normally.
2121 # processing the line normally.
2108 if iFun in self.alias_table:
2122 if iFun in self.alias_table:
2109 # if autocall is off, by not running _ofind we won't know
2123 # if autocall is off, by not running _ofind we won't know
2110 # whether the given name may also exist in one of the
2124 # whether the given name may also exist in one of the
2111 # user's namespace. At this point, it's best to do a
2125 # user's namespace. At this point, it's best to do a
2112 # quick check just to be sure that we don't let aliases
2126 # quick check just to be sure that we don't let aliases
2113 # shadow variables.
2127 # shadow variables.
2114 head = iFun.split('.',1)[0]
2128 head = iFun.split('.',1)[0]
2115 if head in self.user_ns or head in self.internal_ns \
2129 if head in self.user_ns or head in self.internal_ns \
2116 or head in __builtin__.__dict__:
2130 or head in __builtin__.__dict__:
2117 return self.handle_normal(line,continue_prompt)
2131 return self.handle_normal(line,continue_prompt)
2118 else:
2132 else:
2119 return self.handle_alias(line,continue_prompt,
2133 return self.handle_alias(line,continue_prompt,
2120 pre,iFun,theRest)
2134 pre,iFun,theRest)
2121
2135
2122 else:
2136 else:
2123 return self.handle_normal(line,continue_prompt)
2137 return self.handle_normal(line,continue_prompt)
2124
2138
2125 if not oinfo['found']:
2139 if not oinfo['found']:
2126 return self.handle_normal(line,continue_prompt)
2140 return self.handle_normal(line,continue_prompt)
2127 else:
2141 else:
2128 #print 'pre<%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2142 #print 'pre<%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2129 if oinfo['isalias']:
2143 if oinfo['isalias']:
2130 return self.handle_alias(line,continue_prompt,
2144 return self.handle_alias(line,continue_prompt,
2131 pre,iFun,theRest)
2145 pre,iFun,theRest)
2132
2146
2133 if (self.rc.autocall
2147 if (self.rc.autocall
2134 and
2148 and
2135 (
2149 (
2136 #only consider exclusion re if not "," or ";" autoquoting
2150 #only consider exclusion re if not "," or ";" autoquoting
2137 (pre == self.ESC_QUOTE or pre == self.ESC_QUOTE2
2151 (pre == self.ESC_QUOTE or pre == self.ESC_QUOTE2
2138 or pre == self.ESC_PAREN) or
2152 or pre == self.ESC_PAREN) or
2139 (not self.re_exclude_auto.match(theRest)))
2153 (not self.re_exclude_auto.match(theRest)))
2140 and
2154 and
2141 self.re_fun_name.match(iFun) and
2155 self.re_fun_name.match(iFun) and
2142 callable(oinfo['obj'])) :
2156 callable(oinfo['obj'])) :
2143 #print 'going auto' # dbg
2157 #print 'going auto' # dbg
2144 return self.handle_auto(line,continue_prompt,
2158 return self.handle_auto(line,continue_prompt,
2145 pre,iFun,theRest,oinfo['obj'])
2159 pre,iFun,theRest,oinfo['obj'])
2146 else:
2160 else:
2147 #print 'was callable?', callable(oinfo['obj']) # dbg
2161 #print 'was callable?', callable(oinfo['obj']) # dbg
2148 return self.handle_normal(line,continue_prompt)
2162 return self.handle_normal(line,continue_prompt)
2149
2163
2150 # If we get here, we have a normal Python line. Log and return.
2164 # If we get here, we have a normal Python line. Log and return.
2151 return self.handle_normal(line,continue_prompt)
2165 return self.handle_normal(line,continue_prompt)
2152
2166
2153 def _prefilter_dumb(self, line, continue_prompt):
2167 def _prefilter_dumb(self, line, continue_prompt):
2154 """simple prefilter function, for debugging"""
2168 """simple prefilter function, for debugging"""
2155 return self.handle_normal(line,continue_prompt)
2169 return self.handle_normal(line,continue_prompt)
2156
2170
2157
2171
2158 def multiline_prefilter(self, line, continue_prompt):
2172 def multiline_prefilter(self, line, continue_prompt):
2159 """ Run _prefilter for each line of input
2173 """ Run _prefilter for each line of input
2160
2174
2161 Covers cases where there are multiple lines in the user entry,
2175 Covers cases where there are multiple lines in the user entry,
2162 which is the case when the user goes back to a multiline history
2176 which is the case when the user goes back to a multiline history
2163 entry and presses enter.
2177 entry and presses enter.
2164
2178
2165 """
2179 """
2166 out = []
2180 out = []
2167 for l in line.rstrip('\n').split('\n'):
2181 for l in line.rstrip('\n').split('\n'):
2168 out.append(self._prefilter(l, continue_prompt))
2182 out.append(self._prefilter(l, continue_prompt))
2169 return '\n'.join(out)
2183 return '\n'.join(out)
2170
2184
2171 # Set the default prefilter() function (this can be user-overridden)
2185 # Set the default prefilter() function (this can be user-overridden)
2172 prefilter = multiline_prefilter
2186 prefilter = multiline_prefilter
2173
2187
2174 def handle_normal(self,line,continue_prompt=None,
2188 def handle_normal(self,line,continue_prompt=None,
2175 pre=None,iFun=None,theRest=None):
2189 pre=None,iFun=None,theRest=None):
2176 """Handle normal input lines. Use as a template for handlers."""
2190 """Handle normal input lines. Use as a template for handlers."""
2177
2191
2178 # With autoindent on, we need some way to exit the input loop, and I
2192 # With autoindent on, we need some way to exit the input loop, and I
2179 # don't want to force the user to have to backspace all the way to
2193 # don't want to force the user to have to backspace all the way to
2180 # clear the line. The rule will be in this case, that either two
2194 # clear the line. The rule will be in this case, that either two
2181 # lines of pure whitespace in a row, or a line of pure whitespace but
2195 # lines of pure whitespace in a row, or a line of pure whitespace but
2182 # of a size different to the indent level, will exit the input loop.
2196 # of a size different to the indent level, will exit the input loop.
2183
2197
2184 if (continue_prompt and self.autoindent and line.isspace() and
2198 if (continue_prompt and self.autoindent and line.isspace() and
2185 (0 < abs(len(line) - self.indent_current_nsp) <= 2 or
2199 (0 < abs(len(line) - self.indent_current_nsp) <= 2 or
2186 (self.buffer[-1]).isspace() )):
2200 (self.buffer[-1]).isspace() )):
2187 line = ''
2201 line = ''
2188
2202
2189 self.log(line,line,continue_prompt)
2203 self.log(line,line,continue_prompt)
2190 return line
2204 return line
2191
2205
2192 def handle_alias(self,line,continue_prompt=None,
2206 def handle_alias(self,line,continue_prompt=None,
2193 pre=None,iFun=None,theRest=None):
2207 pre=None,iFun=None,theRest=None):
2194 """Handle alias input lines. """
2208 """Handle alias input lines. """
2195
2209
2196 # pre is needed, because it carries the leading whitespace. Otherwise
2210 # pre is needed, because it carries the leading whitespace. Otherwise
2197 # aliases won't work in indented sections.
2211 # aliases won't work in indented sections.
2198 transformed = self.expand_aliases(iFun, theRest)
2212 transformed = self.expand_aliases(iFun, theRest)
2199 line_out = '%s_ip.system(%s)' % (pre, make_quoted_expr( transformed ))
2213 line_out = '%s_ip.system(%s)' % (pre, make_quoted_expr( transformed ))
2200 self.log(line,line_out,continue_prompt)
2214 self.log(line,line_out,continue_prompt)
2201 #print 'line out:',line_out # dbg
2215 #print 'line out:',line_out # dbg
2202 return line_out
2216 return line_out
2203
2217
2204 def handle_shell_escape(self, line, continue_prompt=None,
2218 def handle_shell_escape(self, line, continue_prompt=None,
2205 pre=None,iFun=None,theRest=None):
2219 pre=None,iFun=None,theRest=None):
2206 """Execute the line in a shell, empty return value"""
2220 """Execute the line in a shell, empty return value"""
2207
2221
2208 #print 'line in :', `line` # dbg
2222 #print 'line in :', `line` # dbg
2209 # Example of a special handler. Others follow a similar pattern.
2223 # Example of a special handler. Others follow a similar pattern.
2210 if line.lstrip().startswith('!!'):
2224 if line.lstrip().startswith('!!'):
2211 # rewrite iFun/theRest to properly hold the call to %sx and
2225 # rewrite iFun/theRest to properly hold the call to %sx and
2212 # the actual command to be executed, so handle_magic can work
2226 # the actual command to be executed, so handle_magic can work
2213 # correctly
2227 # correctly
2214 theRest = '%s %s' % (iFun[2:],theRest)
2228 theRest = '%s %s' % (iFun[2:],theRest)
2215 iFun = 'sx'
2229 iFun = 'sx'
2216 return self.handle_magic('%ssx %s' % (self.ESC_MAGIC,
2230 return self.handle_magic('%ssx %s' % (self.ESC_MAGIC,
2217 line.lstrip()[2:]),
2231 line.lstrip()[2:]),
2218 continue_prompt,pre,iFun,theRest)
2232 continue_prompt,pre,iFun,theRest)
2219 else:
2233 else:
2220 cmd=line.lstrip().lstrip('!')
2234 cmd=line.lstrip().lstrip('!')
2221 line_out = '%s_ip.system(%s)' % (pre,make_quoted_expr(cmd))
2235 line_out = '%s_ip.system(%s)' % (pre,make_quoted_expr(cmd))
2222 # update cache/log and return
2236 # update cache/log and return
2223 self.log(line,line_out,continue_prompt)
2237 self.log(line,line_out,continue_prompt)
2224 return line_out
2238 return line_out
2225
2239
2226 def handle_magic(self, line, continue_prompt=None,
2240 def handle_magic(self, line, continue_prompt=None,
2227 pre=None,iFun=None,theRest=None):
2241 pre=None,iFun=None,theRest=None):
2228 """Execute magic functions."""
2242 """Execute magic functions."""
2229
2243
2230
2244
2231 cmd = '%s_ip.magic(%s)' % (pre,make_quoted_expr(iFun + " " + theRest))
2245 cmd = '%s_ip.magic(%s)' % (pre,make_quoted_expr(iFun + " " + theRest))
2232 self.log(line,cmd,continue_prompt)
2246 self.log(line,cmd,continue_prompt)
2233 #print 'in handle_magic, cmd=<%s>' % cmd # dbg
2247 #print 'in handle_magic, cmd=<%s>' % cmd # dbg
2234 return cmd
2248 return cmd
2235
2249
2236 def handle_auto(self, line, continue_prompt=None,
2250 def handle_auto(self, line, continue_prompt=None,
2237 pre=None,iFun=None,theRest=None,obj=None):
2251 pre=None,iFun=None,theRest=None,obj=None):
2238 """Hande lines which can be auto-executed, quoting if requested."""
2252 """Hande lines which can be auto-executed, quoting if requested."""
2239
2253
2240 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2254 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2241
2255
2242 # This should only be active for single-line input!
2256 # This should only be active for single-line input!
2243 if continue_prompt:
2257 if continue_prompt:
2244 self.log(line,line,continue_prompt)
2258 self.log(line,line,continue_prompt)
2245 return line
2259 return line
2246
2260
2247 auto_rewrite = True
2261 auto_rewrite = True
2248
2262
2249 if pre == self.ESC_QUOTE:
2263 if pre == self.ESC_QUOTE:
2250 # Auto-quote splitting on whitespace
2264 # Auto-quote splitting on whitespace
2251 newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) )
2265 newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) )
2252 elif pre == self.ESC_QUOTE2:
2266 elif pre == self.ESC_QUOTE2:
2253 # Auto-quote whole string
2267 # Auto-quote whole string
2254 newcmd = '%s("%s")' % (iFun,theRest)
2268 newcmd = '%s("%s")' % (iFun,theRest)
2255 elif pre == self.ESC_PAREN:
2269 elif pre == self.ESC_PAREN:
2256 newcmd = '%s(%s)' % (iFun,",".join(theRest.split()))
2270 newcmd = '%s(%s)' % (iFun,",".join(theRest.split()))
2257 else:
2271 else:
2258 # Auto-paren.
2272 # Auto-paren.
2259 # We only apply it to argument-less calls if the autocall
2273 # We only apply it to argument-less calls if the autocall
2260 # parameter is set to 2. We only need to check that autocall is <
2274 # parameter is set to 2. We only need to check that autocall is <
2261 # 2, since this function isn't called unless it's at least 1.
2275 # 2, since this function isn't called unless it's at least 1.
2262 if not theRest and (self.rc.autocall < 2):
2276 if not theRest and (self.rc.autocall < 2):
2263 newcmd = '%s %s' % (iFun,theRest)
2277 newcmd = '%s %s' % (iFun,theRest)
2264 auto_rewrite = False
2278 auto_rewrite = False
2265 else:
2279 else:
2266 if theRest.startswith('['):
2280 if theRest.startswith('['):
2267 if hasattr(obj,'__getitem__'):
2281 if hasattr(obj,'__getitem__'):
2268 # Don't autocall in this case: item access for an object
2282 # Don't autocall in this case: item access for an object
2269 # which is BOTH callable and implements __getitem__.
2283 # which is BOTH callable and implements __getitem__.
2270 newcmd = '%s %s' % (iFun,theRest)
2284 newcmd = '%s %s' % (iFun,theRest)
2271 auto_rewrite = False
2285 auto_rewrite = False
2272 else:
2286 else:
2273 # if the object doesn't support [] access, go ahead and
2287 # if the object doesn't support [] access, go ahead and
2274 # autocall
2288 # autocall
2275 newcmd = '%s(%s)' % (iFun.rstrip(),theRest)
2289 newcmd = '%s(%s)' % (iFun.rstrip(),theRest)
2276 elif theRest.endswith(';'):
2290 elif theRest.endswith(';'):
2277 newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1])
2291 newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1])
2278 else:
2292 else:
2279 newcmd = '%s(%s)' % (iFun.rstrip(), theRest)
2293 newcmd = '%s(%s)' % (iFun.rstrip(), theRest)
2280
2294
2281 if auto_rewrite:
2295 if auto_rewrite:
2282 print >>Term.cout, self.outputcache.prompt1.auto_rewrite() + newcmd
2296 print >>Term.cout, self.outputcache.prompt1.auto_rewrite() + newcmd
2283 # log what is now valid Python, not the actual user input (without the
2297 # log what is now valid Python, not the actual user input (without the
2284 # final newline)
2298 # final newline)
2285 self.log(line,newcmd,continue_prompt)
2299 self.log(line,newcmd,continue_prompt)
2286 return newcmd
2300 return newcmd
2287
2301
2288 def handle_help(self, line, continue_prompt=None,
2302 def handle_help(self, line, continue_prompt=None,
2289 pre=None,iFun=None,theRest=None):
2303 pre=None,iFun=None,theRest=None):
2290 """Try to get some help for the object.
2304 """Try to get some help for the object.
2291
2305
2292 obj? or ?obj -> basic information.
2306 obj? or ?obj -> basic information.
2293 obj?? or ??obj -> more details.
2307 obj?? or ??obj -> more details.
2294 """
2308 """
2295
2309
2296 # We need to make sure that we don't process lines which would be
2310 # We need to make sure that we don't process lines which would be
2297 # otherwise valid python, such as "x=1 # what?"
2311 # otherwise valid python, such as "x=1 # what?"
2298 try:
2312 try:
2299 codeop.compile_command(line)
2313 codeop.compile_command(line)
2300 except SyntaxError:
2314 except SyntaxError:
2301 # We should only handle as help stuff which is NOT valid syntax
2315 # We should only handle as help stuff which is NOT valid syntax
2302 if line[0]==self.ESC_HELP:
2316 if line[0]==self.ESC_HELP:
2303 line = line[1:]
2317 line = line[1:]
2304 elif line[-1]==self.ESC_HELP:
2318 elif line[-1]==self.ESC_HELP:
2305 line = line[:-1]
2319 line = line[:-1]
2306 self.log(line,'#?'+line,continue_prompt)
2320 self.log(line,'#?'+line,continue_prompt)
2307 if line:
2321 if line:
2308 self.magic_pinfo(line)
2322 self.magic_pinfo(line)
2309 else:
2323 else:
2310 page(self.usage,screen_lines=self.rc.screen_length)
2324 page(self.usage,screen_lines=self.rc.screen_length)
2311 return '' # Empty string is needed here!
2325 return '' # Empty string is needed here!
2312 except:
2326 except:
2313 # Pass any other exceptions through to the normal handler
2327 # Pass any other exceptions through to the normal handler
2314 return self.handle_normal(line,continue_prompt)
2328 return self.handle_normal(line,continue_prompt)
2315 else:
2329 else:
2316 # If the code compiles ok, we should handle it normally
2330 # If the code compiles ok, we should handle it normally
2317 return self.handle_normal(line,continue_prompt)
2331 return self.handle_normal(line,continue_prompt)
2318
2332
2319 def getapi(self):
2333 def getapi(self):
2320 """ Get an IPApi object for this shell instance
2334 """ Get an IPApi object for this shell instance
2321
2335
2322 Getting an IPApi object is always preferable to accessing the shell
2336 Getting an IPApi object is always preferable to accessing the shell
2323 directly, but this holds true especially for extensions.
2337 directly, but this holds true especially for extensions.
2324
2338
2325 It should always be possible to implement an extension with IPApi
2339 It should always be possible to implement an extension with IPApi
2326 alone. If not, contact maintainer to request an addition.
2340 alone. If not, contact maintainer to request an addition.
2327
2341
2328 """
2342 """
2329 return self.api
2343 return self.api
2330
2344
2331 def handle_emacs(self,line,continue_prompt=None,
2345 def handle_emacs(self,line,continue_prompt=None,
2332 pre=None,iFun=None,theRest=None):
2346 pre=None,iFun=None,theRest=None):
2333 """Handle input lines marked by python-mode."""
2347 """Handle input lines marked by python-mode."""
2334
2348
2335 # Currently, nothing is done. Later more functionality can be added
2349 # Currently, nothing is done. Later more functionality can be added
2336 # here if needed.
2350 # here if needed.
2337
2351
2338 # The input cache shouldn't be updated
2352 # The input cache shouldn't be updated
2339
2353
2340 return line
2354 return line
2341
2355
2342 def mktempfile(self,data=None):
2356 def mktempfile(self,data=None):
2343 """Make a new tempfile and return its filename.
2357 """Make a new tempfile and return its filename.
2344
2358
2345 This makes a call to tempfile.mktemp, but it registers the created
2359 This makes a call to tempfile.mktemp, but it registers the created
2346 filename internally so ipython cleans it up at exit time.
2360 filename internally so ipython cleans it up at exit time.
2347
2361
2348 Optional inputs:
2362 Optional inputs:
2349
2363
2350 - data(None): if data is given, it gets written out to the temp file
2364 - data(None): if data is given, it gets written out to the temp file
2351 immediately, and the file is closed again."""
2365 immediately, and the file is closed again."""
2352
2366
2353 filename = tempfile.mktemp('.py','ipython_edit_')
2367 filename = tempfile.mktemp('.py','ipython_edit_')
2354 self.tempfiles.append(filename)
2368 self.tempfiles.append(filename)
2355
2369
2356 if data:
2370 if data:
2357 tmp_file = open(filename,'w')
2371 tmp_file = open(filename,'w')
2358 tmp_file.write(data)
2372 tmp_file.write(data)
2359 tmp_file.close()
2373 tmp_file.close()
2360 return filename
2374 return filename
2361
2375
2362 def write(self,data):
2376 def write(self,data):
2363 """Write a string to the default output"""
2377 """Write a string to the default output"""
2364 Term.cout.write(data)
2378 Term.cout.write(data)
2365
2379
2366 def write_err(self,data):
2380 def write_err(self,data):
2367 """Write a string to the default error output"""
2381 """Write a string to the default error output"""
2368 Term.cerr.write(data)
2382 Term.cerr.write(data)
2369
2383
2370 def exit(self):
2384 def exit(self):
2371 """Handle interactive exit.
2385 """Handle interactive exit.
2372
2386
2373 This method sets the exit_now attribute."""
2387 This method sets the exit_now attribute."""
2374
2388
2375 if self.rc.confirm_exit:
2389 if self.rc.confirm_exit:
2376 if self.ask_yes_no('Do you really want to exit ([y]/n)?','y'):
2390 if self.ask_yes_no('Do you really want to exit ([y]/n)?','y'):
2377 self.exit_now = True
2391 self.exit_now = True
2378 else:
2392 else:
2379 self.exit_now = True
2393 self.exit_now = True
2380
2394
2381 def safe_execfile(self,fname,*where,**kw):
2395 def safe_execfile(self,fname,*where,**kw):
2382 fname = os.path.expanduser(fname)
2396 fname = os.path.expanduser(fname)
2383
2397
2384 try:
2398 try:
2385 xfile = open(fname)
2399 xfile = open(fname)
2386 except:
2400 except:
2387 print >> Term.cerr, \
2401 print >> Term.cerr, \
2388 'Could not open file <%s> for safe execution.' % fname
2402 'Could not open file <%s> for safe execution.' % fname
2389 return None
2403 return None
2390
2404
2391 kw.setdefault('islog',0)
2405 kw.setdefault('islog',0)
2392 kw.setdefault('quiet',1)
2406 kw.setdefault('quiet',1)
2393 kw.setdefault('exit_ignore',0)
2407 kw.setdefault('exit_ignore',0)
2394 first = xfile.readline()
2408 first = xfile.readline()
2395 loghead = str(self.loghead_tpl).split('\n',1)[0].strip()
2409 loghead = str(self.loghead_tpl).split('\n',1)[0].strip()
2396 xfile.close()
2410 xfile.close()
2397 # line by line execution
2411 # line by line execution
2398 if first.startswith(loghead) or kw['islog']:
2412 if first.startswith(loghead) or kw['islog']:
2399 print 'Loading log file <%s> one line at a time...' % fname
2413 print 'Loading log file <%s> one line at a time...' % fname
2400 if kw['quiet']:
2414 if kw['quiet']:
2401 stdout_save = sys.stdout
2415 stdout_save = sys.stdout
2402 sys.stdout = StringIO.StringIO()
2416 sys.stdout = StringIO.StringIO()
2403 try:
2417 try:
2404 globs,locs = where[0:2]
2418 globs,locs = where[0:2]
2405 except:
2419 except:
2406 try:
2420 try:
2407 globs = locs = where[0]
2421 globs = locs = where[0]
2408 except:
2422 except:
2409 globs = locs = globals()
2423 globs = locs = globals()
2410 badblocks = []
2424 badblocks = []
2411
2425
2412 # we also need to identify indented blocks of code when replaying
2426 # we also need to identify indented blocks of code when replaying
2413 # logs and put them together before passing them to an exec
2427 # logs and put them together before passing them to an exec
2414 # statement. This takes a bit of regexp and look-ahead work in the
2428 # statement. This takes a bit of regexp and look-ahead work in the
2415 # file. It's easiest if we swallow the whole thing in memory
2429 # file. It's easiest if we swallow the whole thing in memory
2416 # first, and manually walk through the lines list moving the
2430 # first, and manually walk through the lines list moving the
2417 # counter ourselves.
2431 # counter ourselves.
2418 indent_re = re.compile('\s+\S')
2432 indent_re = re.compile('\s+\S')
2419 xfile = open(fname)
2433 xfile = open(fname)
2420 filelines = xfile.readlines()
2434 filelines = xfile.readlines()
2421 xfile.close()
2435 xfile.close()
2422 nlines = len(filelines)
2436 nlines = len(filelines)
2423 lnum = 0
2437 lnum = 0
2424 while lnum < nlines:
2438 while lnum < nlines:
2425 line = filelines[lnum]
2439 line = filelines[lnum]
2426 lnum += 1
2440 lnum += 1
2427 # don't re-insert logger status info into cache
2441 # don't re-insert logger status info into cache
2428 if line.startswith('#log#'):
2442 if line.startswith('#log#'):
2429 continue
2443 continue
2430 else:
2444 else:
2431 # build a block of code (maybe a single line) for execution
2445 # build a block of code (maybe a single line) for execution
2432 block = line
2446 block = line
2433 try:
2447 try:
2434 next = filelines[lnum] # lnum has already incremented
2448 next = filelines[lnum] # lnum has already incremented
2435 except:
2449 except:
2436 next = None
2450 next = None
2437 while next and indent_re.match(next):
2451 while next and indent_re.match(next):
2438 block += next
2452 block += next
2439 lnum += 1
2453 lnum += 1
2440 try:
2454 try:
2441 next = filelines[lnum]
2455 next = filelines[lnum]
2442 except:
2456 except:
2443 next = None
2457 next = None
2444 # now execute the block of one or more lines
2458 # now execute the block of one or more lines
2445 try:
2459 try:
2446 exec block in globs,locs
2460 exec block in globs,locs
2447 except SystemExit:
2461 except SystemExit:
2448 pass
2462 pass
2449 except:
2463 except:
2450 badblocks.append(block.rstrip())
2464 badblocks.append(block.rstrip())
2451 if kw['quiet']: # restore stdout
2465 if kw['quiet']: # restore stdout
2452 sys.stdout.close()
2466 sys.stdout.close()
2453 sys.stdout = stdout_save
2467 sys.stdout = stdout_save
2454 print 'Finished replaying log file <%s>' % fname
2468 print 'Finished replaying log file <%s>' % fname
2455 if badblocks:
2469 if badblocks:
2456 print >> sys.stderr, ('\nThe following lines/blocks in file '
2470 print >> sys.stderr, ('\nThe following lines/blocks in file '
2457 '<%s> reported errors:' % fname)
2471 '<%s> reported errors:' % fname)
2458
2472
2459 for badline in badblocks:
2473 for badline in badblocks:
2460 print >> sys.stderr, badline
2474 print >> sys.stderr, badline
2461 else: # regular file execution
2475 else: # regular file execution
2462 try:
2476 try:
2463 execfile(fname,*where)
2477 execfile(fname,*where)
2464 except SyntaxError:
2478 except SyntaxError:
2465 self.showsyntaxerror()
2479 self.showsyntaxerror()
2466 warn('Failure executing file: <%s>' % fname)
2480 warn('Failure executing file: <%s>' % fname)
2467 except SystemExit,status:
2481 except SystemExit,status:
2468 if not kw['exit_ignore']:
2482 if not kw['exit_ignore']:
2469 self.showtraceback()
2483 self.showtraceback()
2470 warn('Failure executing file: <%s>' % fname)
2484 warn('Failure executing file: <%s>' % fname)
2471 except:
2485 except:
2472 self.showtraceback()
2486 self.showtraceback()
2473 warn('Failure executing file: <%s>' % fname)
2487 warn('Failure executing file: <%s>' % fname)
2474
2488
2475 #************************* end of file <iplib.py> *****************************
2489 #************************* end of file <iplib.py> *****************************
@@ -1,5906 +1,5910 b''
1 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1 2006-11-03 Walter Doerwald <walter@livinglogic.de>
2
2
3 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
3 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
4 generic functions (using Philip J. Eby's simplegeneric package).
4 generic functions (using Philip J. Eby's simplegeneric package).
5 This makes it possible to customize the display of third-party classes
5 This makes it possible to customize the display of third-party classes
6 without having to monkeypatch them. xiter() no longer supports a mode
6 without having to monkeypatch them. xiter() no longer supports a mode
7 argument and the XMode class has been removed. The same functionality can
7 argument and the XMode class has been removed. The same functionality can
8 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
8 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
9 One consequence of the switch to generic functions is that xrepr() and
9 One consequence of the switch to generic functions is that xrepr() and
10 xattrs() implementation must define the default value for the mode
10 xattrs() implementation must define the default value for the mode
11 argument themselves and xattrs() implementations must return real
11 argument themselves and xattrs() implementations must return real
12 descriptors.
12 descriptors.
13
13
14 * IPython/external: This new subpackage will contain all third-party
14 * IPython/external: This new subpackage will contain all third-party
15 packages that are bundled with IPython. (The first one is simplegeneric).
15 packages that are bundled with IPython. (The first one is simplegeneric).
16
16
17 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
17 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
18 directory which as been dropped in r1703.
18 directory which as been dropped in r1703.
19
19
20 * IPython/Extensions/ipipe.py (iless): Fixed.
20 * IPython/Extensions/ipipe.py (iless): Fixed.
21
21
22 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
22 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
23
23
24 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
24 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
25
25
26 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
27 handling in variable expansion so that shells and magics recognize
28 function local scopes correctly. Bug reported by Brian.
29
26 * scripts/ipython: remove the very first entry in sys.path which
30 * scripts/ipython: remove the very first entry in sys.path which
27 Python auto-inserts for scripts, so that sys.path under IPython is
31 Python auto-inserts for scripts, so that sys.path under IPython is
28 as similar as possible to that under plain Python.
32 as similar as possible to that under plain Python.
29
33
30 * IPython/completer.py (IPCompleter.file_matches): Fix
34 * IPython/completer.py (IPCompleter.file_matches): Fix
31 tab-completion so that quotes are not closed unless the completion
35 tab-completion so that quotes are not closed unless the completion
32 is unambiguous. After a request by Stefan. Minor cleanups in
36 is unambiguous. After a request by Stefan. Minor cleanups in
33 ipy_stock_completers.
37 ipy_stock_completers.
34
38
35 2006-11-02 Ville Vainio <vivainio@gmail.com>
39 2006-11-02 Ville Vainio <vivainio@gmail.com>
36
40
37 * ipy_stock_completers.py: Add %run and %cd completers.
41 * ipy_stock_completers.py: Add %run and %cd completers.
38
42
39 * completer.py: Try running custom completer for both
43 * completer.py: Try running custom completer for both
40 "foo" and "%foo" if the command is just "foo". Ignore case
44 "foo" and "%foo" if the command is just "foo". Ignore case
41 when filtering possible completions.
45 when filtering possible completions.
42
46
43 * UserConfig/ipy_user_conf.py: install stock completers as default
47 * UserConfig/ipy_user_conf.py: install stock completers as default
44
48
45 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
49 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
46 simplified readline history save / restore through a wrapper
50 simplified readline history save / restore through a wrapper
47 function
51 function
48
52
49
53
50 2006-10-31 Ville Vainio <vivainio@gmail.com>
54 2006-10-31 Ville Vainio <vivainio@gmail.com>
51
55
52 * strdispatch.py, completer.py, ipy_stock_completers.py:
56 * strdispatch.py, completer.py, ipy_stock_completers.py:
53 Allow str_key ("command") in completer hooks. Implement
57 Allow str_key ("command") in completer hooks. Implement
54 trivial completer for 'import' (stdlib modules only). Rename
58 trivial completer for 'import' (stdlib modules only). Rename
55 ipy_linux_package_managers.py to ipy_stock_completers.py.
59 ipy_linux_package_managers.py to ipy_stock_completers.py.
56 SVN completer.
60 SVN completer.
57
61
58 * Extensions/ledit.py: %magic line editor for easily and
62 * Extensions/ledit.py: %magic line editor for easily and
59 incrementally manipulating lists of strings. The magic command
63 incrementally manipulating lists of strings. The magic command
60 name is %led.
64 name is %led.
61
65
62 2006-10-30 Ville Vainio <vivainio@gmail.com>
66 2006-10-30 Ville Vainio <vivainio@gmail.com>
63
67
64 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
68 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
65 Bernsteins's patches for pydb integration.
69 Bernsteins's patches for pydb integration.
66 http://bashdb.sourceforge.net/pydb/
70 http://bashdb.sourceforge.net/pydb/
67
71
68 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
72 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
69 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
73 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
70 custom completer hook to allow the users to implement their own
74 custom completer hook to allow the users to implement their own
71 completers. See ipy_linux_package_managers.py for example. The
75 completers. See ipy_linux_package_managers.py for example. The
72 hook name is 'complete_command'.
76 hook name is 'complete_command'.
73
77
74 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
78 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
75
79
76 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
80 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
77 Numeric leftovers.
81 Numeric leftovers.
78
82
79 * ipython.el (py-execute-region): apply Stefan's patch to fix
83 * ipython.el (py-execute-region): apply Stefan's patch to fix
80 garbled results if the python shell hasn't been previously started.
84 garbled results if the python shell hasn't been previously started.
81
85
82 * IPython/genutils.py (arg_split): moved to genutils, since it's a
86 * IPython/genutils.py (arg_split): moved to genutils, since it's a
83 pretty generic function and useful for other things.
87 pretty generic function and useful for other things.
84
88
85 * IPython/OInspect.py (getsource): Add customizable source
89 * IPython/OInspect.py (getsource): Add customizable source
86 extractor. After a request/patch form W. Stein (SAGE).
90 extractor. After a request/patch form W. Stein (SAGE).
87
91
88 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
92 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
89 window size to a more reasonable value from what pexpect does,
93 window size to a more reasonable value from what pexpect does,
90 since their choice causes wrapping bugs with long input lines.
94 since their choice causes wrapping bugs with long input lines.
91
95
92 2006-10-28 Ville Vainio <vivainio@gmail.com>
96 2006-10-28 Ville Vainio <vivainio@gmail.com>
93
97
94 * Magic.py (%run): Save and restore the readline history from
98 * Magic.py (%run): Save and restore the readline history from
95 file around %run commands to prevent side effects from
99 file around %run commands to prevent side effects from
96 %runned programs that might use readline (e.g. pydb).
100 %runned programs that might use readline (e.g. pydb).
97
101
98 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
102 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
99 invoking the pydb enhanced debugger.
103 invoking the pydb enhanced debugger.
100
104
101 2006-10-23 Walter Doerwald <walter@livinglogic.de>
105 2006-10-23 Walter Doerwald <walter@livinglogic.de>
102
106
103 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
107 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
104 call the base class method and propagate the return value to
108 call the base class method and propagate the return value to
105 ifile. This is now done by path itself.
109 ifile. This is now done by path itself.
106
110
107 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
111 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
108
112
109 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
113 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
110 api: set_crash_handler(), to expose the ability to change the
114 api: set_crash_handler(), to expose the ability to change the
111 internal crash handler.
115 internal crash handler.
112
116
113 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
117 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
114 the various parameters of the crash handler so that apps using
118 the various parameters of the crash handler so that apps using
115 IPython as their engine can customize crash handling. Ipmlemented
119 IPython as their engine can customize crash handling. Ipmlemented
116 at the request of SAGE.
120 at the request of SAGE.
117
121
118 2006-10-14 Ville Vainio <vivainio@gmail.com>
122 2006-10-14 Ville Vainio <vivainio@gmail.com>
119
123
120 * Magic.py, ipython.el: applied first "safe" part of Rocky
124 * Magic.py, ipython.el: applied first "safe" part of Rocky
121 Bernstein's patch set for pydb integration.
125 Bernstein's patch set for pydb integration.
122
126
123 * Magic.py (%unalias, %alias): %store'd aliases can now be
127 * Magic.py (%unalias, %alias): %store'd aliases can now be
124 removed with '%unalias'. %alias w/o args now shows most
128 removed with '%unalias'. %alias w/o args now shows most
125 interesting (stored / manually defined) aliases last
129 interesting (stored / manually defined) aliases last
126 where they catch the eye w/o scrolling.
130 where they catch the eye w/o scrolling.
127
131
128 * Magic.py (%rehashx), ext_rehashdir.py: files with
132 * Magic.py (%rehashx), ext_rehashdir.py: files with
129 'py' extension are always considered executable, even
133 'py' extension are always considered executable, even
130 when not in PATHEXT environment variable.
134 when not in PATHEXT environment variable.
131
135
132 2006-10-12 Ville Vainio <vivainio@gmail.com>
136 2006-10-12 Ville Vainio <vivainio@gmail.com>
133
137
134 * jobctrl.py: Add new "jobctrl" extension for spawning background
138 * jobctrl.py: Add new "jobctrl" extension for spawning background
135 processes with "&find /". 'import jobctrl' to try it out. Requires
139 processes with "&find /". 'import jobctrl' to try it out. Requires
136 'subprocess' module, standard in python 2.4+.
140 'subprocess' module, standard in python 2.4+.
137
141
138 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
142 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
139 so if foo -> bar and bar -> baz, then foo -> baz.
143 so if foo -> bar and bar -> baz, then foo -> baz.
140
144
141 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
145 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
142
146
143 * IPython/Magic.py (Magic.parse_options): add a new posix option
147 * IPython/Magic.py (Magic.parse_options): add a new posix option
144 to allow parsing of input args in magics that doesn't strip quotes
148 to allow parsing of input args in magics that doesn't strip quotes
145 (if posix=False). This also closes %timeit bug reported by
149 (if posix=False). This also closes %timeit bug reported by
146 Stefan.
150 Stefan.
147
151
148 2006-10-03 Ville Vainio <vivainio@gmail.com>
152 2006-10-03 Ville Vainio <vivainio@gmail.com>
149
153
150 * iplib.py (raw_input, interact): Return ValueError catching for
154 * iplib.py (raw_input, interact): Return ValueError catching for
151 raw_input. Fixes infinite loop for sys.stdin.close() or
155 raw_input. Fixes infinite loop for sys.stdin.close() or
152 sys.stdout.close().
156 sys.stdout.close().
153
157
154 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
158 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
155
159
156 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
160 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
157 to help in handling doctests. irunner is now pretty useful for
161 to help in handling doctests. irunner is now pretty useful for
158 running standalone scripts and simulate a full interactive session
162 running standalone scripts and simulate a full interactive session
159 in a format that can be then pasted as a doctest.
163 in a format that can be then pasted as a doctest.
160
164
161 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
165 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
162 on top of the default (useless) ones. This also fixes the nasty
166 on top of the default (useless) ones. This also fixes the nasty
163 way in which 2.5's Quitter() exits (reverted [1785]).
167 way in which 2.5's Quitter() exits (reverted [1785]).
164
168
165 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
169 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
166 2.5.
170 2.5.
167
171
168 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
172 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
169 color scheme is updated as well when color scheme is changed
173 color scheme is updated as well when color scheme is changed
170 interactively.
174 interactively.
171
175
172 2006-09-27 Ville Vainio <vivainio@gmail.com>
176 2006-09-27 Ville Vainio <vivainio@gmail.com>
173
177
174 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
178 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
175 infinite loop and just exit. It's a hack, but will do for a while.
179 infinite loop and just exit. It's a hack, but will do for a while.
176
180
177 2006-08-25 Walter Doerwald <walter@livinglogic.de>
181 2006-08-25 Walter Doerwald <walter@livinglogic.de>
178
182
179 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
183 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
180 the constructor, this makes it possible to get a list of only directories
184 the constructor, this makes it possible to get a list of only directories
181 or only files.
185 or only files.
182
186
183 2006-08-12 Ville Vainio <vivainio@gmail.com>
187 2006-08-12 Ville Vainio <vivainio@gmail.com>
184
188
185 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
189 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
186 they broke unittest
190 they broke unittest
187
191
188 2006-08-11 Ville Vainio <vivainio@gmail.com>
192 2006-08-11 Ville Vainio <vivainio@gmail.com>
189
193
190 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
194 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
191 by resolving issue properly, i.e. by inheriting FakeModule
195 by resolving issue properly, i.e. by inheriting FakeModule
192 from types.ModuleType. Pickling ipython interactive data
196 from types.ModuleType. Pickling ipython interactive data
193 should still work as usual (testing appreciated).
197 should still work as usual (testing appreciated).
194
198
195 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
199 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
196
200
197 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
201 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
198 running under python 2.3 with code from 2.4 to fix a bug with
202 running under python 2.3 with code from 2.4 to fix a bug with
199 help(). Reported by the Debian maintainers, Norbert Tretkowski
203 help(). Reported by the Debian maintainers, Norbert Tretkowski
200 <norbert-AT-tretkowski.de> and Alexandre Fayolle
204 <norbert-AT-tretkowski.de> and Alexandre Fayolle
201 <afayolle-AT-debian.org>.
205 <afayolle-AT-debian.org>.
202
206
203 2006-08-04 Walter Doerwald <walter@livinglogic.de>
207 2006-08-04 Walter Doerwald <walter@livinglogic.de>
204
208
205 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
209 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
206 (which was displaying "quit" twice).
210 (which was displaying "quit" twice).
207
211
208 2006-07-28 Walter Doerwald <walter@livinglogic.de>
212 2006-07-28 Walter Doerwald <walter@livinglogic.de>
209
213
210 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
214 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
211 the mode argument).
215 the mode argument).
212
216
213 2006-07-27 Walter Doerwald <walter@livinglogic.de>
217 2006-07-27 Walter Doerwald <walter@livinglogic.de>
214
218
215 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
219 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
216 not running under IPython.
220 not running under IPython.
217
221
218 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
222 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
219 and make it iterable (iterating over the attribute itself). Add two new
223 and make it iterable (iterating over the attribute itself). Add two new
220 magic strings for __xattrs__(): If the string starts with "-", the attribute
224 magic strings for __xattrs__(): If the string starts with "-", the attribute
221 will not be displayed in ibrowse's detail view (but it can still be
225 will not be displayed in ibrowse's detail view (but it can still be
222 iterated over). This makes it possible to add attributes that are large
226 iterated over). This makes it possible to add attributes that are large
223 lists or generator methods to the detail view. Replace magic attribute names
227 lists or generator methods to the detail view. Replace magic attribute names
224 and _attrname() and _getattr() with "descriptors": For each type of magic
228 and _attrname() and _getattr() with "descriptors": For each type of magic
225 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
229 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
226 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
230 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
227 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
231 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
228 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
232 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
229 are still supported.
233 are still supported.
230
234
231 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
235 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
232 fails in ibrowse.fetch(), the exception object is added as the last item
236 fails in ibrowse.fetch(), the exception object is added as the last item
233 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
237 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
234 a generator throws an exception midway through execution.
238 a generator throws an exception midway through execution.
235
239
236 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
240 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
237 encoding into methods.
241 encoding into methods.
238
242
239 2006-07-26 Ville Vainio <vivainio@gmail.com>
243 2006-07-26 Ville Vainio <vivainio@gmail.com>
240
244
241 * iplib.py: history now stores multiline input as single
245 * iplib.py: history now stores multiline input as single
242 history entries. Patch by Jorgen Cederlof.
246 history entries. Patch by Jorgen Cederlof.
243
247
244 2006-07-18 Walter Doerwald <walter@livinglogic.de>
248 2006-07-18 Walter Doerwald <walter@livinglogic.de>
245
249
246 * IPython/Extensions/ibrowse.py: Make cursor visible over
250 * IPython/Extensions/ibrowse.py: Make cursor visible over
247 non existing attributes.
251 non existing attributes.
248
252
249 2006-07-14 Walter Doerwald <walter@livinglogic.de>
253 2006-07-14 Walter Doerwald <walter@livinglogic.de>
250
254
251 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
255 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
252 error output of the running command doesn't mess up the screen.
256 error output of the running command doesn't mess up the screen.
253
257
254 2006-07-13 Walter Doerwald <walter@livinglogic.de>
258 2006-07-13 Walter Doerwald <walter@livinglogic.de>
255
259
256 * IPython/Extensions/ipipe.py (isort): Make isort usable without
260 * IPython/Extensions/ipipe.py (isort): Make isort usable without
257 argument. This sorts the items themselves.
261 argument. This sorts the items themselves.
258
262
259 2006-07-12 Walter Doerwald <walter@livinglogic.de>
263 2006-07-12 Walter Doerwald <walter@livinglogic.de>
260
264
261 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
265 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
262 Compile expression strings into code objects. This should speed
266 Compile expression strings into code objects. This should speed
263 up ifilter and friends somewhat.
267 up ifilter and friends somewhat.
264
268
265 2006-07-08 Ville Vainio <vivainio@gmail.com>
269 2006-07-08 Ville Vainio <vivainio@gmail.com>
266
270
267 * Magic.py: %cpaste now strips > from the beginning of lines
271 * Magic.py: %cpaste now strips > from the beginning of lines
268 to ease pasting quoted code from emails. Contributed by
272 to ease pasting quoted code from emails. Contributed by
269 Stefan van der Walt.
273 Stefan van der Walt.
270
274
271 2006-06-29 Ville Vainio <vivainio@gmail.com>
275 2006-06-29 Ville Vainio <vivainio@gmail.com>
272
276
273 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
277 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
274 mode, patch contributed by Darren Dale. NEEDS TESTING!
278 mode, patch contributed by Darren Dale. NEEDS TESTING!
275
279
276 2006-06-28 Walter Doerwald <walter@livinglogic.de>
280 2006-06-28 Walter Doerwald <walter@livinglogic.de>
277
281
278 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
282 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
279 a blue background. Fix fetching new display rows when the browser
283 a blue background. Fix fetching new display rows when the browser
280 scrolls more than a screenful (e.g. by using the goto command).
284 scrolls more than a screenful (e.g. by using the goto command).
281
285
282 2006-06-27 Ville Vainio <vivainio@gmail.com>
286 2006-06-27 Ville Vainio <vivainio@gmail.com>
283
287
284 * Magic.py (_inspect, _ofind) Apply David Huard's
288 * Magic.py (_inspect, _ofind) Apply David Huard's
285 patch for displaying the correct docstring for 'property'
289 patch for displaying the correct docstring for 'property'
286 attributes.
290 attributes.
287
291
288 2006-06-23 Walter Doerwald <walter@livinglogic.de>
292 2006-06-23 Walter Doerwald <walter@livinglogic.de>
289
293
290 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
294 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
291 commands into the methods implementing them.
295 commands into the methods implementing them.
292
296
293 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
297 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
294
298
295 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
299 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
296 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
300 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
297 autoindent support was authored by Jin Liu.
301 autoindent support was authored by Jin Liu.
298
302
299 2006-06-22 Walter Doerwald <walter@livinglogic.de>
303 2006-06-22 Walter Doerwald <walter@livinglogic.de>
300
304
301 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
305 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
302 for keymaps with a custom class that simplifies handling.
306 for keymaps with a custom class that simplifies handling.
303
307
304 2006-06-19 Walter Doerwald <walter@livinglogic.de>
308 2006-06-19 Walter Doerwald <walter@livinglogic.de>
305
309
306 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
310 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
307 resizing. This requires Python 2.5 to work.
311 resizing. This requires Python 2.5 to work.
308
312
309 2006-06-16 Walter Doerwald <walter@livinglogic.de>
313 2006-06-16 Walter Doerwald <walter@livinglogic.de>
310
314
311 * IPython/Extensions/ibrowse.py: Add two new commands to
315 * IPython/Extensions/ibrowse.py: Add two new commands to
312 ibrowse: "hideattr" (mapped to "h") hides the attribute under
316 ibrowse: "hideattr" (mapped to "h") hides the attribute under
313 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
317 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
314 attributes again. Remapped the help command to "?". Display
318 attributes again. Remapped the help command to "?". Display
315 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
319 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
316 as keys for the "home" and "end" commands. Add three new commands
320 as keys for the "home" and "end" commands. Add three new commands
317 to the input mode for "find" and friends: "delend" (CTRL-K)
321 to the input mode for "find" and friends: "delend" (CTRL-K)
318 deletes to the end of line. "incsearchup" searches upwards in the
322 deletes to the end of line. "incsearchup" searches upwards in the
319 command history for an input that starts with the text before the cursor.
323 command history for an input that starts with the text before the cursor.
320 "incsearchdown" does the same downwards. Removed a bogus mapping of
324 "incsearchdown" does the same downwards. Removed a bogus mapping of
321 the x key to "delete".
325 the x key to "delete".
322
326
323 2006-06-15 Ville Vainio <vivainio@gmail.com>
327 2006-06-15 Ville Vainio <vivainio@gmail.com>
324
328
325 * iplib.py, hooks.py: Added new generate_prompt hook that can be
329 * iplib.py, hooks.py: Added new generate_prompt hook that can be
326 used to create prompts dynamically, instead of the "old" way of
330 used to create prompts dynamically, instead of the "old" way of
327 assigning "magic" strings to prompt_in1 and prompt_in2. The old
331 assigning "magic" strings to prompt_in1 and prompt_in2. The old
328 way still works (it's invoked by the default hook), of course.
332 way still works (it's invoked by the default hook), of course.
329
333
330 * Prompts.py: added generate_output_prompt hook for altering output
334 * Prompts.py: added generate_output_prompt hook for altering output
331 prompt
335 prompt
332
336
333 * Release.py: Changed version string to 0.7.3.svn.
337 * Release.py: Changed version string to 0.7.3.svn.
334
338
335 2006-06-15 Walter Doerwald <walter@livinglogic.de>
339 2006-06-15 Walter Doerwald <walter@livinglogic.de>
336
340
337 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
341 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
338 the call to fetch() always tries to fetch enough data for at least one
342 the call to fetch() always tries to fetch enough data for at least one
339 full screen. This makes it possible to simply call moveto(0,0,True) in
343 full screen. This makes it possible to simply call moveto(0,0,True) in
340 the constructor. Fix typos and removed the obsolete goto attribute.
344 the constructor. Fix typos and removed the obsolete goto attribute.
341
345
342 2006-06-12 Ville Vainio <vivainio@gmail.com>
346 2006-06-12 Ville Vainio <vivainio@gmail.com>
343
347
344 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
348 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
345 allowing $variable interpolation within multiline statements,
349 allowing $variable interpolation within multiline statements,
346 though so far only with "sh" profile for a testing period.
350 though so far only with "sh" profile for a testing period.
347 The patch also enables splitting long commands with \ but it
351 The patch also enables splitting long commands with \ but it
348 doesn't work properly yet.
352 doesn't work properly yet.
349
353
350 2006-06-12 Walter Doerwald <walter@livinglogic.de>
354 2006-06-12 Walter Doerwald <walter@livinglogic.de>
351
355
352 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
356 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
353 input history and the position of the cursor in the input history for
357 input history and the position of the cursor in the input history for
354 the find, findbackwards and goto command.
358 the find, findbackwards and goto command.
355
359
356 2006-06-10 Walter Doerwald <walter@livinglogic.de>
360 2006-06-10 Walter Doerwald <walter@livinglogic.de>
357
361
358 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
362 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
359 implements the basic functionality of browser commands that require
363 implements the basic functionality of browser commands that require
360 input. Reimplement the goto, find and findbackwards commands as
364 input. Reimplement the goto, find and findbackwards commands as
361 subclasses of _CommandInput. Add an input history and keymaps to those
365 subclasses of _CommandInput. Add an input history and keymaps to those
362 commands. Add "\r" as a keyboard shortcut for the enterdefault and
366 commands. Add "\r" as a keyboard shortcut for the enterdefault and
363 execute commands.
367 execute commands.
364
368
365 2006-06-07 Ville Vainio <vivainio@gmail.com>
369 2006-06-07 Ville Vainio <vivainio@gmail.com>
366
370
367 * iplib.py: ipython mybatch.ipy exits ipython immediately after
371 * iplib.py: ipython mybatch.ipy exits ipython immediately after
368 running the batch files instead of leaving the session open.
372 running the batch files instead of leaving the session open.
369
373
370 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
374 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
371
375
372 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
376 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
373 the original fix was incomplete. Patch submitted by W. Maier.
377 the original fix was incomplete. Patch submitted by W. Maier.
374
378
375 2006-06-07 Ville Vainio <vivainio@gmail.com>
379 2006-06-07 Ville Vainio <vivainio@gmail.com>
376
380
377 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
381 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
378 Confirmation prompts can be supressed by 'quiet' option.
382 Confirmation prompts can be supressed by 'quiet' option.
379 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
383 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
380
384
381 2006-06-06 *** Released version 0.7.2
385 2006-06-06 *** Released version 0.7.2
382
386
383 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
387 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
384
388
385 * IPython/Release.py (version): Made 0.7.2 final for release.
389 * IPython/Release.py (version): Made 0.7.2 final for release.
386 Repo tagged and release cut.
390 Repo tagged and release cut.
387
391
388 2006-06-05 Ville Vainio <vivainio@gmail.com>
392 2006-06-05 Ville Vainio <vivainio@gmail.com>
389
393
390 * Magic.py (magic_rehashx): Honor no_alias list earlier in
394 * Magic.py (magic_rehashx): Honor no_alias list earlier in
391 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
395 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
392
396
393 * upgrade_dir.py: try import 'path' module a bit harder
397 * upgrade_dir.py: try import 'path' module a bit harder
394 (for %upgrade)
398 (for %upgrade)
395
399
396 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
400 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
397
401
398 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
402 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
399 instead of looping 20 times.
403 instead of looping 20 times.
400
404
401 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
405 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
402 correctly at initialization time. Bug reported by Krishna Mohan
406 correctly at initialization time. Bug reported by Krishna Mohan
403 Gundu <gkmohan-AT-gmail.com> on the user list.
407 Gundu <gkmohan-AT-gmail.com> on the user list.
404
408
405 * IPython/Release.py (version): Mark 0.7.2 version to start
409 * IPython/Release.py (version): Mark 0.7.2 version to start
406 testing for release on 06/06.
410 testing for release on 06/06.
407
411
408 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
412 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
409
413
410 * scripts/irunner: thin script interface so users don't have to
414 * scripts/irunner: thin script interface so users don't have to
411 find the module and call it as an executable, since modules rarely
415 find the module and call it as an executable, since modules rarely
412 live in people's PATH.
416 live in people's PATH.
413
417
414 * IPython/irunner.py (InteractiveRunner.__init__): added
418 * IPython/irunner.py (InteractiveRunner.__init__): added
415 delaybeforesend attribute to control delays with newer versions of
419 delaybeforesend attribute to control delays with newer versions of
416 pexpect. Thanks to detailed help from pexpect's author, Noah
420 pexpect. Thanks to detailed help from pexpect's author, Noah
417 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
421 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
418 correctly (it works in NoColor mode).
422 correctly (it works in NoColor mode).
419
423
420 * IPython/iplib.py (handle_normal): fix nasty crash reported on
424 * IPython/iplib.py (handle_normal): fix nasty crash reported on
421 SAGE list, from improper log() calls.
425 SAGE list, from improper log() calls.
422
426
423 2006-05-31 Ville Vainio <vivainio@gmail.com>
427 2006-05-31 Ville Vainio <vivainio@gmail.com>
424
428
425 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
429 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
426 with args in parens to work correctly with dirs that have spaces.
430 with args in parens to work correctly with dirs that have spaces.
427
431
428 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
432 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
429
433
430 * IPython/Logger.py (Logger.logstart): add option to log raw input
434 * IPython/Logger.py (Logger.logstart): add option to log raw input
431 instead of the processed one. A -r flag was added to the
435 instead of the processed one. A -r flag was added to the
432 %logstart magic used for controlling logging.
436 %logstart magic used for controlling logging.
433
437
434 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
438 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
435
439
436 * IPython/iplib.py (InteractiveShell.__init__): add check for the
440 * IPython/iplib.py (InteractiveShell.__init__): add check for the
437 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
441 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
438 recognize the option. After a bug report by Will Maier. This
442 recognize the option. After a bug report by Will Maier. This
439 closes #64 (will do it after confirmation from W. Maier).
443 closes #64 (will do it after confirmation from W. Maier).
440
444
441 * IPython/irunner.py: New module to run scripts as if manually
445 * IPython/irunner.py: New module to run scripts as if manually
442 typed into an interactive environment, based on pexpect. After a
446 typed into an interactive environment, based on pexpect. After a
443 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
447 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
444 ipython-user list. Simple unittests in the tests/ directory.
448 ipython-user list. Simple unittests in the tests/ directory.
445
449
446 * tools/release: add Will Maier, OpenBSD port maintainer, to
450 * tools/release: add Will Maier, OpenBSD port maintainer, to
447 recepients list. We are now officially part of the OpenBSD ports:
451 recepients list. We are now officially part of the OpenBSD ports:
448 http://www.openbsd.org/ports.html ! Many thanks to Will for the
452 http://www.openbsd.org/ports.html ! Many thanks to Will for the
449 work.
453 work.
450
454
451 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
455 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
452
456
453 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
457 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
454 so that it doesn't break tkinter apps.
458 so that it doesn't break tkinter apps.
455
459
456 * IPython/iplib.py (_prefilter): fix bug where aliases would
460 * IPython/iplib.py (_prefilter): fix bug where aliases would
457 shadow variables when autocall was fully off. Reported by SAGE
461 shadow variables when autocall was fully off. Reported by SAGE
458 author William Stein.
462 author William Stein.
459
463
460 * IPython/OInspect.py (Inspector.__init__): add a flag to control
464 * IPython/OInspect.py (Inspector.__init__): add a flag to control
461 at what detail level strings are computed when foo? is requested.
465 at what detail level strings are computed when foo? is requested.
462 This allows users to ask for example that the string form of an
466 This allows users to ask for example that the string form of an
463 object is only computed when foo?? is called, or even never, by
467 object is only computed when foo?? is called, or even never, by
464 setting the object_info_string_level >= 2 in the configuration
468 setting the object_info_string_level >= 2 in the configuration
465 file. This new option has been added and documented. After a
469 file. This new option has been added and documented. After a
466 request by SAGE to be able to control the printing of very large
470 request by SAGE to be able to control the printing of very large
467 objects more easily.
471 objects more easily.
468
472
469 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
473 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
470
474
471 * IPython/ipmaker.py (make_IPython): remove the ipython call path
475 * IPython/ipmaker.py (make_IPython): remove the ipython call path
472 from sys.argv, to be 100% consistent with how Python itself works
476 from sys.argv, to be 100% consistent with how Python itself works
473 (as seen for example with python -i file.py). After a bug report
477 (as seen for example with python -i file.py). After a bug report
474 by Jeffrey Collins.
478 by Jeffrey Collins.
475
479
476 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
480 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
477 nasty bug which was preventing custom namespaces with -pylab,
481 nasty bug which was preventing custom namespaces with -pylab,
478 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
482 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
479 compatibility (long gone from mpl).
483 compatibility (long gone from mpl).
480
484
481 * IPython/ipapi.py (make_session): name change: create->make. We
485 * IPython/ipapi.py (make_session): name change: create->make. We
482 use make in other places (ipmaker,...), it's shorter and easier to
486 use make in other places (ipmaker,...), it's shorter and easier to
483 type and say, etc. I'm trying to clean things before 0.7.2 so
487 type and say, etc. I'm trying to clean things before 0.7.2 so
484 that I can keep things stable wrt to ipapi in the chainsaw branch.
488 that I can keep things stable wrt to ipapi in the chainsaw branch.
485
489
486 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
490 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
487 python-mode recognizes our debugger mode. Add support for
491 python-mode recognizes our debugger mode. Add support for
488 autoindent inside (X)emacs. After a patch sent in by Jin Liu
492 autoindent inside (X)emacs. After a patch sent in by Jin Liu
489 <m.liu.jin-AT-gmail.com> originally written by
493 <m.liu.jin-AT-gmail.com> originally written by
490 doxgen-AT-newsmth.net (with minor modifications for xemacs
494 doxgen-AT-newsmth.net (with minor modifications for xemacs
491 compatibility)
495 compatibility)
492
496
493 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
497 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
494 tracebacks when walking the stack so that the stack tracking system
498 tracebacks when walking the stack so that the stack tracking system
495 in emacs' python-mode can identify the frames correctly.
499 in emacs' python-mode can identify the frames correctly.
496
500
497 * IPython/ipmaker.py (make_IPython): make the internal (and
501 * IPython/ipmaker.py (make_IPython): make the internal (and
498 default config) autoedit_syntax value false by default. Too many
502 default config) autoedit_syntax value false by default. Too many
499 users have complained to me (both on and off-list) about problems
503 users have complained to me (both on and off-list) about problems
500 with this option being on by default, so I'm making it default to
504 with this option being on by default, so I'm making it default to
501 off. It can still be enabled by anyone via the usual mechanisms.
505 off. It can still be enabled by anyone via the usual mechanisms.
502
506
503 * IPython/completer.py (Completer.attr_matches): add support for
507 * IPython/completer.py (Completer.attr_matches): add support for
504 PyCrust-style _getAttributeNames magic method. Patch contributed
508 PyCrust-style _getAttributeNames magic method. Patch contributed
505 by <mscott-AT-goldenspud.com>. Closes #50.
509 by <mscott-AT-goldenspud.com>. Closes #50.
506
510
507 * IPython/iplib.py (InteractiveShell.__init__): remove the
511 * IPython/iplib.py (InteractiveShell.__init__): remove the
508 deletion of exit/quit from __builtin__, which can break
512 deletion of exit/quit from __builtin__, which can break
509 third-party tools like the Zope debugging console. The
513 third-party tools like the Zope debugging console. The
510 %exit/%quit magics remain. In general, it's probably a good idea
514 %exit/%quit magics remain. In general, it's probably a good idea
511 not to delete anything from __builtin__, since we never know what
515 not to delete anything from __builtin__, since we never know what
512 that will break. In any case, python now (for 2.5) will support
516 that will break. In any case, python now (for 2.5) will support
513 'real' exit/quit, so this issue is moot. Closes #55.
517 'real' exit/quit, so this issue is moot. Closes #55.
514
518
515 * IPython/genutils.py (with_obj): rename the 'with' function to
519 * IPython/genutils.py (with_obj): rename the 'with' function to
516 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
520 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
517 becomes a language keyword. Closes #53.
521 becomes a language keyword. Closes #53.
518
522
519 * IPython/FakeModule.py (FakeModule.__init__): add a proper
523 * IPython/FakeModule.py (FakeModule.__init__): add a proper
520 __file__ attribute to this so it fools more things into thinking
524 __file__ attribute to this so it fools more things into thinking
521 it is a real module. Closes #59.
525 it is a real module. Closes #59.
522
526
523 * IPython/Magic.py (magic_edit): add -n option to open the editor
527 * IPython/Magic.py (magic_edit): add -n option to open the editor
524 at a specific line number. After a patch by Stefan van der Walt.
528 at a specific line number. After a patch by Stefan van der Walt.
525
529
526 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
530 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
527
531
528 * IPython/iplib.py (edit_syntax_error): fix crash when for some
532 * IPython/iplib.py (edit_syntax_error): fix crash when for some
529 reason the file could not be opened. After automatic crash
533 reason the file could not be opened. After automatic crash
530 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
534 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
531 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
535 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
532 (_should_recompile): Don't fire editor if using %bg, since there
536 (_should_recompile): Don't fire editor if using %bg, since there
533 is no file in the first place. From the same report as above.
537 is no file in the first place. From the same report as above.
534 (raw_input): protect against faulty third-party prefilters. After
538 (raw_input): protect against faulty third-party prefilters. After
535 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
539 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
536 while running under SAGE.
540 while running under SAGE.
537
541
538 2006-05-23 Ville Vainio <vivainio@gmail.com>
542 2006-05-23 Ville Vainio <vivainio@gmail.com>
539
543
540 * ipapi.py: Stripped down ip.to_user_ns() to work only as
544 * ipapi.py: Stripped down ip.to_user_ns() to work only as
541 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
545 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
542 now returns None (again), unless dummy is specifically allowed by
546 now returns None (again), unless dummy is specifically allowed by
543 ipapi.get(allow_dummy=True).
547 ipapi.get(allow_dummy=True).
544
548
545 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
549 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
546
550
547 * IPython: remove all 2.2-compatibility objects and hacks from
551 * IPython: remove all 2.2-compatibility objects and hacks from
548 everywhere, since we only support 2.3 at this point. Docs
552 everywhere, since we only support 2.3 at this point. Docs
549 updated.
553 updated.
550
554
551 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
555 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
552 Anything requiring extra validation can be turned into a Python
556 Anything requiring extra validation can be turned into a Python
553 property in the future. I used a property for the db one b/c
557 property in the future. I used a property for the db one b/c
554 there was a nasty circularity problem with the initialization
558 there was a nasty circularity problem with the initialization
555 order, which right now I don't have time to clean up.
559 order, which right now I don't have time to clean up.
556
560
557 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
561 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
558 another locking bug reported by Jorgen. I'm not 100% sure though,
562 another locking bug reported by Jorgen. I'm not 100% sure though,
559 so more testing is needed...
563 so more testing is needed...
560
564
561 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
565 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
562
566
563 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
567 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
564 local variables from any routine in user code (typically executed
568 local variables from any routine in user code (typically executed
565 with %run) directly into the interactive namespace. Very useful
569 with %run) directly into the interactive namespace. Very useful
566 when doing complex debugging.
570 when doing complex debugging.
567 (IPythonNotRunning): Changed the default None object to a dummy
571 (IPythonNotRunning): Changed the default None object to a dummy
568 whose attributes can be queried as well as called without
572 whose attributes can be queried as well as called without
569 exploding, to ease writing code which works transparently both in
573 exploding, to ease writing code which works transparently both in
570 and out of ipython and uses some of this API.
574 and out of ipython and uses some of this API.
571
575
572 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
576 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
573
577
574 * IPython/hooks.py (result_display): Fix the fact that our display
578 * IPython/hooks.py (result_display): Fix the fact that our display
575 hook was using str() instead of repr(), as the default python
579 hook was using str() instead of repr(), as the default python
576 console does. This had gone unnoticed b/c it only happened if
580 console does. This had gone unnoticed b/c it only happened if
577 %Pprint was off, but the inconsistency was there.
581 %Pprint was off, but the inconsistency was there.
578
582
579 2006-05-15 Ville Vainio <vivainio@gmail.com>
583 2006-05-15 Ville Vainio <vivainio@gmail.com>
580
584
581 * Oinspect.py: Only show docstring for nonexisting/binary files
585 * Oinspect.py: Only show docstring for nonexisting/binary files
582 when doing object??, closing ticket #62
586 when doing object??, closing ticket #62
583
587
584 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
588 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
585
589
586 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
590 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
587 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
591 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
588 was being released in a routine which hadn't checked if it had
592 was being released in a routine which hadn't checked if it had
589 been the one to acquire it.
593 been the one to acquire it.
590
594
591 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
595 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
592
596
593 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
597 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
594
598
595 2006-04-11 Ville Vainio <vivainio@gmail.com>
599 2006-04-11 Ville Vainio <vivainio@gmail.com>
596
600
597 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
601 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
598 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
602 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
599 prefilters, allowing stuff like magics and aliases in the file.
603 prefilters, allowing stuff like magics and aliases in the file.
600
604
601 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
605 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
602 added. Supported now are "%clear in" and "%clear out" (clear input and
606 added. Supported now are "%clear in" and "%clear out" (clear input and
603 output history, respectively). Also fixed CachedOutput.flush to
607 output history, respectively). Also fixed CachedOutput.flush to
604 properly flush the output cache.
608 properly flush the output cache.
605
609
606 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
610 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
607 half-success (and fail explicitly).
611 half-success (and fail explicitly).
608
612
609 2006-03-28 Ville Vainio <vivainio@gmail.com>
613 2006-03-28 Ville Vainio <vivainio@gmail.com>
610
614
611 * iplib.py: Fix quoting of aliases so that only argless ones
615 * iplib.py: Fix quoting of aliases so that only argless ones
612 are quoted
616 are quoted
613
617
614 2006-03-28 Ville Vainio <vivainio@gmail.com>
618 2006-03-28 Ville Vainio <vivainio@gmail.com>
615
619
616 * iplib.py: Quote aliases with spaces in the name.
620 * iplib.py: Quote aliases with spaces in the name.
617 "c:\program files\blah\bin" is now legal alias target.
621 "c:\program files\blah\bin" is now legal alias target.
618
622
619 * ext_rehashdir.py: Space no longer allowed as arg
623 * ext_rehashdir.py: Space no longer allowed as arg
620 separator, since space is legal in path names.
624 separator, since space is legal in path names.
621
625
622 2006-03-16 Ville Vainio <vivainio@gmail.com>
626 2006-03-16 Ville Vainio <vivainio@gmail.com>
623
627
624 * upgrade_dir.py: Take path.py from Extensions, correcting
628 * upgrade_dir.py: Take path.py from Extensions, correcting
625 %upgrade magic
629 %upgrade magic
626
630
627 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
631 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
628
632
629 * hooks.py: Only enclose editor binary in quotes if legal and
633 * hooks.py: Only enclose editor binary in quotes if legal and
630 necessary (space in the name, and is an existing file). Fixes a bug
634 necessary (space in the name, and is an existing file). Fixes a bug
631 reported by Zachary Pincus.
635 reported by Zachary Pincus.
632
636
633 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
637 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
634
638
635 * Manual: thanks to a tip on proper color handling for Emacs, by
639 * Manual: thanks to a tip on proper color handling for Emacs, by
636 Eric J Haywiser <ejh1-AT-MIT.EDU>.
640 Eric J Haywiser <ejh1-AT-MIT.EDU>.
637
641
638 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
642 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
639 by applying the provided patch. Thanks to Liu Jin
643 by applying the provided patch. Thanks to Liu Jin
640 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
644 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
641 XEmacs/Linux, I'm trusting the submitter that it actually helps
645 XEmacs/Linux, I'm trusting the submitter that it actually helps
642 under win32/GNU Emacs. Will revisit if any problems are reported.
646 under win32/GNU Emacs. Will revisit if any problems are reported.
643
647
644 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
648 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
645
649
646 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
650 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
647 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
651 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
648
652
649 2006-03-12 Ville Vainio <vivainio@gmail.com>
653 2006-03-12 Ville Vainio <vivainio@gmail.com>
650
654
651 * Magic.py (magic_timeit): Added %timeit magic, contributed by
655 * Magic.py (magic_timeit): Added %timeit magic, contributed by
652 Torsten Marek.
656 Torsten Marek.
653
657
654 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
658 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
655
659
656 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
660 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
657 line ranges works again.
661 line ranges works again.
658
662
659 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
663 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
660
664
661 * IPython/iplib.py (showtraceback): add back sys.last_traceback
665 * IPython/iplib.py (showtraceback): add back sys.last_traceback
662 and friends, after a discussion with Zach Pincus on ipython-user.
666 and friends, after a discussion with Zach Pincus on ipython-user.
663 I'm not 100% sure, but after thinking about it quite a bit, it may
667 I'm not 100% sure, but after thinking about it quite a bit, it may
664 be OK. Testing with the multithreaded shells didn't reveal any
668 be OK. Testing with the multithreaded shells didn't reveal any
665 problems, but let's keep an eye out.
669 problems, but let's keep an eye out.
666
670
667 In the process, I fixed a few things which were calling
671 In the process, I fixed a few things which were calling
668 self.InteractiveTB() directly (like safe_execfile), which is a
672 self.InteractiveTB() directly (like safe_execfile), which is a
669 mistake: ALL exception reporting should be done by calling
673 mistake: ALL exception reporting should be done by calling
670 self.showtraceback(), which handles state and tab-completion and
674 self.showtraceback(), which handles state and tab-completion and
671 more.
675 more.
672
676
673 2006-03-01 Ville Vainio <vivainio@gmail.com>
677 2006-03-01 Ville Vainio <vivainio@gmail.com>
674
678
675 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
679 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
676 To use, do "from ipipe import *".
680 To use, do "from ipipe import *".
677
681
678 2006-02-24 Ville Vainio <vivainio@gmail.com>
682 2006-02-24 Ville Vainio <vivainio@gmail.com>
679
683
680 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
684 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
681 "cleanly" and safely than the older upgrade mechanism.
685 "cleanly" and safely than the older upgrade mechanism.
682
686
683 2006-02-21 Ville Vainio <vivainio@gmail.com>
687 2006-02-21 Ville Vainio <vivainio@gmail.com>
684
688
685 * Magic.py: %save works again.
689 * Magic.py: %save works again.
686
690
687 2006-02-15 Ville Vainio <vivainio@gmail.com>
691 2006-02-15 Ville Vainio <vivainio@gmail.com>
688
692
689 * Magic.py: %Pprint works again
693 * Magic.py: %Pprint works again
690
694
691 * Extensions/ipy_sane_defaults.py: Provide everything provided
695 * Extensions/ipy_sane_defaults.py: Provide everything provided
692 in default ipythonrc, to make it possible to have a completely empty
696 in default ipythonrc, to make it possible to have a completely empty
693 ipythonrc (and thus completely rc-file free configuration)
697 ipythonrc (and thus completely rc-file free configuration)
694
698
695 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
699 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
696
700
697 * IPython/hooks.py (editor): quote the call to the editor command,
701 * IPython/hooks.py (editor): quote the call to the editor command,
698 to allow commands with spaces in them. Problem noted by watching
702 to allow commands with spaces in them. Problem noted by watching
699 Ian Oswald's video about textpad under win32 at
703 Ian Oswald's video about textpad under win32 at
700 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
704 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
701
705
702 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
706 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
703 describing magics (we haven't used @ for a loong time).
707 describing magics (we haven't used @ for a loong time).
704
708
705 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
709 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
706 contributed by marienz to close
710 contributed by marienz to close
707 http://www.scipy.net/roundup/ipython/issue53.
711 http://www.scipy.net/roundup/ipython/issue53.
708
712
709 2006-02-10 Ville Vainio <vivainio@gmail.com>
713 2006-02-10 Ville Vainio <vivainio@gmail.com>
710
714
711 * genutils.py: getoutput now works in win32 too
715 * genutils.py: getoutput now works in win32 too
712
716
713 * completer.py: alias and magic completion only invoked
717 * completer.py: alias and magic completion only invoked
714 at the first "item" in the line, to avoid "cd %store"
718 at the first "item" in the line, to avoid "cd %store"
715 nonsense.
719 nonsense.
716
720
717 2006-02-09 Ville Vainio <vivainio@gmail.com>
721 2006-02-09 Ville Vainio <vivainio@gmail.com>
718
722
719 * test/*: Added a unit testing framework (finally).
723 * test/*: Added a unit testing framework (finally).
720 '%run runtests.py' to run test_*.
724 '%run runtests.py' to run test_*.
721
725
722 * ipapi.py: Exposed runlines and set_custom_exc
726 * ipapi.py: Exposed runlines and set_custom_exc
723
727
724 2006-02-07 Ville Vainio <vivainio@gmail.com>
728 2006-02-07 Ville Vainio <vivainio@gmail.com>
725
729
726 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
730 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
727 instead use "f(1 2)" as before.
731 instead use "f(1 2)" as before.
728
732
729 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
733 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
730
734
731 * IPython/demo.py (IPythonDemo): Add new classes to the demo
735 * IPython/demo.py (IPythonDemo): Add new classes to the demo
732 facilities, for demos processed by the IPython input filter
736 facilities, for demos processed by the IPython input filter
733 (IPythonDemo), and for running a script one-line-at-a-time as a
737 (IPythonDemo), and for running a script one-line-at-a-time as a
734 demo, both for pure Python (LineDemo) and for IPython-processed
738 demo, both for pure Python (LineDemo) and for IPython-processed
735 input (IPythonLineDemo). After a request by Dave Kohel, from the
739 input (IPythonLineDemo). After a request by Dave Kohel, from the
736 SAGE team.
740 SAGE team.
737 (Demo.edit): added an edit() method to the demo objects, to edit
741 (Demo.edit): added an edit() method to the demo objects, to edit
738 the in-memory copy of the last executed block.
742 the in-memory copy of the last executed block.
739
743
740 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
744 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
741 processing to %edit, %macro and %save. These commands can now be
745 processing to %edit, %macro and %save. These commands can now be
742 invoked on the unprocessed input as it was typed by the user
746 invoked on the unprocessed input as it was typed by the user
743 (without any prefilters applied). After requests by the SAGE team
747 (without any prefilters applied). After requests by the SAGE team
744 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
748 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
745
749
746 2006-02-01 Ville Vainio <vivainio@gmail.com>
750 2006-02-01 Ville Vainio <vivainio@gmail.com>
747
751
748 * setup.py, eggsetup.py: easy_install ipython==dev works
752 * setup.py, eggsetup.py: easy_install ipython==dev works
749 correctly now (on Linux)
753 correctly now (on Linux)
750
754
751 * ipy_user_conf,ipmaker: user config changes, removed spurious
755 * ipy_user_conf,ipmaker: user config changes, removed spurious
752 warnings
756 warnings
753
757
754 * iplib: if rc.banner is string, use it as is.
758 * iplib: if rc.banner is string, use it as is.
755
759
756 * Magic: %pycat accepts a string argument and pages it's contents.
760 * Magic: %pycat accepts a string argument and pages it's contents.
757
761
758
762
759 2006-01-30 Ville Vainio <vivainio@gmail.com>
763 2006-01-30 Ville Vainio <vivainio@gmail.com>
760
764
761 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
765 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
762 Now %store and bookmarks work through PickleShare, meaning that
766 Now %store and bookmarks work through PickleShare, meaning that
763 concurrent access is possible and all ipython sessions see the
767 concurrent access is possible and all ipython sessions see the
764 same database situation all the time, instead of snapshot of
768 same database situation all the time, instead of snapshot of
765 the situation when the session was started. Hence, %bookmark
769 the situation when the session was started. Hence, %bookmark
766 results are immediately accessible from othes sessions. The database
770 results are immediately accessible from othes sessions. The database
767 is also available for use by user extensions. See:
771 is also available for use by user extensions. See:
768 http://www.python.org/pypi/pickleshare
772 http://www.python.org/pypi/pickleshare
769
773
770 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
774 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
771
775
772 * aliases can now be %store'd
776 * aliases can now be %store'd
773
777
774 * path.py moved to Extensions so that pickleshare does not need
778 * path.py moved to Extensions so that pickleshare does not need
775 IPython-specific import. Extensions added to pythonpath right
779 IPython-specific import. Extensions added to pythonpath right
776 at __init__.
780 at __init__.
777
781
778 * iplib.py: ipalias deprecated/redundant; aliases are converted and
782 * iplib.py: ipalias deprecated/redundant; aliases are converted and
779 called with _ip.system and the pre-transformed command string.
783 called with _ip.system and the pre-transformed command string.
780
784
781 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
785 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
782
786
783 * IPython/iplib.py (interact): Fix that we were not catching
787 * IPython/iplib.py (interact): Fix that we were not catching
784 KeyboardInterrupt exceptions properly. I'm not quite sure why the
788 KeyboardInterrupt exceptions properly. I'm not quite sure why the
785 logic here had to change, but it's fixed now.
789 logic here had to change, but it's fixed now.
786
790
787 2006-01-29 Ville Vainio <vivainio@gmail.com>
791 2006-01-29 Ville Vainio <vivainio@gmail.com>
788
792
789 * iplib.py: Try to import pyreadline on Windows.
793 * iplib.py: Try to import pyreadline on Windows.
790
794
791 2006-01-27 Ville Vainio <vivainio@gmail.com>
795 2006-01-27 Ville Vainio <vivainio@gmail.com>
792
796
793 * iplib.py: Expose ipapi as _ip in builtin namespace.
797 * iplib.py: Expose ipapi as _ip in builtin namespace.
794 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
798 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
795 and ip_set_hook (-> _ip.set_hook) redundant. % and !
799 and ip_set_hook (-> _ip.set_hook) redundant. % and !
796 syntax now produce _ip.* variant of the commands.
800 syntax now produce _ip.* variant of the commands.
797
801
798 * "_ip.options().autoedit_syntax = 2" automatically throws
802 * "_ip.options().autoedit_syntax = 2" automatically throws
799 user to editor for syntax error correction without prompting.
803 user to editor for syntax error correction without prompting.
800
804
801 2006-01-27 Ville Vainio <vivainio@gmail.com>
805 2006-01-27 Ville Vainio <vivainio@gmail.com>
802
806
803 * ipmaker.py: Give "realistic" sys.argv for scripts (without
807 * ipmaker.py: Give "realistic" sys.argv for scripts (without
804 'ipython' at argv[0]) executed through command line.
808 'ipython' at argv[0]) executed through command line.
805 NOTE: this DEPRECATES calling ipython with multiple scripts
809 NOTE: this DEPRECATES calling ipython with multiple scripts
806 ("ipython a.py b.py c.py")
810 ("ipython a.py b.py c.py")
807
811
808 * iplib.py, hooks.py: Added configurable input prefilter,
812 * iplib.py, hooks.py: Added configurable input prefilter,
809 named 'input_prefilter'. See ext_rescapture.py for example
813 named 'input_prefilter'. See ext_rescapture.py for example
810 usage.
814 usage.
811
815
812 * ext_rescapture.py, Magic.py: Better system command output capture
816 * ext_rescapture.py, Magic.py: Better system command output capture
813 through 'var = !ls' (deprecates user-visible %sc). Same notation
817 through 'var = !ls' (deprecates user-visible %sc). Same notation
814 applies for magics, 'var = %alias' assigns alias list to var.
818 applies for magics, 'var = %alias' assigns alias list to var.
815
819
816 * ipapi.py: added meta() for accessing extension-usable data store.
820 * ipapi.py: added meta() for accessing extension-usable data store.
817
821
818 * iplib.py: added InteractiveShell.getapi(). New magics should be
822 * iplib.py: added InteractiveShell.getapi(). New magics should be
819 written doing self.getapi() instead of using the shell directly.
823 written doing self.getapi() instead of using the shell directly.
820
824
821 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
825 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
822 %store foo >> ~/myfoo.txt to store variables to files (in clean
826 %store foo >> ~/myfoo.txt to store variables to files (in clean
823 textual form, not a restorable pickle).
827 textual form, not a restorable pickle).
824
828
825 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
829 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
826
830
827 * usage.py, Magic.py: added %quickref
831 * usage.py, Magic.py: added %quickref
828
832
829 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
833 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
830
834
831 * GetoptErrors when invoking magics etc. with wrong args
835 * GetoptErrors when invoking magics etc. with wrong args
832 are now more helpful:
836 are now more helpful:
833 GetoptError: option -l not recognized (allowed: "qb" )
837 GetoptError: option -l not recognized (allowed: "qb" )
834
838
835 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
839 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
836
840
837 * IPython/demo.py (Demo.show): Flush stdout after each block, so
841 * IPython/demo.py (Demo.show): Flush stdout after each block, so
838 computationally intensive blocks don't appear to stall the demo.
842 computationally intensive blocks don't appear to stall the demo.
839
843
840 2006-01-24 Ville Vainio <vivainio@gmail.com>
844 2006-01-24 Ville Vainio <vivainio@gmail.com>
841
845
842 * iplib.py, hooks.py: 'result_display' hook can return a non-None
846 * iplib.py, hooks.py: 'result_display' hook can return a non-None
843 value to manipulate resulting history entry.
847 value to manipulate resulting history entry.
844
848
845 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
849 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
846 to instance methods of IPApi class, to make extending an embedded
850 to instance methods of IPApi class, to make extending an embedded
847 IPython feasible. See ext_rehashdir.py for example usage.
851 IPython feasible. See ext_rehashdir.py for example usage.
848
852
849 * Merged 1071-1076 from branches/0.7.1
853 * Merged 1071-1076 from branches/0.7.1
850
854
851
855
852 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
856 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
853
857
854 * tools/release (daystamp): Fix build tools to use the new
858 * tools/release (daystamp): Fix build tools to use the new
855 eggsetup.py script to build lightweight eggs.
859 eggsetup.py script to build lightweight eggs.
856
860
857 * Applied changesets 1062 and 1064 before 0.7.1 release.
861 * Applied changesets 1062 and 1064 before 0.7.1 release.
858
862
859 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
863 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
860 see the raw input history (without conversions like %ls ->
864 see the raw input history (without conversions like %ls ->
861 ipmagic("ls")). After a request from W. Stein, SAGE
865 ipmagic("ls")). After a request from W. Stein, SAGE
862 (http://modular.ucsd.edu/sage) developer. This information is
866 (http://modular.ucsd.edu/sage) developer. This information is
863 stored in the input_hist_raw attribute of the IPython instance, so
867 stored in the input_hist_raw attribute of the IPython instance, so
864 developers can access it if needed (it's an InputList instance).
868 developers can access it if needed (it's an InputList instance).
865
869
866 * Versionstring = 0.7.2.svn
870 * Versionstring = 0.7.2.svn
867
871
868 * eggsetup.py: A separate script for constructing eggs, creates
872 * eggsetup.py: A separate script for constructing eggs, creates
869 proper launch scripts even on Windows (an .exe file in
873 proper launch scripts even on Windows (an .exe file in
870 \python24\scripts).
874 \python24\scripts).
871
875
872 * ipapi.py: launch_new_instance, launch entry point needed for the
876 * ipapi.py: launch_new_instance, launch entry point needed for the
873 egg.
877 egg.
874
878
875 2006-01-23 Ville Vainio <vivainio@gmail.com>
879 2006-01-23 Ville Vainio <vivainio@gmail.com>
876
880
877 * Added %cpaste magic for pasting python code
881 * Added %cpaste magic for pasting python code
878
882
879 2006-01-22 Ville Vainio <vivainio@gmail.com>
883 2006-01-22 Ville Vainio <vivainio@gmail.com>
880
884
881 * Merge from branches/0.7.1 into trunk, revs 1052-1057
885 * Merge from branches/0.7.1 into trunk, revs 1052-1057
882
886
883 * Versionstring = 0.7.2.svn
887 * Versionstring = 0.7.2.svn
884
888
885 * eggsetup.py: A separate script for constructing eggs, creates
889 * eggsetup.py: A separate script for constructing eggs, creates
886 proper launch scripts even on Windows (an .exe file in
890 proper launch scripts even on Windows (an .exe file in
887 \python24\scripts).
891 \python24\scripts).
888
892
889 * ipapi.py: launch_new_instance, launch entry point needed for the
893 * ipapi.py: launch_new_instance, launch entry point needed for the
890 egg.
894 egg.
891
895
892 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
896 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
893
897
894 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
898 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
895 %pfile foo would print the file for foo even if it was a binary.
899 %pfile foo would print the file for foo even if it was a binary.
896 Now, extensions '.so' and '.dll' are skipped.
900 Now, extensions '.so' and '.dll' are skipped.
897
901
898 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
902 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
899 bug, where macros would fail in all threaded modes. I'm not 100%
903 bug, where macros would fail in all threaded modes. I'm not 100%
900 sure, so I'm going to put out an rc instead of making a release
904 sure, so I'm going to put out an rc instead of making a release
901 today, and wait for feedback for at least a few days.
905 today, and wait for feedback for at least a few days.
902
906
903 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
907 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
904 it...) the handling of pasting external code with autoindent on.
908 it...) the handling of pasting external code with autoindent on.
905 To get out of a multiline input, the rule will appear for most
909 To get out of a multiline input, the rule will appear for most
906 users unchanged: two blank lines or change the indent level
910 users unchanged: two blank lines or change the indent level
907 proposed by IPython. But there is a twist now: you can
911 proposed by IPython. But there is a twist now: you can
908 add/subtract only *one or two spaces*. If you add/subtract three
912 add/subtract only *one or two spaces*. If you add/subtract three
909 or more (unless you completely delete the line), IPython will
913 or more (unless you completely delete the line), IPython will
910 accept that line, and you'll need to enter a second one of pure
914 accept that line, and you'll need to enter a second one of pure
911 whitespace. I know it sounds complicated, but I can't find a
915 whitespace. I know it sounds complicated, but I can't find a
912 different solution that covers all the cases, with the right
916 different solution that covers all the cases, with the right
913 heuristics. Hopefully in actual use, nobody will really notice
917 heuristics. Hopefully in actual use, nobody will really notice
914 all these strange rules and things will 'just work'.
918 all these strange rules and things will 'just work'.
915
919
916 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
920 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
917
921
918 * IPython/iplib.py (interact): catch exceptions which can be
922 * IPython/iplib.py (interact): catch exceptions which can be
919 triggered asynchronously by signal handlers. Thanks to an
923 triggered asynchronously by signal handlers. Thanks to an
920 automatic crash report, submitted by Colin Kingsley
924 automatic crash report, submitted by Colin Kingsley
921 <tercel-AT-gentoo.org>.
925 <tercel-AT-gentoo.org>.
922
926
923 2006-01-20 Ville Vainio <vivainio@gmail.com>
927 2006-01-20 Ville Vainio <vivainio@gmail.com>
924
928
925 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
929 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
926 (%rehashdir, very useful, try it out) of how to extend ipython
930 (%rehashdir, very useful, try it out) of how to extend ipython
927 with new magics. Also added Extensions dir to pythonpath to make
931 with new magics. Also added Extensions dir to pythonpath to make
928 importing extensions easy.
932 importing extensions easy.
929
933
930 * %store now complains when trying to store interactively declared
934 * %store now complains when trying to store interactively declared
931 classes / instances of those classes.
935 classes / instances of those classes.
932
936
933 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
937 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
934 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
938 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
935 if they exist, and ipy_user_conf.py with some defaults is created for
939 if they exist, and ipy_user_conf.py with some defaults is created for
936 the user.
940 the user.
937
941
938 * Startup rehashing done by the config file, not InterpreterExec.
942 * Startup rehashing done by the config file, not InterpreterExec.
939 This means system commands are available even without selecting the
943 This means system commands are available even without selecting the
940 pysh profile. It's the sensible default after all.
944 pysh profile. It's the sensible default after all.
941
945
942 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
946 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
943
947
944 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
948 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
945 multiline code with autoindent on working. But I am really not
949 multiline code with autoindent on working. But I am really not
946 sure, so this needs more testing. Will commit a debug-enabled
950 sure, so this needs more testing. Will commit a debug-enabled
947 version for now, while I test it some more, so that Ville and
951 version for now, while I test it some more, so that Ville and
948 others may also catch any problems. Also made
952 others may also catch any problems. Also made
949 self.indent_current_str() a method, to ensure that there's no
953 self.indent_current_str() a method, to ensure that there's no
950 chance of the indent space count and the corresponding string
954 chance of the indent space count and the corresponding string
951 falling out of sync. All code needing the string should just call
955 falling out of sync. All code needing the string should just call
952 the method.
956 the method.
953
957
954 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
958 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
955
959
956 * IPython/Magic.py (magic_edit): fix check for when users don't
960 * IPython/Magic.py (magic_edit): fix check for when users don't
957 save their output files, the try/except was in the wrong section.
961 save their output files, the try/except was in the wrong section.
958
962
959 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
963 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
960
964
961 * IPython/Magic.py (magic_run): fix __file__ global missing from
965 * IPython/Magic.py (magic_run): fix __file__ global missing from
962 script's namespace when executed via %run. After a report by
966 script's namespace when executed via %run. After a report by
963 Vivian.
967 Vivian.
964
968
965 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
969 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
966 when using python 2.4. The parent constructor changed in 2.4, and
970 when using python 2.4. The parent constructor changed in 2.4, and
967 we need to track it directly (we can't call it, as it messes up
971 we need to track it directly (we can't call it, as it messes up
968 readline and tab-completion inside our pdb would stop working).
972 readline and tab-completion inside our pdb would stop working).
969 After a bug report by R. Bernstein <rocky-AT-panix.com>.
973 After a bug report by R. Bernstein <rocky-AT-panix.com>.
970
974
971 2006-01-16 Ville Vainio <vivainio@gmail.com>
975 2006-01-16 Ville Vainio <vivainio@gmail.com>
972
976
973 * Ipython/magic.py: Reverted back to old %edit functionality
977 * Ipython/magic.py: Reverted back to old %edit functionality
974 that returns file contents on exit.
978 that returns file contents on exit.
975
979
976 * IPython/path.py: Added Jason Orendorff's "path" module to
980 * IPython/path.py: Added Jason Orendorff's "path" module to
977 IPython tree, http://www.jorendorff.com/articles/python/path/.
981 IPython tree, http://www.jorendorff.com/articles/python/path/.
978 You can get path objects conveniently through %sc, and !!, e.g.:
982 You can get path objects conveniently through %sc, and !!, e.g.:
979 sc files=ls
983 sc files=ls
980 for p in files.paths: # or files.p
984 for p in files.paths: # or files.p
981 print p,p.mtime
985 print p,p.mtime
982
986
983 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
987 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
984 now work again without considering the exclusion regexp -
988 now work again without considering the exclusion regexp -
985 hence, things like ',foo my/path' turn to 'foo("my/path")'
989 hence, things like ',foo my/path' turn to 'foo("my/path")'
986 instead of syntax error.
990 instead of syntax error.
987
991
988
992
989 2006-01-14 Ville Vainio <vivainio@gmail.com>
993 2006-01-14 Ville Vainio <vivainio@gmail.com>
990
994
991 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
995 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
992 ipapi decorators for python 2.4 users, options() provides access to rc
996 ipapi decorators for python 2.4 users, options() provides access to rc
993 data.
997 data.
994
998
995 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
999 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
996 as path separators (even on Linux ;-). Space character after
1000 as path separators (even on Linux ;-). Space character after
997 backslash (as yielded by tab completer) is still space;
1001 backslash (as yielded by tab completer) is still space;
998 "%cd long\ name" works as expected.
1002 "%cd long\ name" works as expected.
999
1003
1000 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1004 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1001 as "chain of command", with priority. API stays the same,
1005 as "chain of command", with priority. API stays the same,
1002 TryNext exception raised by a hook function signals that
1006 TryNext exception raised by a hook function signals that
1003 current hook failed and next hook should try handling it, as
1007 current hook failed and next hook should try handling it, as
1004 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1008 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1005 requested configurable display hook, which is now implemented.
1009 requested configurable display hook, which is now implemented.
1006
1010
1007 2006-01-13 Ville Vainio <vivainio@gmail.com>
1011 2006-01-13 Ville Vainio <vivainio@gmail.com>
1008
1012
1009 * IPython/platutils*.py: platform specific utility functions,
1013 * IPython/platutils*.py: platform specific utility functions,
1010 so far only set_term_title is implemented (change terminal
1014 so far only set_term_title is implemented (change terminal
1011 label in windowing systems). %cd now changes the title to
1015 label in windowing systems). %cd now changes the title to
1012 current dir.
1016 current dir.
1013
1017
1014 * IPython/Release.py: Added myself to "authors" list,
1018 * IPython/Release.py: Added myself to "authors" list,
1015 had to create new files.
1019 had to create new files.
1016
1020
1017 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1021 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1018 shell escape; not a known bug but had potential to be one in the
1022 shell escape; not a known bug but had potential to be one in the
1019 future.
1023 future.
1020
1024
1021 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1025 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1022 extension API for IPython! See the module for usage example. Fix
1026 extension API for IPython! See the module for usage example. Fix
1023 OInspect for docstring-less magic functions.
1027 OInspect for docstring-less magic functions.
1024
1028
1025
1029
1026 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1030 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1027
1031
1028 * IPython/iplib.py (raw_input): temporarily deactivate all
1032 * IPython/iplib.py (raw_input): temporarily deactivate all
1029 attempts at allowing pasting of code with autoindent on. It
1033 attempts at allowing pasting of code with autoindent on. It
1030 introduced bugs (reported by Prabhu) and I can't seem to find a
1034 introduced bugs (reported by Prabhu) and I can't seem to find a
1031 robust combination which works in all cases. Will have to revisit
1035 robust combination which works in all cases. Will have to revisit
1032 later.
1036 later.
1033
1037
1034 * IPython/genutils.py: remove isspace() function. We've dropped
1038 * IPython/genutils.py: remove isspace() function. We've dropped
1035 2.2 compatibility, so it's OK to use the string method.
1039 2.2 compatibility, so it's OK to use the string method.
1036
1040
1037 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1041 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1038
1042
1039 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1043 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1040 matching what NOT to autocall on, to include all python binary
1044 matching what NOT to autocall on, to include all python binary
1041 operators (including things like 'and', 'or', 'is' and 'in').
1045 operators (including things like 'and', 'or', 'is' and 'in').
1042 Prompted by a bug report on 'foo & bar', but I realized we had
1046 Prompted by a bug report on 'foo & bar', but I realized we had
1043 many more potential bug cases with other operators. The regexp is
1047 many more potential bug cases with other operators. The regexp is
1044 self.re_exclude_auto, it's fairly commented.
1048 self.re_exclude_auto, it's fairly commented.
1045
1049
1046 2006-01-12 Ville Vainio <vivainio@gmail.com>
1050 2006-01-12 Ville Vainio <vivainio@gmail.com>
1047
1051
1048 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1052 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1049 Prettified and hardened string/backslash quoting with ipsystem(),
1053 Prettified and hardened string/backslash quoting with ipsystem(),
1050 ipalias() and ipmagic(). Now even \ characters are passed to
1054 ipalias() and ipmagic(). Now even \ characters are passed to
1051 %magics, !shell escapes and aliases exactly as they are in the
1055 %magics, !shell escapes and aliases exactly as they are in the
1052 ipython command line. Should improve backslash experience,
1056 ipython command line. Should improve backslash experience,
1053 particularly in Windows (path delimiter for some commands that
1057 particularly in Windows (path delimiter for some commands that
1054 won't understand '/'), but Unix benefits as well (regexps). %cd
1058 won't understand '/'), but Unix benefits as well (regexps). %cd
1055 magic still doesn't support backslash path delimiters, though. Also
1059 magic still doesn't support backslash path delimiters, though. Also
1056 deleted all pretense of supporting multiline command strings in
1060 deleted all pretense of supporting multiline command strings in
1057 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1061 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1058
1062
1059 * doc/build_doc_instructions.txt added. Documentation on how to
1063 * doc/build_doc_instructions.txt added. Documentation on how to
1060 use doc/update_manual.py, added yesterday. Both files contributed
1064 use doc/update_manual.py, added yesterday. Both files contributed
1061 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1065 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1062 doc/*.sh for deprecation at a later date.
1066 doc/*.sh for deprecation at a later date.
1063
1067
1064 * /ipython.py Added ipython.py to root directory for
1068 * /ipython.py Added ipython.py to root directory for
1065 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1069 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1066 ipython.py) and development convenience (no need to keep doing
1070 ipython.py) and development convenience (no need to keep doing
1067 "setup.py install" between changes).
1071 "setup.py install" between changes).
1068
1072
1069 * Made ! and !! shell escapes work (again) in multiline expressions:
1073 * Made ! and !! shell escapes work (again) in multiline expressions:
1070 if 1:
1074 if 1:
1071 !ls
1075 !ls
1072 !!ls
1076 !!ls
1073
1077
1074 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1078 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1075
1079
1076 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1080 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1077 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1081 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1078 module in case-insensitive installation. Was causing crashes
1082 module in case-insensitive installation. Was causing crashes
1079 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1083 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1080
1084
1081 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1085 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1082 <marienz-AT-gentoo.org>, closes
1086 <marienz-AT-gentoo.org>, closes
1083 http://www.scipy.net/roundup/ipython/issue51.
1087 http://www.scipy.net/roundup/ipython/issue51.
1084
1088
1085 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1089 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1086
1090
1087 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1091 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1088 problem of excessive CPU usage under *nix and keyboard lag under
1092 problem of excessive CPU usage under *nix and keyboard lag under
1089 win32.
1093 win32.
1090
1094
1091 2006-01-10 *** Released version 0.7.0
1095 2006-01-10 *** Released version 0.7.0
1092
1096
1093 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1097 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1094
1098
1095 * IPython/Release.py (revision): tag version number to 0.7.0,
1099 * IPython/Release.py (revision): tag version number to 0.7.0,
1096 ready for release.
1100 ready for release.
1097
1101
1098 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1102 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1099 it informs the user of the name of the temp. file used. This can
1103 it informs the user of the name of the temp. file used. This can
1100 help if you decide later to reuse that same file, so you know
1104 help if you decide later to reuse that same file, so you know
1101 where to copy the info from.
1105 where to copy the info from.
1102
1106
1103 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1107 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1104
1108
1105 * setup_bdist_egg.py: little script to build an egg. Added
1109 * setup_bdist_egg.py: little script to build an egg. Added
1106 support in the release tools as well.
1110 support in the release tools as well.
1107
1111
1108 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1112 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1109
1113
1110 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1114 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1111 version selection (new -wxversion command line and ipythonrc
1115 version selection (new -wxversion command line and ipythonrc
1112 parameter). Patch contributed by Arnd Baecker
1116 parameter). Patch contributed by Arnd Baecker
1113 <arnd.baecker-AT-web.de>.
1117 <arnd.baecker-AT-web.de>.
1114
1118
1115 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1119 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1116 embedded instances, for variables defined at the interactive
1120 embedded instances, for variables defined at the interactive
1117 prompt of the embedded ipython. Reported by Arnd.
1121 prompt of the embedded ipython. Reported by Arnd.
1118
1122
1119 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1123 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1120 it can be used as a (stateful) toggle, or with a direct parameter.
1124 it can be used as a (stateful) toggle, or with a direct parameter.
1121
1125
1122 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1126 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1123 could be triggered in certain cases and cause the traceback
1127 could be triggered in certain cases and cause the traceback
1124 printer not to work.
1128 printer not to work.
1125
1129
1126 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1130 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1127
1131
1128 * IPython/iplib.py (_should_recompile): Small fix, closes
1132 * IPython/iplib.py (_should_recompile): Small fix, closes
1129 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1133 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1130
1134
1131 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1135 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1132
1136
1133 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1137 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1134 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1138 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1135 Moad for help with tracking it down.
1139 Moad for help with tracking it down.
1136
1140
1137 * IPython/iplib.py (handle_auto): fix autocall handling for
1141 * IPython/iplib.py (handle_auto): fix autocall handling for
1138 objects which support BOTH __getitem__ and __call__ (so that f [x]
1142 objects which support BOTH __getitem__ and __call__ (so that f [x]
1139 is left alone, instead of becoming f([x]) automatically).
1143 is left alone, instead of becoming f([x]) automatically).
1140
1144
1141 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1145 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1142 Ville's patch.
1146 Ville's patch.
1143
1147
1144 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1148 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1145
1149
1146 * IPython/iplib.py (handle_auto): changed autocall semantics to
1150 * IPython/iplib.py (handle_auto): changed autocall semantics to
1147 include 'smart' mode, where the autocall transformation is NOT
1151 include 'smart' mode, where the autocall transformation is NOT
1148 applied if there are no arguments on the line. This allows you to
1152 applied if there are no arguments on the line. This allows you to
1149 just type 'foo' if foo is a callable to see its internal form,
1153 just type 'foo' if foo is a callable to see its internal form,
1150 instead of having it called with no arguments (typically a
1154 instead of having it called with no arguments (typically a
1151 mistake). The old 'full' autocall still exists: for that, you
1155 mistake). The old 'full' autocall still exists: for that, you
1152 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1156 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1153
1157
1154 * IPython/completer.py (Completer.attr_matches): add
1158 * IPython/completer.py (Completer.attr_matches): add
1155 tab-completion support for Enthoughts' traits. After a report by
1159 tab-completion support for Enthoughts' traits. After a report by
1156 Arnd and a patch by Prabhu.
1160 Arnd and a patch by Prabhu.
1157
1161
1158 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1162 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1159
1163
1160 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1164 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1161 Schmolck's patch to fix inspect.getinnerframes().
1165 Schmolck's patch to fix inspect.getinnerframes().
1162
1166
1163 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1167 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1164 for embedded instances, regarding handling of namespaces and items
1168 for embedded instances, regarding handling of namespaces and items
1165 added to the __builtin__ one. Multiple embedded instances and
1169 added to the __builtin__ one. Multiple embedded instances and
1166 recursive embeddings should work better now (though I'm not sure
1170 recursive embeddings should work better now (though I'm not sure
1167 I've got all the corner cases fixed, that code is a bit of a brain
1171 I've got all the corner cases fixed, that code is a bit of a brain
1168 twister).
1172 twister).
1169
1173
1170 * IPython/Magic.py (magic_edit): added support to edit in-memory
1174 * IPython/Magic.py (magic_edit): added support to edit in-memory
1171 macros (automatically creates the necessary temp files). %edit
1175 macros (automatically creates the necessary temp files). %edit
1172 also doesn't return the file contents anymore, it's just noise.
1176 also doesn't return the file contents anymore, it's just noise.
1173
1177
1174 * IPython/completer.py (Completer.attr_matches): revert change to
1178 * IPython/completer.py (Completer.attr_matches): revert change to
1175 complete only on attributes listed in __all__. I realized it
1179 complete only on attributes listed in __all__. I realized it
1176 cripples the tab-completion system as a tool for exploring the
1180 cripples the tab-completion system as a tool for exploring the
1177 internals of unknown libraries (it renders any non-__all__
1181 internals of unknown libraries (it renders any non-__all__
1178 attribute off-limits). I got bit by this when trying to see
1182 attribute off-limits). I got bit by this when trying to see
1179 something inside the dis module.
1183 something inside the dis module.
1180
1184
1181 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1185 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1182
1186
1183 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1187 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1184 namespace for users and extension writers to hold data in. This
1188 namespace for users and extension writers to hold data in. This
1185 follows the discussion in
1189 follows the discussion in
1186 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1190 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1187
1191
1188 * IPython/completer.py (IPCompleter.complete): small patch to help
1192 * IPython/completer.py (IPCompleter.complete): small patch to help
1189 tab-completion under Emacs, after a suggestion by John Barnard
1193 tab-completion under Emacs, after a suggestion by John Barnard
1190 <barnarj-AT-ccf.org>.
1194 <barnarj-AT-ccf.org>.
1191
1195
1192 * IPython/Magic.py (Magic.extract_input_slices): added support for
1196 * IPython/Magic.py (Magic.extract_input_slices): added support for
1193 the slice notation in magics to use N-M to represent numbers N...M
1197 the slice notation in magics to use N-M to represent numbers N...M
1194 (closed endpoints). This is used by %macro and %save.
1198 (closed endpoints). This is used by %macro and %save.
1195
1199
1196 * IPython/completer.py (Completer.attr_matches): for modules which
1200 * IPython/completer.py (Completer.attr_matches): for modules which
1197 define __all__, complete only on those. After a patch by Jeffrey
1201 define __all__, complete only on those. After a patch by Jeffrey
1198 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1202 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1199 speed up this routine.
1203 speed up this routine.
1200
1204
1201 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1205 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1202 don't know if this is the end of it, but the behavior now is
1206 don't know if this is the end of it, but the behavior now is
1203 certainly much more correct. Note that coupled with macros,
1207 certainly much more correct. Note that coupled with macros,
1204 slightly surprising (at first) behavior may occur: a macro will in
1208 slightly surprising (at first) behavior may occur: a macro will in
1205 general expand to multiple lines of input, so upon exiting, the
1209 general expand to multiple lines of input, so upon exiting, the
1206 in/out counters will both be bumped by the corresponding amount
1210 in/out counters will both be bumped by the corresponding amount
1207 (as if the macro's contents had been typed interactively). Typing
1211 (as if the macro's contents had been typed interactively). Typing
1208 %hist will reveal the intermediate (silently processed) lines.
1212 %hist will reveal the intermediate (silently processed) lines.
1209
1213
1210 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1214 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1211 pickle to fail (%run was overwriting __main__ and not restoring
1215 pickle to fail (%run was overwriting __main__ and not restoring
1212 it, but pickle relies on __main__ to operate).
1216 it, but pickle relies on __main__ to operate).
1213
1217
1214 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1218 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1215 using properties, but forgot to make the main InteractiveShell
1219 using properties, but forgot to make the main InteractiveShell
1216 class a new-style class. Properties fail silently, and
1220 class a new-style class. Properties fail silently, and
1217 mysteriously, with old-style class (getters work, but
1221 mysteriously, with old-style class (getters work, but
1218 setters don't do anything).
1222 setters don't do anything).
1219
1223
1220 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1224 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1221
1225
1222 * IPython/Magic.py (magic_history): fix history reporting bug (I
1226 * IPython/Magic.py (magic_history): fix history reporting bug (I
1223 know some nasties are still there, I just can't seem to find a
1227 know some nasties are still there, I just can't seem to find a
1224 reproducible test case to track them down; the input history is
1228 reproducible test case to track them down; the input history is
1225 falling out of sync...)
1229 falling out of sync...)
1226
1230
1227 * IPython/iplib.py (handle_shell_escape): fix bug where both
1231 * IPython/iplib.py (handle_shell_escape): fix bug where both
1228 aliases and system accesses where broken for indented code (such
1232 aliases and system accesses where broken for indented code (such
1229 as loops).
1233 as loops).
1230
1234
1231 * IPython/genutils.py (shell): fix small but critical bug for
1235 * IPython/genutils.py (shell): fix small but critical bug for
1232 win32 system access.
1236 win32 system access.
1233
1237
1234 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1238 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1235
1239
1236 * IPython/iplib.py (showtraceback): remove use of the
1240 * IPython/iplib.py (showtraceback): remove use of the
1237 sys.last_{type/value/traceback} structures, which are non
1241 sys.last_{type/value/traceback} structures, which are non
1238 thread-safe.
1242 thread-safe.
1239 (_prefilter): change control flow to ensure that we NEVER
1243 (_prefilter): change control flow to ensure that we NEVER
1240 introspect objects when autocall is off. This will guarantee that
1244 introspect objects when autocall is off. This will guarantee that
1241 having an input line of the form 'x.y', where access to attribute
1245 having an input line of the form 'x.y', where access to attribute
1242 'y' has side effects, doesn't trigger the side effect TWICE. It
1246 'y' has side effects, doesn't trigger the side effect TWICE. It
1243 is important to note that, with autocall on, these side effects
1247 is important to note that, with autocall on, these side effects
1244 can still happen.
1248 can still happen.
1245 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1249 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1246 trio. IPython offers these three kinds of special calls which are
1250 trio. IPython offers these three kinds of special calls which are
1247 not python code, and it's a good thing to have their call method
1251 not python code, and it's a good thing to have their call method
1248 be accessible as pure python functions (not just special syntax at
1252 be accessible as pure python functions (not just special syntax at
1249 the command line). It gives us a better internal implementation
1253 the command line). It gives us a better internal implementation
1250 structure, as well as exposing these for user scripting more
1254 structure, as well as exposing these for user scripting more
1251 cleanly.
1255 cleanly.
1252
1256
1253 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1257 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1254 file. Now that they'll be more likely to be used with the
1258 file. Now that they'll be more likely to be used with the
1255 persistance system (%store), I want to make sure their module path
1259 persistance system (%store), I want to make sure their module path
1256 doesn't change in the future, so that we don't break things for
1260 doesn't change in the future, so that we don't break things for
1257 users' persisted data.
1261 users' persisted data.
1258
1262
1259 * IPython/iplib.py (autoindent_update): move indentation
1263 * IPython/iplib.py (autoindent_update): move indentation
1260 management into the _text_ processing loop, not the keyboard
1264 management into the _text_ processing loop, not the keyboard
1261 interactive one. This is necessary to correctly process non-typed
1265 interactive one. This is necessary to correctly process non-typed
1262 multiline input (such as macros).
1266 multiline input (such as macros).
1263
1267
1264 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1268 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1265 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1269 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1266 which was producing problems in the resulting manual.
1270 which was producing problems in the resulting manual.
1267 (magic_whos): improve reporting of instances (show their class,
1271 (magic_whos): improve reporting of instances (show their class,
1268 instead of simply printing 'instance' which isn't terribly
1272 instead of simply printing 'instance' which isn't terribly
1269 informative).
1273 informative).
1270
1274
1271 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1275 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1272 (minor mods) to support network shares under win32.
1276 (minor mods) to support network shares under win32.
1273
1277
1274 * IPython/winconsole.py (get_console_size): add new winconsole
1278 * IPython/winconsole.py (get_console_size): add new winconsole
1275 module and fixes to page_dumb() to improve its behavior under
1279 module and fixes to page_dumb() to improve its behavior under
1276 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1280 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1277
1281
1278 * IPython/Magic.py (Macro): simplified Macro class to just
1282 * IPython/Magic.py (Macro): simplified Macro class to just
1279 subclass list. We've had only 2.2 compatibility for a very long
1283 subclass list. We've had only 2.2 compatibility for a very long
1280 time, yet I was still avoiding subclassing the builtin types. No
1284 time, yet I was still avoiding subclassing the builtin types. No
1281 more (I'm also starting to use properties, though I won't shift to
1285 more (I'm also starting to use properties, though I won't shift to
1282 2.3-specific features quite yet).
1286 2.3-specific features quite yet).
1283 (magic_store): added Ville's patch for lightweight variable
1287 (magic_store): added Ville's patch for lightweight variable
1284 persistence, after a request on the user list by Matt Wilkie
1288 persistence, after a request on the user list by Matt Wilkie
1285 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1289 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1286 details.
1290 details.
1287
1291
1288 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1292 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1289 changed the default logfile name from 'ipython.log' to
1293 changed the default logfile name from 'ipython.log' to
1290 'ipython_log.py'. These logs are real python files, and now that
1294 'ipython_log.py'. These logs are real python files, and now that
1291 we have much better multiline support, people are more likely to
1295 we have much better multiline support, people are more likely to
1292 want to use them as such. Might as well name them correctly.
1296 want to use them as such. Might as well name them correctly.
1293
1297
1294 * IPython/Magic.py: substantial cleanup. While we can't stop
1298 * IPython/Magic.py: substantial cleanup. While we can't stop
1295 using magics as mixins, due to the existing customizations 'out
1299 using magics as mixins, due to the existing customizations 'out
1296 there' which rely on the mixin naming conventions, at least I
1300 there' which rely on the mixin naming conventions, at least I
1297 cleaned out all cross-class name usage. So once we are OK with
1301 cleaned out all cross-class name usage. So once we are OK with
1298 breaking compatibility, the two systems can be separated.
1302 breaking compatibility, the two systems can be separated.
1299
1303
1300 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1304 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1301 anymore, and the class is a fair bit less hideous as well. New
1305 anymore, and the class is a fair bit less hideous as well. New
1302 features were also introduced: timestamping of input, and logging
1306 features were also introduced: timestamping of input, and logging
1303 of output results. These are user-visible with the -t and -o
1307 of output results. These are user-visible with the -t and -o
1304 options to %logstart. Closes
1308 options to %logstart. Closes
1305 http://www.scipy.net/roundup/ipython/issue11 and a request by
1309 http://www.scipy.net/roundup/ipython/issue11 and a request by
1306 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1310 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1307
1311
1308 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1312 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1309
1313
1310 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1314 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1311 better handle backslashes in paths. See the thread 'More Windows
1315 better handle backslashes in paths. See the thread 'More Windows
1312 questions part 2 - \/ characters revisited' on the iypthon user
1316 questions part 2 - \/ characters revisited' on the iypthon user
1313 list:
1317 list:
1314 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1318 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1315
1319
1316 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1320 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1317
1321
1318 (InteractiveShell.__init__): change threaded shells to not use the
1322 (InteractiveShell.__init__): change threaded shells to not use the
1319 ipython crash handler. This was causing more problems than not,
1323 ipython crash handler. This was causing more problems than not,
1320 as exceptions in the main thread (GUI code, typically) would
1324 as exceptions in the main thread (GUI code, typically) would
1321 always show up as a 'crash', when they really weren't.
1325 always show up as a 'crash', when they really weren't.
1322
1326
1323 The colors and exception mode commands (%colors/%xmode) have been
1327 The colors and exception mode commands (%colors/%xmode) have been
1324 synchronized to also take this into account, so users can get
1328 synchronized to also take this into account, so users can get
1325 verbose exceptions for their threaded code as well. I also added
1329 verbose exceptions for their threaded code as well. I also added
1326 support for activating pdb inside this exception handler as well,
1330 support for activating pdb inside this exception handler as well,
1327 so now GUI authors can use IPython's enhanced pdb at runtime.
1331 so now GUI authors can use IPython's enhanced pdb at runtime.
1328
1332
1329 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1333 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1330 true by default, and add it to the shipped ipythonrc file. Since
1334 true by default, and add it to the shipped ipythonrc file. Since
1331 this asks the user before proceeding, I think it's OK to make it
1335 this asks the user before proceeding, I think it's OK to make it
1332 true by default.
1336 true by default.
1333
1337
1334 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1338 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1335 of the previous special-casing of input in the eval loop. I think
1339 of the previous special-casing of input in the eval loop. I think
1336 this is cleaner, as they really are commands and shouldn't have
1340 this is cleaner, as they really are commands and shouldn't have
1337 a special role in the middle of the core code.
1341 a special role in the middle of the core code.
1338
1342
1339 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1343 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1340
1344
1341 * IPython/iplib.py (edit_syntax_error): added support for
1345 * IPython/iplib.py (edit_syntax_error): added support for
1342 automatically reopening the editor if the file had a syntax error
1346 automatically reopening the editor if the file had a syntax error
1343 in it. Thanks to scottt who provided the patch at:
1347 in it. Thanks to scottt who provided the patch at:
1344 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1348 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1345 version committed).
1349 version committed).
1346
1350
1347 * IPython/iplib.py (handle_normal): add suport for multi-line
1351 * IPython/iplib.py (handle_normal): add suport for multi-line
1348 input with emtpy lines. This fixes
1352 input with emtpy lines. This fixes
1349 http://www.scipy.net/roundup/ipython/issue43 and a similar
1353 http://www.scipy.net/roundup/ipython/issue43 and a similar
1350 discussion on the user list.
1354 discussion on the user list.
1351
1355
1352 WARNING: a behavior change is necessarily introduced to support
1356 WARNING: a behavior change is necessarily introduced to support
1353 blank lines: now a single blank line with whitespace does NOT
1357 blank lines: now a single blank line with whitespace does NOT
1354 break the input loop, which means that when autoindent is on, by
1358 break the input loop, which means that when autoindent is on, by
1355 default hitting return on the next (indented) line does NOT exit.
1359 default hitting return on the next (indented) line does NOT exit.
1356
1360
1357 Instead, to exit a multiline input you can either have:
1361 Instead, to exit a multiline input you can either have:
1358
1362
1359 - TWO whitespace lines (just hit return again), or
1363 - TWO whitespace lines (just hit return again), or
1360 - a single whitespace line of a different length than provided
1364 - a single whitespace line of a different length than provided
1361 by the autoindent (add or remove a space).
1365 by the autoindent (add or remove a space).
1362
1366
1363 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1367 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1364 module to better organize all readline-related functionality.
1368 module to better organize all readline-related functionality.
1365 I've deleted FlexCompleter and put all completion clases here.
1369 I've deleted FlexCompleter and put all completion clases here.
1366
1370
1367 * IPython/iplib.py (raw_input): improve indentation management.
1371 * IPython/iplib.py (raw_input): improve indentation management.
1368 It is now possible to paste indented code with autoindent on, and
1372 It is now possible to paste indented code with autoindent on, and
1369 the code is interpreted correctly (though it still looks bad on
1373 the code is interpreted correctly (though it still looks bad on
1370 screen, due to the line-oriented nature of ipython).
1374 screen, due to the line-oriented nature of ipython).
1371 (MagicCompleter.complete): change behavior so that a TAB key on an
1375 (MagicCompleter.complete): change behavior so that a TAB key on an
1372 otherwise empty line actually inserts a tab, instead of completing
1376 otherwise empty line actually inserts a tab, instead of completing
1373 on the entire global namespace. This makes it easier to use the
1377 on the entire global namespace. This makes it easier to use the
1374 TAB key for indentation. After a request by Hans Meine
1378 TAB key for indentation. After a request by Hans Meine
1375 <hans_meine-AT-gmx.net>
1379 <hans_meine-AT-gmx.net>
1376 (_prefilter): add support so that typing plain 'exit' or 'quit'
1380 (_prefilter): add support so that typing plain 'exit' or 'quit'
1377 does a sensible thing. Originally I tried to deviate as little as
1381 does a sensible thing. Originally I tried to deviate as little as
1378 possible from the default python behavior, but even that one may
1382 possible from the default python behavior, but even that one may
1379 change in this direction (thread on python-dev to that effect).
1383 change in this direction (thread on python-dev to that effect).
1380 Regardless, ipython should do the right thing even if CPython's
1384 Regardless, ipython should do the right thing even if CPython's
1381 '>>>' prompt doesn't.
1385 '>>>' prompt doesn't.
1382 (InteractiveShell): removed subclassing code.InteractiveConsole
1386 (InteractiveShell): removed subclassing code.InteractiveConsole
1383 class. By now we'd overridden just about all of its methods: I've
1387 class. By now we'd overridden just about all of its methods: I've
1384 copied the remaining two over, and now ipython is a standalone
1388 copied the remaining two over, and now ipython is a standalone
1385 class. This will provide a clearer picture for the chainsaw
1389 class. This will provide a clearer picture for the chainsaw
1386 branch refactoring.
1390 branch refactoring.
1387
1391
1388 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1392 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1389
1393
1390 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1394 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1391 failures for objects which break when dir() is called on them.
1395 failures for objects which break when dir() is called on them.
1392
1396
1393 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1397 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1394 distinct local and global namespaces in the completer API. This
1398 distinct local and global namespaces in the completer API. This
1395 change allows us to properly handle completion with distinct
1399 change allows us to properly handle completion with distinct
1396 scopes, including in embedded instances (this had never really
1400 scopes, including in embedded instances (this had never really
1397 worked correctly).
1401 worked correctly).
1398
1402
1399 Note: this introduces a change in the constructor for
1403 Note: this introduces a change in the constructor for
1400 MagicCompleter, as a new global_namespace parameter is now the
1404 MagicCompleter, as a new global_namespace parameter is now the
1401 second argument (the others were bumped one position).
1405 second argument (the others were bumped one position).
1402
1406
1403 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1407 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1404
1408
1405 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1409 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1406 embedded instances (which can be done now thanks to Vivian's
1410 embedded instances (which can be done now thanks to Vivian's
1407 frame-handling fixes for pdb).
1411 frame-handling fixes for pdb).
1408 (InteractiveShell.__init__): Fix namespace handling problem in
1412 (InteractiveShell.__init__): Fix namespace handling problem in
1409 embedded instances. We were overwriting __main__ unconditionally,
1413 embedded instances. We were overwriting __main__ unconditionally,
1410 and this should only be done for 'full' (non-embedded) IPython;
1414 and this should only be done for 'full' (non-embedded) IPython;
1411 embedded instances must respect the caller's __main__. Thanks to
1415 embedded instances must respect the caller's __main__. Thanks to
1412 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1416 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1413
1417
1414 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1418 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1415
1419
1416 * setup.py: added download_url to setup(). This registers the
1420 * setup.py: added download_url to setup(). This registers the
1417 download address at PyPI, which is not only useful to humans
1421 download address at PyPI, which is not only useful to humans
1418 browsing the site, but is also picked up by setuptools (the Eggs
1422 browsing the site, but is also picked up by setuptools (the Eggs
1419 machinery). Thanks to Ville and R. Kern for the info/discussion
1423 machinery). Thanks to Ville and R. Kern for the info/discussion
1420 on this.
1424 on this.
1421
1425
1422 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1426 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1423
1427
1424 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1428 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1425 This brings a lot of nice functionality to the pdb mode, which now
1429 This brings a lot of nice functionality to the pdb mode, which now
1426 has tab-completion, syntax highlighting, and better stack handling
1430 has tab-completion, syntax highlighting, and better stack handling
1427 than before. Many thanks to Vivian De Smedt
1431 than before. Many thanks to Vivian De Smedt
1428 <vivian-AT-vdesmedt.com> for the original patches.
1432 <vivian-AT-vdesmedt.com> for the original patches.
1429
1433
1430 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1434 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1431
1435
1432 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1436 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1433 sequence to consistently accept the banner argument. The
1437 sequence to consistently accept the banner argument. The
1434 inconsistency was tripping SAGE, thanks to Gary Zablackis
1438 inconsistency was tripping SAGE, thanks to Gary Zablackis
1435 <gzabl-AT-yahoo.com> for the report.
1439 <gzabl-AT-yahoo.com> for the report.
1436
1440
1437 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1441 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1438
1442
1439 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1443 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1440 Fix bug where a naked 'alias' call in the ipythonrc file would
1444 Fix bug where a naked 'alias' call in the ipythonrc file would
1441 cause a crash. Bug reported by Jorgen Stenarson.
1445 cause a crash. Bug reported by Jorgen Stenarson.
1442
1446
1443 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1447 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1444
1448
1445 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1449 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1446 startup time.
1450 startup time.
1447
1451
1448 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1452 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1449 instances had introduced a bug with globals in normal code. Now
1453 instances had introduced a bug with globals in normal code. Now
1450 it's working in all cases.
1454 it's working in all cases.
1451
1455
1452 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1456 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1453 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1457 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1454 has been introduced to set the default case sensitivity of the
1458 has been introduced to set the default case sensitivity of the
1455 searches. Users can still select either mode at runtime on a
1459 searches. Users can still select either mode at runtime on a
1456 per-search basis.
1460 per-search basis.
1457
1461
1458 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1462 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1459
1463
1460 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1464 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1461 attributes in wildcard searches for subclasses. Modified version
1465 attributes in wildcard searches for subclasses. Modified version
1462 of a patch by Jorgen.
1466 of a patch by Jorgen.
1463
1467
1464 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1468 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1465
1469
1466 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1470 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1467 embedded instances. I added a user_global_ns attribute to the
1471 embedded instances. I added a user_global_ns attribute to the
1468 InteractiveShell class to handle this.
1472 InteractiveShell class to handle this.
1469
1473
1470 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1474 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1471
1475
1472 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1476 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1473 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1477 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1474 (reported under win32, but may happen also in other platforms).
1478 (reported under win32, but may happen also in other platforms).
1475 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1479 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1476
1480
1477 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1481 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1478
1482
1479 * IPython/Magic.py (magic_psearch): new support for wildcard
1483 * IPython/Magic.py (magic_psearch): new support for wildcard
1480 patterns. Now, typing ?a*b will list all names which begin with a
1484 patterns. Now, typing ?a*b will list all names which begin with a
1481 and end in b, for example. The %psearch magic has full
1485 and end in b, for example. The %psearch magic has full
1482 docstrings. Many thanks to JΓΆrgen Stenarson
1486 docstrings. Many thanks to JΓΆrgen Stenarson
1483 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1487 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1484 implementing this functionality.
1488 implementing this functionality.
1485
1489
1486 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1490 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1487
1491
1488 * Manual: fixed long-standing annoyance of double-dashes (as in
1492 * Manual: fixed long-standing annoyance of double-dashes (as in
1489 --prefix=~, for example) being stripped in the HTML version. This
1493 --prefix=~, for example) being stripped in the HTML version. This
1490 is a latex2html bug, but a workaround was provided. Many thanks
1494 is a latex2html bug, but a workaround was provided. Many thanks
1491 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1495 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1492 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1496 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1493 rolling. This seemingly small issue had tripped a number of users
1497 rolling. This seemingly small issue had tripped a number of users
1494 when first installing, so I'm glad to see it gone.
1498 when first installing, so I'm glad to see it gone.
1495
1499
1496 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1500 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1497
1501
1498 * IPython/Extensions/numeric_formats.py: fix missing import,
1502 * IPython/Extensions/numeric_formats.py: fix missing import,
1499 reported by Stephen Walton.
1503 reported by Stephen Walton.
1500
1504
1501 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1505 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1502
1506
1503 * IPython/demo.py: finish demo module, fully documented now.
1507 * IPython/demo.py: finish demo module, fully documented now.
1504
1508
1505 * IPython/genutils.py (file_read): simple little utility to read a
1509 * IPython/genutils.py (file_read): simple little utility to read a
1506 file and ensure it's closed afterwards.
1510 file and ensure it's closed afterwards.
1507
1511
1508 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1512 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1509
1513
1510 * IPython/demo.py (Demo.__init__): added support for individually
1514 * IPython/demo.py (Demo.__init__): added support for individually
1511 tagging blocks for automatic execution.
1515 tagging blocks for automatic execution.
1512
1516
1513 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1517 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1514 syntax-highlighted python sources, requested by John.
1518 syntax-highlighted python sources, requested by John.
1515
1519
1516 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1520 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1517
1521
1518 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1522 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1519 finishing.
1523 finishing.
1520
1524
1521 * IPython/genutils.py (shlex_split): moved from Magic to here,
1525 * IPython/genutils.py (shlex_split): moved from Magic to here,
1522 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1526 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1523
1527
1524 * IPython/demo.py (Demo.__init__): added support for silent
1528 * IPython/demo.py (Demo.__init__): added support for silent
1525 blocks, improved marks as regexps, docstrings written.
1529 blocks, improved marks as regexps, docstrings written.
1526 (Demo.__init__): better docstring, added support for sys.argv.
1530 (Demo.__init__): better docstring, added support for sys.argv.
1527
1531
1528 * IPython/genutils.py (marquee): little utility used by the demo
1532 * IPython/genutils.py (marquee): little utility used by the demo
1529 code, handy in general.
1533 code, handy in general.
1530
1534
1531 * IPython/demo.py (Demo.__init__): new class for interactive
1535 * IPython/demo.py (Demo.__init__): new class for interactive
1532 demos. Not documented yet, I just wrote it in a hurry for
1536 demos. Not documented yet, I just wrote it in a hurry for
1533 scipy'05. Will docstring later.
1537 scipy'05. Will docstring later.
1534
1538
1535 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1539 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1536
1540
1537 * IPython/Shell.py (sigint_handler): Drastic simplification which
1541 * IPython/Shell.py (sigint_handler): Drastic simplification which
1538 also seems to make Ctrl-C work correctly across threads! This is
1542 also seems to make Ctrl-C work correctly across threads! This is
1539 so simple, that I can't beleive I'd missed it before. Needs more
1543 so simple, that I can't beleive I'd missed it before. Needs more
1540 testing, though.
1544 testing, though.
1541 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1545 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1542 like this before...
1546 like this before...
1543
1547
1544 * IPython/genutils.py (get_home_dir): add protection against
1548 * IPython/genutils.py (get_home_dir): add protection against
1545 non-dirs in win32 registry.
1549 non-dirs in win32 registry.
1546
1550
1547 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1551 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1548 bug where dict was mutated while iterating (pysh crash).
1552 bug where dict was mutated while iterating (pysh crash).
1549
1553
1550 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1554 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1551
1555
1552 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1556 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1553 spurious newlines added by this routine. After a report by
1557 spurious newlines added by this routine. After a report by
1554 F. Mantegazza.
1558 F. Mantegazza.
1555
1559
1556 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1560 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1557
1561
1558 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1562 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1559 calls. These were a leftover from the GTK 1.x days, and can cause
1563 calls. These were a leftover from the GTK 1.x days, and can cause
1560 problems in certain cases (after a report by John Hunter).
1564 problems in certain cases (after a report by John Hunter).
1561
1565
1562 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1566 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1563 os.getcwd() fails at init time. Thanks to patch from David Remahl
1567 os.getcwd() fails at init time. Thanks to patch from David Remahl
1564 <chmod007-AT-mac.com>.
1568 <chmod007-AT-mac.com>.
1565 (InteractiveShell.__init__): prevent certain special magics from
1569 (InteractiveShell.__init__): prevent certain special magics from
1566 being shadowed by aliases. Closes
1570 being shadowed by aliases. Closes
1567 http://www.scipy.net/roundup/ipython/issue41.
1571 http://www.scipy.net/roundup/ipython/issue41.
1568
1572
1569 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1573 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1570
1574
1571 * IPython/iplib.py (InteractiveShell.complete): Added new
1575 * IPython/iplib.py (InteractiveShell.complete): Added new
1572 top-level completion method to expose the completion mechanism
1576 top-level completion method to expose the completion mechanism
1573 beyond readline-based environments.
1577 beyond readline-based environments.
1574
1578
1575 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1579 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1576
1580
1577 * tools/ipsvnc (svnversion): fix svnversion capture.
1581 * tools/ipsvnc (svnversion): fix svnversion capture.
1578
1582
1579 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1583 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1580 attribute to self, which was missing. Before, it was set by a
1584 attribute to self, which was missing. Before, it was set by a
1581 routine which in certain cases wasn't being called, so the
1585 routine which in certain cases wasn't being called, so the
1582 instance could end up missing the attribute. This caused a crash.
1586 instance could end up missing the attribute. This caused a crash.
1583 Closes http://www.scipy.net/roundup/ipython/issue40.
1587 Closes http://www.scipy.net/roundup/ipython/issue40.
1584
1588
1585 2005-08-16 Fernando Perez <fperez@colorado.edu>
1589 2005-08-16 Fernando Perez <fperez@colorado.edu>
1586
1590
1587 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1591 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1588 contains non-string attribute. Closes
1592 contains non-string attribute. Closes
1589 http://www.scipy.net/roundup/ipython/issue38.
1593 http://www.scipy.net/roundup/ipython/issue38.
1590
1594
1591 2005-08-14 Fernando Perez <fperez@colorado.edu>
1595 2005-08-14 Fernando Perez <fperez@colorado.edu>
1592
1596
1593 * tools/ipsvnc: Minor improvements, to add changeset info.
1597 * tools/ipsvnc: Minor improvements, to add changeset info.
1594
1598
1595 2005-08-12 Fernando Perez <fperez@colorado.edu>
1599 2005-08-12 Fernando Perez <fperez@colorado.edu>
1596
1600
1597 * IPython/iplib.py (runsource): remove self.code_to_run_src
1601 * IPython/iplib.py (runsource): remove self.code_to_run_src
1598 attribute. I realized this is nothing more than
1602 attribute. I realized this is nothing more than
1599 '\n'.join(self.buffer), and having the same data in two different
1603 '\n'.join(self.buffer), and having the same data in two different
1600 places is just asking for synchronization bugs. This may impact
1604 places is just asking for synchronization bugs. This may impact
1601 people who have custom exception handlers, so I need to warn
1605 people who have custom exception handlers, so I need to warn
1602 ipython-dev about it (F. Mantegazza may use them).
1606 ipython-dev about it (F. Mantegazza may use them).
1603
1607
1604 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1608 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1605
1609
1606 * IPython/genutils.py: fix 2.2 compatibility (generators)
1610 * IPython/genutils.py: fix 2.2 compatibility (generators)
1607
1611
1608 2005-07-18 Fernando Perez <fperez@colorado.edu>
1612 2005-07-18 Fernando Perez <fperez@colorado.edu>
1609
1613
1610 * IPython/genutils.py (get_home_dir): fix to help users with
1614 * IPython/genutils.py (get_home_dir): fix to help users with
1611 invalid $HOME under win32.
1615 invalid $HOME under win32.
1612
1616
1613 2005-07-17 Fernando Perez <fperez@colorado.edu>
1617 2005-07-17 Fernando Perez <fperez@colorado.edu>
1614
1618
1615 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1619 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1616 some old hacks and clean up a bit other routines; code should be
1620 some old hacks and clean up a bit other routines; code should be
1617 simpler and a bit faster.
1621 simpler and a bit faster.
1618
1622
1619 * IPython/iplib.py (interact): removed some last-resort attempts
1623 * IPython/iplib.py (interact): removed some last-resort attempts
1620 to survive broken stdout/stderr. That code was only making it
1624 to survive broken stdout/stderr. That code was only making it
1621 harder to abstract out the i/o (necessary for gui integration),
1625 harder to abstract out the i/o (necessary for gui integration),
1622 and the crashes it could prevent were extremely rare in practice
1626 and the crashes it could prevent were extremely rare in practice
1623 (besides being fully user-induced in a pretty violent manner).
1627 (besides being fully user-induced in a pretty violent manner).
1624
1628
1625 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1629 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1626 Nothing major yet, but the code is simpler to read; this should
1630 Nothing major yet, but the code is simpler to read; this should
1627 make it easier to do more serious modifications in the future.
1631 make it easier to do more serious modifications in the future.
1628
1632
1629 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1633 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1630 which broke in .15 (thanks to a report by Ville).
1634 which broke in .15 (thanks to a report by Ville).
1631
1635
1632 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1636 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1633 be quite correct, I know next to nothing about unicode). This
1637 be quite correct, I know next to nothing about unicode). This
1634 will allow unicode strings to be used in prompts, amongst other
1638 will allow unicode strings to be used in prompts, amongst other
1635 cases. It also will prevent ipython from crashing when unicode
1639 cases. It also will prevent ipython from crashing when unicode
1636 shows up unexpectedly in many places. If ascii encoding fails, we
1640 shows up unexpectedly in many places. If ascii encoding fails, we
1637 assume utf_8. Currently the encoding is not a user-visible
1641 assume utf_8. Currently the encoding is not a user-visible
1638 setting, though it could be made so if there is demand for it.
1642 setting, though it could be made so if there is demand for it.
1639
1643
1640 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1644 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1641
1645
1642 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1646 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1643
1647
1644 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1648 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1645
1649
1646 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1650 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1647 code can work transparently for 2.2/2.3.
1651 code can work transparently for 2.2/2.3.
1648
1652
1649 2005-07-16 Fernando Perez <fperez@colorado.edu>
1653 2005-07-16 Fernando Perez <fperez@colorado.edu>
1650
1654
1651 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1655 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1652 out of the color scheme table used for coloring exception
1656 out of the color scheme table used for coloring exception
1653 tracebacks. This allows user code to add new schemes at runtime.
1657 tracebacks. This allows user code to add new schemes at runtime.
1654 This is a minimally modified version of the patch at
1658 This is a minimally modified version of the patch at
1655 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1659 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1656 for the contribution.
1660 for the contribution.
1657
1661
1658 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1662 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1659 slightly modified version of the patch in
1663 slightly modified version of the patch in
1660 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1664 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1661 to remove the previous try/except solution (which was costlier).
1665 to remove the previous try/except solution (which was costlier).
1662 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1666 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1663
1667
1664 2005-06-08 Fernando Perez <fperez@colorado.edu>
1668 2005-06-08 Fernando Perez <fperez@colorado.edu>
1665
1669
1666 * IPython/iplib.py (write/write_err): Add methods to abstract all
1670 * IPython/iplib.py (write/write_err): Add methods to abstract all
1667 I/O a bit more.
1671 I/O a bit more.
1668
1672
1669 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1673 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1670 warning, reported by Aric Hagberg, fix by JD Hunter.
1674 warning, reported by Aric Hagberg, fix by JD Hunter.
1671
1675
1672 2005-06-02 *** Released version 0.6.15
1676 2005-06-02 *** Released version 0.6.15
1673
1677
1674 2005-06-01 Fernando Perez <fperez@colorado.edu>
1678 2005-06-01 Fernando Perez <fperez@colorado.edu>
1675
1679
1676 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1680 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1677 tab-completion of filenames within open-quoted strings. Note that
1681 tab-completion of filenames within open-quoted strings. Note that
1678 this requires that in ~/.ipython/ipythonrc, users change the
1682 this requires that in ~/.ipython/ipythonrc, users change the
1679 readline delimiters configuration to read:
1683 readline delimiters configuration to read:
1680
1684
1681 readline_remove_delims -/~
1685 readline_remove_delims -/~
1682
1686
1683
1687
1684 2005-05-31 *** Released version 0.6.14
1688 2005-05-31 *** Released version 0.6.14
1685
1689
1686 2005-05-29 Fernando Perez <fperez@colorado.edu>
1690 2005-05-29 Fernando Perez <fperez@colorado.edu>
1687
1691
1688 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1692 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1689 with files not on the filesystem. Reported by Eliyahu Sandler
1693 with files not on the filesystem. Reported by Eliyahu Sandler
1690 <eli@gondolin.net>
1694 <eli@gondolin.net>
1691
1695
1692 2005-05-22 Fernando Perez <fperez@colorado.edu>
1696 2005-05-22 Fernando Perez <fperez@colorado.edu>
1693
1697
1694 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1698 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1695 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1699 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1696
1700
1697 2005-05-19 Fernando Perez <fperez@colorado.edu>
1701 2005-05-19 Fernando Perez <fperez@colorado.edu>
1698
1702
1699 * IPython/iplib.py (safe_execfile): close a file which could be
1703 * IPython/iplib.py (safe_execfile): close a file which could be
1700 left open (causing problems in win32, which locks open files).
1704 left open (causing problems in win32, which locks open files).
1701 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1705 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1702
1706
1703 2005-05-18 Fernando Perez <fperez@colorado.edu>
1707 2005-05-18 Fernando Perez <fperez@colorado.edu>
1704
1708
1705 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1709 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1706 keyword arguments correctly to safe_execfile().
1710 keyword arguments correctly to safe_execfile().
1707
1711
1708 2005-05-13 Fernando Perez <fperez@colorado.edu>
1712 2005-05-13 Fernando Perez <fperez@colorado.edu>
1709
1713
1710 * ipython.1: Added info about Qt to manpage, and threads warning
1714 * ipython.1: Added info about Qt to manpage, and threads warning
1711 to usage page (invoked with --help).
1715 to usage page (invoked with --help).
1712
1716
1713 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1717 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1714 new matcher (it goes at the end of the priority list) to do
1718 new matcher (it goes at the end of the priority list) to do
1715 tab-completion on named function arguments. Submitted by George
1719 tab-completion on named function arguments. Submitted by George
1716 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1720 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1717 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1721 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1718 for more details.
1722 for more details.
1719
1723
1720 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1724 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1721 SystemExit exceptions in the script being run. Thanks to a report
1725 SystemExit exceptions in the script being run. Thanks to a report
1722 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1726 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1723 producing very annoying behavior when running unit tests.
1727 producing very annoying behavior when running unit tests.
1724
1728
1725 2005-05-12 Fernando Perez <fperez@colorado.edu>
1729 2005-05-12 Fernando Perez <fperez@colorado.edu>
1726
1730
1727 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1731 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1728 which I'd broken (again) due to a changed regexp. In the process,
1732 which I'd broken (again) due to a changed regexp. In the process,
1729 added ';' as an escape to auto-quote the whole line without
1733 added ';' as an escape to auto-quote the whole line without
1730 splitting its arguments. Thanks to a report by Jerry McRae
1734 splitting its arguments. Thanks to a report by Jerry McRae
1731 <qrs0xyc02-AT-sneakemail.com>.
1735 <qrs0xyc02-AT-sneakemail.com>.
1732
1736
1733 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1737 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1734 possible crashes caused by a TokenError. Reported by Ed Schofield
1738 possible crashes caused by a TokenError. Reported by Ed Schofield
1735 <schofield-AT-ftw.at>.
1739 <schofield-AT-ftw.at>.
1736
1740
1737 2005-05-06 Fernando Perez <fperez@colorado.edu>
1741 2005-05-06 Fernando Perez <fperez@colorado.edu>
1738
1742
1739 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1743 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1740
1744
1741 2005-04-29 Fernando Perez <fperez@colorado.edu>
1745 2005-04-29 Fernando Perez <fperez@colorado.edu>
1742
1746
1743 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1747 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1744 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1748 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1745 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1749 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1746 which provides support for Qt interactive usage (similar to the
1750 which provides support for Qt interactive usage (similar to the
1747 existing one for WX and GTK). This had been often requested.
1751 existing one for WX and GTK). This had been often requested.
1748
1752
1749 2005-04-14 *** Released version 0.6.13
1753 2005-04-14 *** Released version 0.6.13
1750
1754
1751 2005-04-08 Fernando Perez <fperez@colorado.edu>
1755 2005-04-08 Fernando Perez <fperez@colorado.edu>
1752
1756
1753 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1757 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1754 from _ofind, which gets called on almost every input line. Now,
1758 from _ofind, which gets called on almost every input line. Now,
1755 we only try to get docstrings if they are actually going to be
1759 we only try to get docstrings if they are actually going to be
1756 used (the overhead of fetching unnecessary docstrings can be
1760 used (the overhead of fetching unnecessary docstrings can be
1757 noticeable for certain objects, such as Pyro proxies).
1761 noticeable for certain objects, such as Pyro proxies).
1758
1762
1759 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1763 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1760 for completers. For some reason I had been passing them the state
1764 for completers. For some reason I had been passing them the state
1761 variable, which completers never actually need, and was in
1765 variable, which completers never actually need, and was in
1762 conflict with the rlcompleter API. Custom completers ONLY need to
1766 conflict with the rlcompleter API. Custom completers ONLY need to
1763 take the text parameter.
1767 take the text parameter.
1764
1768
1765 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1769 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1766 work correctly in pysh. I've also moved all the logic which used
1770 work correctly in pysh. I've also moved all the logic which used
1767 to be in pysh.py here, which will prevent problems with future
1771 to be in pysh.py here, which will prevent problems with future
1768 upgrades. However, this time I must warn users to update their
1772 upgrades. However, this time I must warn users to update their
1769 pysh profile to include the line
1773 pysh profile to include the line
1770
1774
1771 import_all IPython.Extensions.InterpreterExec
1775 import_all IPython.Extensions.InterpreterExec
1772
1776
1773 because otherwise things won't work for them. They MUST also
1777 because otherwise things won't work for them. They MUST also
1774 delete pysh.py and the line
1778 delete pysh.py and the line
1775
1779
1776 execfile pysh.py
1780 execfile pysh.py
1777
1781
1778 from their ipythonrc-pysh.
1782 from their ipythonrc-pysh.
1779
1783
1780 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1784 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1781 robust in the face of objects whose dir() returns non-strings
1785 robust in the face of objects whose dir() returns non-strings
1782 (which it shouldn't, but some broken libs like ITK do). Thanks to
1786 (which it shouldn't, but some broken libs like ITK do). Thanks to
1783 a patch by John Hunter (implemented differently, though). Also
1787 a patch by John Hunter (implemented differently, though). Also
1784 minor improvements by using .extend instead of + on lists.
1788 minor improvements by using .extend instead of + on lists.
1785
1789
1786 * pysh.py:
1790 * pysh.py:
1787
1791
1788 2005-04-06 Fernando Perez <fperez@colorado.edu>
1792 2005-04-06 Fernando Perez <fperez@colorado.edu>
1789
1793
1790 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1794 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1791 by default, so that all users benefit from it. Those who don't
1795 by default, so that all users benefit from it. Those who don't
1792 want it can still turn it off.
1796 want it can still turn it off.
1793
1797
1794 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1798 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1795 config file, I'd forgotten about this, so users were getting it
1799 config file, I'd forgotten about this, so users were getting it
1796 off by default.
1800 off by default.
1797
1801
1798 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1802 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1799 consistency. Now magics can be called in multiline statements,
1803 consistency. Now magics can be called in multiline statements,
1800 and python variables can be expanded in magic calls via $var.
1804 and python variables can be expanded in magic calls via $var.
1801 This makes the magic system behave just like aliases or !system
1805 This makes the magic system behave just like aliases or !system
1802 calls.
1806 calls.
1803
1807
1804 2005-03-28 Fernando Perez <fperez@colorado.edu>
1808 2005-03-28 Fernando Perez <fperez@colorado.edu>
1805
1809
1806 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1810 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1807 expensive string additions for building command. Add support for
1811 expensive string additions for building command. Add support for
1808 trailing ';' when autocall is used.
1812 trailing ';' when autocall is used.
1809
1813
1810 2005-03-26 Fernando Perez <fperez@colorado.edu>
1814 2005-03-26 Fernando Perez <fperez@colorado.edu>
1811
1815
1812 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1816 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1813 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1817 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1814 ipython.el robust against prompts with any number of spaces
1818 ipython.el robust against prompts with any number of spaces
1815 (including 0) after the ':' character.
1819 (including 0) after the ':' character.
1816
1820
1817 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1821 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1818 continuation prompt, which misled users to think the line was
1822 continuation prompt, which misled users to think the line was
1819 already indented. Closes debian Bug#300847, reported to me by
1823 already indented. Closes debian Bug#300847, reported to me by
1820 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1824 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1821
1825
1822 2005-03-23 Fernando Perez <fperez@colorado.edu>
1826 2005-03-23 Fernando Perez <fperez@colorado.edu>
1823
1827
1824 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1828 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1825 properly aligned if they have embedded newlines.
1829 properly aligned if they have embedded newlines.
1826
1830
1827 * IPython/iplib.py (runlines): Add a public method to expose
1831 * IPython/iplib.py (runlines): Add a public method to expose
1828 IPython's code execution machinery, so that users can run strings
1832 IPython's code execution machinery, so that users can run strings
1829 as if they had been typed at the prompt interactively.
1833 as if they had been typed at the prompt interactively.
1830 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1834 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1831 methods which can call the system shell, but with python variable
1835 methods which can call the system shell, but with python variable
1832 expansion. The three such methods are: __IPYTHON__.system,
1836 expansion. The three such methods are: __IPYTHON__.system,
1833 .getoutput and .getoutputerror. These need to be documented in a
1837 .getoutput and .getoutputerror. These need to be documented in a
1834 'public API' section (to be written) of the manual.
1838 'public API' section (to be written) of the manual.
1835
1839
1836 2005-03-20 Fernando Perez <fperez@colorado.edu>
1840 2005-03-20 Fernando Perez <fperez@colorado.edu>
1837
1841
1838 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1842 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1839 for custom exception handling. This is quite powerful, and it
1843 for custom exception handling. This is quite powerful, and it
1840 allows for user-installable exception handlers which can trap
1844 allows for user-installable exception handlers which can trap
1841 custom exceptions at runtime and treat them separately from
1845 custom exceptions at runtime and treat them separately from
1842 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1846 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1843 Mantegazza <mantegazza-AT-ill.fr>.
1847 Mantegazza <mantegazza-AT-ill.fr>.
1844 (InteractiveShell.set_custom_completer): public API function to
1848 (InteractiveShell.set_custom_completer): public API function to
1845 add new completers at runtime.
1849 add new completers at runtime.
1846
1850
1847 2005-03-19 Fernando Perez <fperez@colorado.edu>
1851 2005-03-19 Fernando Perez <fperez@colorado.edu>
1848
1852
1849 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1853 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1850 allow objects which provide their docstrings via non-standard
1854 allow objects which provide their docstrings via non-standard
1851 mechanisms (like Pyro proxies) to still be inspected by ipython's
1855 mechanisms (like Pyro proxies) to still be inspected by ipython's
1852 ? system.
1856 ? system.
1853
1857
1854 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1858 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1855 automatic capture system. I tried quite hard to make it work
1859 automatic capture system. I tried quite hard to make it work
1856 reliably, and simply failed. I tried many combinations with the
1860 reliably, and simply failed. I tried many combinations with the
1857 subprocess module, but eventually nothing worked in all needed
1861 subprocess module, but eventually nothing worked in all needed
1858 cases (not blocking stdin for the child, duplicating stdout
1862 cases (not blocking stdin for the child, duplicating stdout
1859 without blocking, etc). The new %sc/%sx still do capture to these
1863 without blocking, etc). The new %sc/%sx still do capture to these
1860 magical list/string objects which make shell use much more
1864 magical list/string objects which make shell use much more
1861 conveninent, so not all is lost.
1865 conveninent, so not all is lost.
1862
1866
1863 XXX - FIX MANUAL for the change above!
1867 XXX - FIX MANUAL for the change above!
1864
1868
1865 (runsource): I copied code.py's runsource() into ipython to modify
1869 (runsource): I copied code.py's runsource() into ipython to modify
1866 it a bit. Now the code object and source to be executed are
1870 it a bit. Now the code object and source to be executed are
1867 stored in ipython. This makes this info accessible to third-party
1871 stored in ipython. This makes this info accessible to third-party
1868 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1872 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1869 Mantegazza <mantegazza-AT-ill.fr>.
1873 Mantegazza <mantegazza-AT-ill.fr>.
1870
1874
1871 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1875 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1872 history-search via readline (like C-p/C-n). I'd wanted this for a
1876 history-search via readline (like C-p/C-n). I'd wanted this for a
1873 long time, but only recently found out how to do it. For users
1877 long time, but only recently found out how to do it. For users
1874 who already have their ipythonrc files made and want this, just
1878 who already have their ipythonrc files made and want this, just
1875 add:
1879 add:
1876
1880
1877 readline_parse_and_bind "\e[A": history-search-backward
1881 readline_parse_and_bind "\e[A": history-search-backward
1878 readline_parse_and_bind "\e[B": history-search-forward
1882 readline_parse_and_bind "\e[B": history-search-forward
1879
1883
1880 2005-03-18 Fernando Perez <fperez@colorado.edu>
1884 2005-03-18 Fernando Perez <fperez@colorado.edu>
1881
1885
1882 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1886 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1883 LSString and SList classes which allow transparent conversions
1887 LSString and SList classes which allow transparent conversions
1884 between list mode and whitespace-separated string.
1888 between list mode and whitespace-separated string.
1885 (magic_r): Fix recursion problem in %r.
1889 (magic_r): Fix recursion problem in %r.
1886
1890
1887 * IPython/genutils.py (LSString): New class to be used for
1891 * IPython/genutils.py (LSString): New class to be used for
1888 automatic storage of the results of all alias/system calls in _o
1892 automatic storage of the results of all alias/system calls in _o
1889 and _e (stdout/err). These provide a .l/.list attribute which
1893 and _e (stdout/err). These provide a .l/.list attribute which
1890 does automatic splitting on newlines. This means that for most
1894 does automatic splitting on newlines. This means that for most
1891 uses, you'll never need to do capturing of output with %sc/%sx
1895 uses, you'll never need to do capturing of output with %sc/%sx
1892 anymore, since ipython keeps this always done for you. Note that
1896 anymore, since ipython keeps this always done for you. Note that
1893 only the LAST results are stored, the _o/e variables are
1897 only the LAST results are stored, the _o/e variables are
1894 overwritten on each call. If you need to save their contents
1898 overwritten on each call. If you need to save their contents
1895 further, simply bind them to any other name.
1899 further, simply bind them to any other name.
1896
1900
1897 2005-03-17 Fernando Perez <fperez@colorado.edu>
1901 2005-03-17 Fernando Perez <fperez@colorado.edu>
1898
1902
1899 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1903 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1900 prompt namespace handling.
1904 prompt namespace handling.
1901
1905
1902 2005-03-16 Fernando Perez <fperez@colorado.edu>
1906 2005-03-16 Fernando Perez <fperez@colorado.edu>
1903
1907
1904 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1908 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1905 classic prompts to be '>>> ' (final space was missing, and it
1909 classic prompts to be '>>> ' (final space was missing, and it
1906 trips the emacs python mode).
1910 trips the emacs python mode).
1907 (BasePrompt.__str__): Added safe support for dynamic prompt
1911 (BasePrompt.__str__): Added safe support for dynamic prompt
1908 strings. Now you can set your prompt string to be '$x', and the
1912 strings. Now you can set your prompt string to be '$x', and the
1909 value of x will be printed from your interactive namespace. The
1913 value of x will be printed from your interactive namespace. The
1910 interpolation syntax includes the full Itpl support, so
1914 interpolation syntax includes the full Itpl support, so
1911 ${foo()+x+bar()} is a valid prompt string now, and the function
1915 ${foo()+x+bar()} is a valid prompt string now, and the function
1912 calls will be made at runtime.
1916 calls will be made at runtime.
1913
1917
1914 2005-03-15 Fernando Perez <fperez@colorado.edu>
1918 2005-03-15 Fernando Perez <fperez@colorado.edu>
1915
1919
1916 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1920 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1917 avoid name clashes in pylab. %hist still works, it just forwards
1921 avoid name clashes in pylab. %hist still works, it just forwards
1918 the call to %history.
1922 the call to %history.
1919
1923
1920 2005-03-02 *** Released version 0.6.12
1924 2005-03-02 *** Released version 0.6.12
1921
1925
1922 2005-03-02 Fernando Perez <fperez@colorado.edu>
1926 2005-03-02 Fernando Perez <fperez@colorado.edu>
1923
1927
1924 * IPython/iplib.py (handle_magic): log magic calls properly as
1928 * IPython/iplib.py (handle_magic): log magic calls properly as
1925 ipmagic() function calls.
1929 ipmagic() function calls.
1926
1930
1927 * IPython/Magic.py (magic_time): Improved %time to support
1931 * IPython/Magic.py (magic_time): Improved %time to support
1928 statements and provide wall-clock as well as CPU time.
1932 statements and provide wall-clock as well as CPU time.
1929
1933
1930 2005-02-27 Fernando Perez <fperez@colorado.edu>
1934 2005-02-27 Fernando Perez <fperez@colorado.edu>
1931
1935
1932 * IPython/hooks.py: New hooks module, to expose user-modifiable
1936 * IPython/hooks.py: New hooks module, to expose user-modifiable
1933 IPython functionality in a clean manner. For now only the editor
1937 IPython functionality in a clean manner. For now only the editor
1934 hook is actually written, and other thigns which I intend to turn
1938 hook is actually written, and other thigns which I intend to turn
1935 into proper hooks aren't yet there. The display and prefilter
1939 into proper hooks aren't yet there. The display and prefilter
1936 stuff, for example, should be hooks. But at least now the
1940 stuff, for example, should be hooks. But at least now the
1937 framework is in place, and the rest can be moved here with more
1941 framework is in place, and the rest can be moved here with more
1938 time later. IPython had had a .hooks variable for a long time for
1942 time later. IPython had had a .hooks variable for a long time for
1939 this purpose, but I'd never actually used it for anything.
1943 this purpose, but I'd never actually used it for anything.
1940
1944
1941 2005-02-26 Fernando Perez <fperez@colorado.edu>
1945 2005-02-26 Fernando Perez <fperez@colorado.edu>
1942
1946
1943 * IPython/ipmaker.py (make_IPython): make the default ipython
1947 * IPython/ipmaker.py (make_IPython): make the default ipython
1944 directory be called _ipython under win32, to follow more the
1948 directory be called _ipython under win32, to follow more the
1945 naming peculiarities of that platform (where buggy software like
1949 naming peculiarities of that platform (where buggy software like
1946 Visual Sourcesafe breaks with .named directories). Reported by
1950 Visual Sourcesafe breaks with .named directories). Reported by
1947 Ville Vainio.
1951 Ville Vainio.
1948
1952
1949 2005-02-23 Fernando Perez <fperez@colorado.edu>
1953 2005-02-23 Fernando Perez <fperez@colorado.edu>
1950
1954
1951 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1955 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1952 auto_aliases for win32 which were causing problems. Users can
1956 auto_aliases for win32 which were causing problems. Users can
1953 define the ones they personally like.
1957 define the ones they personally like.
1954
1958
1955 2005-02-21 Fernando Perez <fperez@colorado.edu>
1959 2005-02-21 Fernando Perez <fperez@colorado.edu>
1956
1960
1957 * IPython/Magic.py (magic_time): new magic to time execution of
1961 * IPython/Magic.py (magic_time): new magic to time execution of
1958 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1962 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1959
1963
1960 2005-02-19 Fernando Perez <fperez@colorado.edu>
1964 2005-02-19 Fernando Perez <fperez@colorado.edu>
1961
1965
1962 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1966 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1963 into keys (for prompts, for example).
1967 into keys (for prompts, for example).
1964
1968
1965 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1969 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1966 prompts in case users want them. This introduces a small behavior
1970 prompts in case users want them. This introduces a small behavior
1967 change: ipython does not automatically add a space to all prompts
1971 change: ipython does not automatically add a space to all prompts
1968 anymore. To get the old prompts with a space, users should add it
1972 anymore. To get the old prompts with a space, users should add it
1969 manually to their ipythonrc file, so for example prompt_in1 should
1973 manually to their ipythonrc file, so for example prompt_in1 should
1970 now read 'In [\#]: ' instead of 'In [\#]:'.
1974 now read 'In [\#]: ' instead of 'In [\#]:'.
1971 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1975 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1972 file) to control left-padding of secondary prompts.
1976 file) to control left-padding of secondary prompts.
1973
1977
1974 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1978 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1975 the profiler can't be imported. Fix for Debian, which removed
1979 the profiler can't be imported. Fix for Debian, which removed
1976 profile.py because of License issues. I applied a slightly
1980 profile.py because of License issues. I applied a slightly
1977 modified version of the original Debian patch at
1981 modified version of the original Debian patch at
1978 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1982 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1979
1983
1980 2005-02-17 Fernando Perez <fperez@colorado.edu>
1984 2005-02-17 Fernando Perez <fperez@colorado.edu>
1981
1985
1982 * IPython/genutils.py (native_line_ends): Fix bug which would
1986 * IPython/genutils.py (native_line_ends): Fix bug which would
1983 cause improper line-ends under win32 b/c I was not opening files
1987 cause improper line-ends under win32 b/c I was not opening files
1984 in binary mode. Bug report and fix thanks to Ville.
1988 in binary mode. Bug report and fix thanks to Ville.
1985
1989
1986 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1990 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1987 trying to catch spurious foo[1] autocalls. My fix actually broke
1991 trying to catch spurious foo[1] autocalls. My fix actually broke
1988 ',/' autoquote/call with explicit escape (bad regexp).
1992 ',/' autoquote/call with explicit escape (bad regexp).
1989
1993
1990 2005-02-15 *** Released version 0.6.11
1994 2005-02-15 *** Released version 0.6.11
1991
1995
1992 2005-02-14 Fernando Perez <fperez@colorado.edu>
1996 2005-02-14 Fernando Perez <fperez@colorado.edu>
1993
1997
1994 * IPython/background_jobs.py: New background job management
1998 * IPython/background_jobs.py: New background job management
1995 subsystem. This is implemented via a new set of classes, and
1999 subsystem. This is implemented via a new set of classes, and
1996 IPython now provides a builtin 'jobs' object for background job
2000 IPython now provides a builtin 'jobs' object for background job
1997 execution. A convenience %bg magic serves as a lightweight
2001 execution. A convenience %bg magic serves as a lightweight
1998 frontend for starting the more common type of calls. This was
2002 frontend for starting the more common type of calls. This was
1999 inspired by discussions with B. Granger and the BackgroundCommand
2003 inspired by discussions with B. Granger and the BackgroundCommand
2000 class described in the book Python Scripting for Computational
2004 class described in the book Python Scripting for Computational
2001 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2005 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2002 (although ultimately no code from this text was used, as IPython's
2006 (although ultimately no code from this text was used, as IPython's
2003 system is a separate implementation).
2007 system is a separate implementation).
2004
2008
2005 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2009 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2006 to control the completion of single/double underscore names
2010 to control the completion of single/double underscore names
2007 separately. As documented in the example ipytonrc file, the
2011 separately. As documented in the example ipytonrc file, the
2008 readline_omit__names variable can now be set to 2, to omit even
2012 readline_omit__names variable can now be set to 2, to omit even
2009 single underscore names. Thanks to a patch by Brian Wong
2013 single underscore names. Thanks to a patch by Brian Wong
2010 <BrianWong-AT-AirgoNetworks.Com>.
2014 <BrianWong-AT-AirgoNetworks.Com>.
2011 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2015 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2012 be autocalled as foo([1]) if foo were callable. A problem for
2016 be autocalled as foo([1]) if foo were callable. A problem for
2013 things which are both callable and implement __getitem__.
2017 things which are both callable and implement __getitem__.
2014 (init_readline): Fix autoindentation for win32. Thanks to a patch
2018 (init_readline): Fix autoindentation for win32. Thanks to a patch
2015 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2019 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2016
2020
2017 2005-02-12 Fernando Perez <fperez@colorado.edu>
2021 2005-02-12 Fernando Perez <fperez@colorado.edu>
2018
2022
2019 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2023 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2020 which I had written long ago to sort out user error messages which
2024 which I had written long ago to sort out user error messages which
2021 may occur during startup. This seemed like a good idea initially,
2025 may occur during startup. This seemed like a good idea initially,
2022 but it has proven a disaster in retrospect. I don't want to
2026 but it has proven a disaster in retrospect. I don't want to
2023 change much code for now, so my fix is to set the internal 'debug'
2027 change much code for now, so my fix is to set the internal 'debug'
2024 flag to true everywhere, whose only job was precisely to control
2028 flag to true everywhere, whose only job was precisely to control
2025 this subsystem. This closes issue 28 (as well as avoiding all
2029 this subsystem. This closes issue 28 (as well as avoiding all
2026 sorts of strange hangups which occur from time to time).
2030 sorts of strange hangups which occur from time to time).
2027
2031
2028 2005-02-07 Fernando Perez <fperez@colorado.edu>
2032 2005-02-07 Fernando Perez <fperez@colorado.edu>
2029
2033
2030 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2034 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2031 previous call produced a syntax error.
2035 previous call produced a syntax error.
2032
2036
2033 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2037 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2034 classes without constructor.
2038 classes without constructor.
2035
2039
2036 2005-02-06 Fernando Perez <fperez@colorado.edu>
2040 2005-02-06 Fernando Perez <fperez@colorado.edu>
2037
2041
2038 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2042 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2039 completions with the results of each matcher, so we return results
2043 completions with the results of each matcher, so we return results
2040 to the user from all namespaces. This breaks with ipython
2044 to the user from all namespaces. This breaks with ipython
2041 tradition, but I think it's a nicer behavior. Now you get all
2045 tradition, but I think it's a nicer behavior. Now you get all
2042 possible completions listed, from all possible namespaces (python,
2046 possible completions listed, from all possible namespaces (python,
2043 filesystem, magics...) After a request by John Hunter
2047 filesystem, magics...) After a request by John Hunter
2044 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2048 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2045
2049
2046 2005-02-05 Fernando Perez <fperez@colorado.edu>
2050 2005-02-05 Fernando Perez <fperez@colorado.edu>
2047
2051
2048 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2052 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2049 the call had quote characters in it (the quotes were stripped).
2053 the call had quote characters in it (the quotes were stripped).
2050
2054
2051 2005-01-31 Fernando Perez <fperez@colorado.edu>
2055 2005-01-31 Fernando Perez <fperez@colorado.edu>
2052
2056
2053 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2057 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2054 Itpl.itpl() to make the code more robust against psyco
2058 Itpl.itpl() to make the code more robust against psyco
2055 optimizations.
2059 optimizations.
2056
2060
2057 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2061 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2058 of causing an exception. Quicker, cleaner.
2062 of causing an exception. Quicker, cleaner.
2059
2063
2060 2005-01-28 Fernando Perez <fperez@colorado.edu>
2064 2005-01-28 Fernando Perez <fperez@colorado.edu>
2061
2065
2062 * scripts/ipython_win_post_install.py (install): hardcode
2066 * scripts/ipython_win_post_install.py (install): hardcode
2063 sys.prefix+'python.exe' as the executable path. It turns out that
2067 sys.prefix+'python.exe' as the executable path. It turns out that
2064 during the post-installation run, sys.executable resolves to the
2068 during the post-installation run, sys.executable resolves to the
2065 name of the binary installer! I should report this as a distutils
2069 name of the binary installer! I should report this as a distutils
2066 bug, I think. I updated the .10 release with this tiny fix, to
2070 bug, I think. I updated the .10 release with this tiny fix, to
2067 avoid annoying the lists further.
2071 avoid annoying the lists further.
2068
2072
2069 2005-01-27 *** Released version 0.6.10
2073 2005-01-27 *** Released version 0.6.10
2070
2074
2071 2005-01-27 Fernando Perez <fperez@colorado.edu>
2075 2005-01-27 Fernando Perez <fperez@colorado.edu>
2072
2076
2073 * IPython/numutils.py (norm): Added 'inf' as optional name for
2077 * IPython/numutils.py (norm): Added 'inf' as optional name for
2074 L-infinity norm, included references to mathworld.com for vector
2078 L-infinity norm, included references to mathworld.com for vector
2075 norm definitions.
2079 norm definitions.
2076 (amin/amax): added amin/amax for array min/max. Similar to what
2080 (amin/amax): added amin/amax for array min/max. Similar to what
2077 pylab ships with after the recent reorganization of names.
2081 pylab ships with after the recent reorganization of names.
2078 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2082 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2079
2083
2080 * ipython.el: committed Alex's recent fixes and improvements.
2084 * ipython.el: committed Alex's recent fixes and improvements.
2081 Tested with python-mode from CVS, and it looks excellent. Since
2085 Tested with python-mode from CVS, and it looks excellent. Since
2082 python-mode hasn't released anything in a while, I'm temporarily
2086 python-mode hasn't released anything in a while, I'm temporarily
2083 putting a copy of today's CVS (v 4.70) of python-mode in:
2087 putting a copy of today's CVS (v 4.70) of python-mode in:
2084 http://ipython.scipy.org/tmp/python-mode.el
2088 http://ipython.scipy.org/tmp/python-mode.el
2085
2089
2086 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2090 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2087 sys.executable for the executable name, instead of assuming it's
2091 sys.executable for the executable name, instead of assuming it's
2088 called 'python.exe' (the post-installer would have produced broken
2092 called 'python.exe' (the post-installer would have produced broken
2089 setups on systems with a differently named python binary).
2093 setups on systems with a differently named python binary).
2090
2094
2091 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2095 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2092 references to os.linesep, to make the code more
2096 references to os.linesep, to make the code more
2093 platform-independent. This is also part of the win32 coloring
2097 platform-independent. This is also part of the win32 coloring
2094 fixes.
2098 fixes.
2095
2099
2096 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2100 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2097 lines, which actually cause coloring bugs because the length of
2101 lines, which actually cause coloring bugs because the length of
2098 the line is very difficult to correctly compute with embedded
2102 the line is very difficult to correctly compute with embedded
2099 escapes. This was the source of all the coloring problems under
2103 escapes. This was the source of all the coloring problems under
2100 Win32. I think that _finally_, Win32 users have a properly
2104 Win32. I think that _finally_, Win32 users have a properly
2101 working ipython in all respects. This would never have happened
2105 working ipython in all respects. This would never have happened
2102 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2106 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2103
2107
2104 2005-01-26 *** Released version 0.6.9
2108 2005-01-26 *** Released version 0.6.9
2105
2109
2106 2005-01-25 Fernando Perez <fperez@colorado.edu>
2110 2005-01-25 Fernando Perez <fperez@colorado.edu>
2107
2111
2108 * setup.py: finally, we have a true Windows installer, thanks to
2112 * setup.py: finally, we have a true Windows installer, thanks to
2109 the excellent work of Viktor Ransmayr
2113 the excellent work of Viktor Ransmayr
2110 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2114 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2111 Windows users. The setup routine is quite a bit cleaner thanks to
2115 Windows users. The setup routine is quite a bit cleaner thanks to
2112 this, and the post-install script uses the proper functions to
2116 this, and the post-install script uses the proper functions to
2113 allow a clean de-installation using the standard Windows Control
2117 allow a clean de-installation using the standard Windows Control
2114 Panel.
2118 Panel.
2115
2119
2116 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2120 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2117 environment variable under all OSes (including win32) if
2121 environment variable under all OSes (including win32) if
2118 available. This will give consistency to win32 users who have set
2122 available. This will give consistency to win32 users who have set
2119 this variable for any reason. If os.environ['HOME'] fails, the
2123 this variable for any reason. If os.environ['HOME'] fails, the
2120 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2124 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2121
2125
2122 2005-01-24 Fernando Perez <fperez@colorado.edu>
2126 2005-01-24 Fernando Perez <fperez@colorado.edu>
2123
2127
2124 * IPython/numutils.py (empty_like): add empty_like(), similar to
2128 * IPython/numutils.py (empty_like): add empty_like(), similar to
2125 zeros_like() but taking advantage of the new empty() Numeric routine.
2129 zeros_like() but taking advantage of the new empty() Numeric routine.
2126
2130
2127 2005-01-23 *** Released version 0.6.8
2131 2005-01-23 *** Released version 0.6.8
2128
2132
2129 2005-01-22 Fernando Perez <fperez@colorado.edu>
2133 2005-01-22 Fernando Perez <fperez@colorado.edu>
2130
2134
2131 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2135 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2132 automatic show() calls. After discussing things with JDH, it
2136 automatic show() calls. After discussing things with JDH, it
2133 turns out there are too many corner cases where this can go wrong.
2137 turns out there are too many corner cases where this can go wrong.
2134 It's best not to try to be 'too smart', and simply have ipython
2138 It's best not to try to be 'too smart', and simply have ipython
2135 reproduce as much as possible the default behavior of a normal
2139 reproduce as much as possible the default behavior of a normal
2136 python shell.
2140 python shell.
2137
2141
2138 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2142 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2139 line-splitting regexp and _prefilter() to avoid calling getattr()
2143 line-splitting regexp and _prefilter() to avoid calling getattr()
2140 on assignments. This closes
2144 on assignments. This closes
2141 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2145 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2142 readline uses getattr(), so a simple <TAB> keypress is still
2146 readline uses getattr(), so a simple <TAB> keypress is still
2143 enough to trigger getattr() calls on an object.
2147 enough to trigger getattr() calls on an object.
2144
2148
2145 2005-01-21 Fernando Perez <fperez@colorado.edu>
2149 2005-01-21 Fernando Perez <fperez@colorado.edu>
2146
2150
2147 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2151 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2148 docstring under pylab so it doesn't mask the original.
2152 docstring under pylab so it doesn't mask the original.
2149
2153
2150 2005-01-21 *** Released version 0.6.7
2154 2005-01-21 *** Released version 0.6.7
2151
2155
2152 2005-01-21 Fernando Perez <fperez@colorado.edu>
2156 2005-01-21 Fernando Perez <fperez@colorado.edu>
2153
2157
2154 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2158 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2155 signal handling for win32 users in multithreaded mode.
2159 signal handling for win32 users in multithreaded mode.
2156
2160
2157 2005-01-17 Fernando Perez <fperez@colorado.edu>
2161 2005-01-17 Fernando Perez <fperez@colorado.edu>
2158
2162
2159 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2163 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2160 instances with no __init__. After a crash report by Norbert Nemec
2164 instances with no __init__. After a crash report by Norbert Nemec
2161 <Norbert-AT-nemec-online.de>.
2165 <Norbert-AT-nemec-online.de>.
2162
2166
2163 2005-01-14 Fernando Perez <fperez@colorado.edu>
2167 2005-01-14 Fernando Perez <fperez@colorado.edu>
2164
2168
2165 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2169 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2166 names for verbose exceptions, when multiple dotted names and the
2170 names for verbose exceptions, when multiple dotted names and the
2167 'parent' object were present on the same line.
2171 'parent' object were present on the same line.
2168
2172
2169 2005-01-11 Fernando Perez <fperez@colorado.edu>
2173 2005-01-11 Fernando Perez <fperez@colorado.edu>
2170
2174
2171 * IPython/genutils.py (flag_calls): new utility to trap and flag
2175 * IPython/genutils.py (flag_calls): new utility to trap and flag
2172 calls in functions. I need it to clean up matplotlib support.
2176 calls in functions. I need it to clean up matplotlib support.
2173 Also removed some deprecated code in genutils.
2177 Also removed some deprecated code in genutils.
2174
2178
2175 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2179 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2176 that matplotlib scripts called with %run, which don't call show()
2180 that matplotlib scripts called with %run, which don't call show()
2177 themselves, still have their plotting windows open.
2181 themselves, still have their plotting windows open.
2178
2182
2179 2005-01-05 Fernando Perez <fperez@colorado.edu>
2183 2005-01-05 Fernando Perez <fperez@colorado.edu>
2180
2184
2181 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2185 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2182 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2186 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2183
2187
2184 2004-12-19 Fernando Perez <fperez@colorado.edu>
2188 2004-12-19 Fernando Perez <fperez@colorado.edu>
2185
2189
2186 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2190 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2187 parent_runcode, which was an eyesore. The same result can be
2191 parent_runcode, which was an eyesore. The same result can be
2188 obtained with Python's regular superclass mechanisms.
2192 obtained with Python's regular superclass mechanisms.
2189
2193
2190 2004-12-17 Fernando Perez <fperez@colorado.edu>
2194 2004-12-17 Fernando Perez <fperez@colorado.edu>
2191
2195
2192 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2196 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2193 reported by Prabhu.
2197 reported by Prabhu.
2194 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2198 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2195 sys.stderr) instead of explicitly calling sys.stderr. This helps
2199 sys.stderr) instead of explicitly calling sys.stderr. This helps
2196 maintain our I/O abstractions clean, for future GUI embeddings.
2200 maintain our I/O abstractions clean, for future GUI embeddings.
2197
2201
2198 * IPython/genutils.py (info): added new utility for sys.stderr
2202 * IPython/genutils.py (info): added new utility for sys.stderr
2199 unified info message handling (thin wrapper around warn()).
2203 unified info message handling (thin wrapper around warn()).
2200
2204
2201 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2205 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2202 composite (dotted) names on verbose exceptions.
2206 composite (dotted) names on verbose exceptions.
2203 (VerboseTB.nullrepr): harden against another kind of errors which
2207 (VerboseTB.nullrepr): harden against another kind of errors which
2204 Python's inspect module can trigger, and which were crashing
2208 Python's inspect module can trigger, and which were crashing
2205 IPython. Thanks to a report by Marco Lombardi
2209 IPython. Thanks to a report by Marco Lombardi
2206 <mlombard-AT-ma010192.hq.eso.org>.
2210 <mlombard-AT-ma010192.hq.eso.org>.
2207
2211
2208 2004-12-13 *** Released version 0.6.6
2212 2004-12-13 *** Released version 0.6.6
2209
2213
2210 2004-12-12 Fernando Perez <fperez@colorado.edu>
2214 2004-12-12 Fernando Perez <fperez@colorado.edu>
2211
2215
2212 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2216 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2213 generated by pygtk upon initialization if it was built without
2217 generated by pygtk upon initialization if it was built without
2214 threads (for matplotlib users). After a crash reported by
2218 threads (for matplotlib users). After a crash reported by
2215 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2219 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2216
2220
2217 * IPython/ipmaker.py (make_IPython): fix small bug in the
2221 * IPython/ipmaker.py (make_IPython): fix small bug in the
2218 import_some parameter for multiple imports.
2222 import_some parameter for multiple imports.
2219
2223
2220 * IPython/iplib.py (ipmagic): simplified the interface of
2224 * IPython/iplib.py (ipmagic): simplified the interface of
2221 ipmagic() to take a single string argument, just as it would be
2225 ipmagic() to take a single string argument, just as it would be
2222 typed at the IPython cmd line.
2226 typed at the IPython cmd line.
2223 (ipalias): Added new ipalias() with an interface identical to
2227 (ipalias): Added new ipalias() with an interface identical to
2224 ipmagic(). This completes exposing a pure python interface to the
2228 ipmagic(). This completes exposing a pure python interface to the
2225 alias and magic system, which can be used in loops or more complex
2229 alias and magic system, which can be used in loops or more complex
2226 code where IPython's automatic line mangling is not active.
2230 code where IPython's automatic line mangling is not active.
2227
2231
2228 * IPython/genutils.py (timing): changed interface of timing to
2232 * IPython/genutils.py (timing): changed interface of timing to
2229 simply run code once, which is the most common case. timings()
2233 simply run code once, which is the most common case. timings()
2230 remains unchanged, for the cases where you want multiple runs.
2234 remains unchanged, for the cases where you want multiple runs.
2231
2235
2232 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2236 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2233 bug where Python2.2 crashes with exec'ing code which does not end
2237 bug where Python2.2 crashes with exec'ing code which does not end
2234 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2238 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2235 before.
2239 before.
2236
2240
2237 2004-12-10 Fernando Perez <fperez@colorado.edu>
2241 2004-12-10 Fernando Perez <fperez@colorado.edu>
2238
2242
2239 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2243 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2240 -t to -T, to accomodate the new -t flag in %run (the %run and
2244 -t to -T, to accomodate the new -t flag in %run (the %run and
2241 %prun options are kind of intermixed, and it's not easy to change
2245 %prun options are kind of intermixed, and it's not easy to change
2242 this with the limitations of python's getopt).
2246 this with the limitations of python's getopt).
2243
2247
2244 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2248 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2245 the execution of scripts. It's not as fine-tuned as timeit.py,
2249 the execution of scripts. It's not as fine-tuned as timeit.py,
2246 but it works from inside ipython (and under 2.2, which lacks
2250 but it works from inside ipython (and under 2.2, which lacks
2247 timeit.py). Optionally a number of runs > 1 can be given for
2251 timeit.py). Optionally a number of runs > 1 can be given for
2248 timing very short-running code.
2252 timing very short-running code.
2249
2253
2250 * IPython/genutils.py (uniq_stable): new routine which returns a
2254 * IPython/genutils.py (uniq_stable): new routine which returns a
2251 list of unique elements in any iterable, but in stable order of
2255 list of unique elements in any iterable, but in stable order of
2252 appearance. I needed this for the ultraTB fixes, and it's a handy
2256 appearance. I needed this for the ultraTB fixes, and it's a handy
2253 utility.
2257 utility.
2254
2258
2255 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2259 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2256 dotted names in Verbose exceptions. This had been broken since
2260 dotted names in Verbose exceptions. This had been broken since
2257 the very start, now x.y will properly be printed in a Verbose
2261 the very start, now x.y will properly be printed in a Verbose
2258 traceback, instead of x being shown and y appearing always as an
2262 traceback, instead of x being shown and y appearing always as an
2259 'undefined global'. Getting this to work was a bit tricky,
2263 'undefined global'. Getting this to work was a bit tricky,
2260 because by default python tokenizers are stateless. Saved by
2264 because by default python tokenizers are stateless. Saved by
2261 python's ability to easily add a bit of state to an arbitrary
2265 python's ability to easily add a bit of state to an arbitrary
2262 function (without needing to build a full-blown callable object).
2266 function (without needing to build a full-blown callable object).
2263
2267
2264 Also big cleanup of this code, which had horrendous runtime
2268 Also big cleanup of this code, which had horrendous runtime
2265 lookups of zillions of attributes for colorization. Moved all
2269 lookups of zillions of attributes for colorization. Moved all
2266 this code into a few templates, which make it cleaner and quicker.
2270 this code into a few templates, which make it cleaner and quicker.
2267
2271
2268 Printout quality was also improved for Verbose exceptions: one
2272 Printout quality was also improved for Verbose exceptions: one
2269 variable per line, and memory addresses are printed (this can be
2273 variable per line, and memory addresses are printed (this can be
2270 quite handy in nasty debugging situations, which is what Verbose
2274 quite handy in nasty debugging situations, which is what Verbose
2271 is for).
2275 is for).
2272
2276
2273 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2277 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2274 the command line as scripts to be loaded by embedded instances.
2278 the command line as scripts to be loaded by embedded instances.
2275 Doing so has the potential for an infinite recursion if there are
2279 Doing so has the potential for an infinite recursion if there are
2276 exceptions thrown in the process. This fixes a strange crash
2280 exceptions thrown in the process. This fixes a strange crash
2277 reported by Philippe MULLER <muller-AT-irit.fr>.
2281 reported by Philippe MULLER <muller-AT-irit.fr>.
2278
2282
2279 2004-12-09 Fernando Perez <fperez@colorado.edu>
2283 2004-12-09 Fernando Perez <fperez@colorado.edu>
2280
2284
2281 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2285 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2282 to reflect new names in matplotlib, which now expose the
2286 to reflect new names in matplotlib, which now expose the
2283 matlab-compatible interface via a pylab module instead of the
2287 matlab-compatible interface via a pylab module instead of the
2284 'matlab' name. The new code is backwards compatible, so users of
2288 'matlab' name. The new code is backwards compatible, so users of
2285 all matplotlib versions are OK. Patch by J. Hunter.
2289 all matplotlib versions are OK. Patch by J. Hunter.
2286
2290
2287 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2291 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2288 of __init__ docstrings for instances (class docstrings are already
2292 of __init__ docstrings for instances (class docstrings are already
2289 automatically printed). Instances with customized docstrings
2293 automatically printed). Instances with customized docstrings
2290 (indep. of the class) are also recognized and all 3 separate
2294 (indep. of the class) are also recognized and all 3 separate
2291 docstrings are printed (instance, class, constructor). After some
2295 docstrings are printed (instance, class, constructor). After some
2292 comments/suggestions by J. Hunter.
2296 comments/suggestions by J. Hunter.
2293
2297
2294 2004-12-05 Fernando Perez <fperez@colorado.edu>
2298 2004-12-05 Fernando Perez <fperez@colorado.edu>
2295
2299
2296 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2300 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2297 warnings when tab-completion fails and triggers an exception.
2301 warnings when tab-completion fails and triggers an exception.
2298
2302
2299 2004-12-03 Fernando Perez <fperez@colorado.edu>
2303 2004-12-03 Fernando Perez <fperez@colorado.edu>
2300
2304
2301 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2305 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2302 be triggered when using 'run -p'. An incorrect option flag was
2306 be triggered when using 'run -p'. An incorrect option flag was
2303 being set ('d' instead of 'D').
2307 being set ('d' instead of 'D').
2304 (manpage): fix missing escaped \- sign.
2308 (manpage): fix missing escaped \- sign.
2305
2309
2306 2004-11-30 *** Released version 0.6.5
2310 2004-11-30 *** Released version 0.6.5
2307
2311
2308 2004-11-30 Fernando Perez <fperez@colorado.edu>
2312 2004-11-30 Fernando Perez <fperez@colorado.edu>
2309
2313
2310 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2314 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2311 setting with -d option.
2315 setting with -d option.
2312
2316
2313 * setup.py (docfiles): Fix problem where the doc glob I was using
2317 * setup.py (docfiles): Fix problem where the doc glob I was using
2314 was COMPLETELY BROKEN. It was giving the right files by pure
2318 was COMPLETELY BROKEN. It was giving the right files by pure
2315 accident, but failed once I tried to include ipython.el. Note:
2319 accident, but failed once I tried to include ipython.el. Note:
2316 glob() does NOT allow you to do exclusion on multiple endings!
2320 glob() does NOT allow you to do exclusion on multiple endings!
2317
2321
2318 2004-11-29 Fernando Perez <fperez@colorado.edu>
2322 2004-11-29 Fernando Perez <fperez@colorado.edu>
2319
2323
2320 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2324 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2321 the manpage as the source. Better formatting & consistency.
2325 the manpage as the source. Better formatting & consistency.
2322
2326
2323 * IPython/Magic.py (magic_run): Added new -d option, to run
2327 * IPython/Magic.py (magic_run): Added new -d option, to run
2324 scripts under the control of the python pdb debugger. Note that
2328 scripts under the control of the python pdb debugger. Note that
2325 this required changing the %prun option -d to -D, to avoid a clash
2329 this required changing the %prun option -d to -D, to avoid a clash
2326 (since %run must pass options to %prun, and getopt is too dumb to
2330 (since %run must pass options to %prun, and getopt is too dumb to
2327 handle options with string values with embedded spaces). Thanks
2331 handle options with string values with embedded spaces). Thanks
2328 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2332 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2329 (magic_who_ls): added type matching to %who and %whos, so that one
2333 (magic_who_ls): added type matching to %who and %whos, so that one
2330 can filter their output to only include variables of certain
2334 can filter their output to only include variables of certain
2331 types. Another suggestion by Matthew.
2335 types. Another suggestion by Matthew.
2332 (magic_whos): Added memory summaries in kb and Mb for arrays.
2336 (magic_whos): Added memory summaries in kb and Mb for arrays.
2333 (magic_who): Improve formatting (break lines every 9 vars).
2337 (magic_who): Improve formatting (break lines every 9 vars).
2334
2338
2335 2004-11-28 Fernando Perez <fperez@colorado.edu>
2339 2004-11-28 Fernando Perez <fperez@colorado.edu>
2336
2340
2337 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2341 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2338 cache when empty lines were present.
2342 cache when empty lines were present.
2339
2343
2340 2004-11-24 Fernando Perez <fperez@colorado.edu>
2344 2004-11-24 Fernando Perez <fperez@colorado.edu>
2341
2345
2342 * IPython/usage.py (__doc__): document the re-activated threading
2346 * IPython/usage.py (__doc__): document the re-activated threading
2343 options for WX and GTK.
2347 options for WX and GTK.
2344
2348
2345 2004-11-23 Fernando Perez <fperez@colorado.edu>
2349 2004-11-23 Fernando Perez <fperez@colorado.edu>
2346
2350
2347 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2351 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2348 the -wthread and -gthread options, along with a new -tk one to try
2352 the -wthread and -gthread options, along with a new -tk one to try
2349 and coordinate Tk threading with wx/gtk. The tk support is very
2353 and coordinate Tk threading with wx/gtk. The tk support is very
2350 platform dependent, since it seems to require Tcl and Tk to be
2354 platform dependent, since it seems to require Tcl and Tk to be
2351 built with threads (Fedora1/2 appears NOT to have it, but in
2355 built with threads (Fedora1/2 appears NOT to have it, but in
2352 Prabhu's Debian boxes it works OK). But even with some Tk
2356 Prabhu's Debian boxes it works OK). But even with some Tk
2353 limitations, this is a great improvement.
2357 limitations, this is a great improvement.
2354
2358
2355 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2359 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2356 info in user prompts. Patch by Prabhu.
2360 info in user prompts. Patch by Prabhu.
2357
2361
2358 2004-11-18 Fernando Perez <fperez@colorado.edu>
2362 2004-11-18 Fernando Perez <fperez@colorado.edu>
2359
2363
2360 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2364 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2361 EOFErrors and bail, to avoid infinite loops if a non-terminating
2365 EOFErrors and bail, to avoid infinite loops if a non-terminating
2362 file is fed into ipython. Patch submitted in issue 19 by user,
2366 file is fed into ipython. Patch submitted in issue 19 by user,
2363 many thanks.
2367 many thanks.
2364
2368
2365 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2369 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2366 autoquote/parens in continuation prompts, which can cause lots of
2370 autoquote/parens in continuation prompts, which can cause lots of
2367 problems. Closes roundup issue 20.
2371 problems. Closes roundup issue 20.
2368
2372
2369 2004-11-17 Fernando Perez <fperez@colorado.edu>
2373 2004-11-17 Fernando Perez <fperez@colorado.edu>
2370
2374
2371 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2375 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2372 reported as debian bug #280505. I'm not sure my local changelog
2376 reported as debian bug #280505. I'm not sure my local changelog
2373 entry has the proper debian format (Jack?).
2377 entry has the proper debian format (Jack?).
2374
2378
2375 2004-11-08 *** Released version 0.6.4
2379 2004-11-08 *** Released version 0.6.4
2376
2380
2377 2004-11-08 Fernando Perez <fperez@colorado.edu>
2381 2004-11-08 Fernando Perez <fperez@colorado.edu>
2378
2382
2379 * IPython/iplib.py (init_readline): Fix exit message for Windows
2383 * IPython/iplib.py (init_readline): Fix exit message for Windows
2380 when readline is active. Thanks to a report by Eric Jones
2384 when readline is active. Thanks to a report by Eric Jones
2381 <eric-AT-enthought.com>.
2385 <eric-AT-enthought.com>.
2382
2386
2383 2004-11-07 Fernando Perez <fperez@colorado.edu>
2387 2004-11-07 Fernando Perez <fperez@colorado.edu>
2384
2388
2385 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2389 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2386 sometimes seen by win2k/cygwin users.
2390 sometimes seen by win2k/cygwin users.
2387
2391
2388 2004-11-06 Fernando Perez <fperez@colorado.edu>
2392 2004-11-06 Fernando Perez <fperez@colorado.edu>
2389
2393
2390 * IPython/iplib.py (interact): Change the handling of %Exit from
2394 * IPython/iplib.py (interact): Change the handling of %Exit from
2391 trying to propagate a SystemExit to an internal ipython flag.
2395 trying to propagate a SystemExit to an internal ipython flag.
2392 This is less elegant than using Python's exception mechanism, but
2396 This is less elegant than using Python's exception mechanism, but
2393 I can't get that to work reliably with threads, so under -pylab
2397 I can't get that to work reliably with threads, so under -pylab
2394 %Exit was hanging IPython. Cross-thread exception handling is
2398 %Exit was hanging IPython. Cross-thread exception handling is
2395 really a bitch. Thaks to a bug report by Stephen Walton
2399 really a bitch. Thaks to a bug report by Stephen Walton
2396 <stephen.walton-AT-csun.edu>.
2400 <stephen.walton-AT-csun.edu>.
2397
2401
2398 2004-11-04 Fernando Perez <fperez@colorado.edu>
2402 2004-11-04 Fernando Perez <fperez@colorado.edu>
2399
2403
2400 * IPython/iplib.py (raw_input_original): store a pointer to the
2404 * IPython/iplib.py (raw_input_original): store a pointer to the
2401 true raw_input to harden against code which can modify it
2405 true raw_input to harden against code which can modify it
2402 (wx.py.PyShell does this and would otherwise crash ipython).
2406 (wx.py.PyShell does this and would otherwise crash ipython).
2403 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2407 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2404
2408
2405 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2409 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2406 Ctrl-C problem, which does not mess up the input line.
2410 Ctrl-C problem, which does not mess up the input line.
2407
2411
2408 2004-11-03 Fernando Perez <fperez@colorado.edu>
2412 2004-11-03 Fernando Perez <fperez@colorado.edu>
2409
2413
2410 * IPython/Release.py: Changed licensing to BSD, in all files.
2414 * IPython/Release.py: Changed licensing to BSD, in all files.
2411 (name): lowercase name for tarball/RPM release.
2415 (name): lowercase name for tarball/RPM release.
2412
2416
2413 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2417 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2414 use throughout ipython.
2418 use throughout ipython.
2415
2419
2416 * IPython/Magic.py (Magic._ofind): Switch to using the new
2420 * IPython/Magic.py (Magic._ofind): Switch to using the new
2417 OInspect.getdoc() function.
2421 OInspect.getdoc() function.
2418
2422
2419 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2423 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2420 of the line currently being canceled via Ctrl-C. It's extremely
2424 of the line currently being canceled via Ctrl-C. It's extremely
2421 ugly, but I don't know how to do it better (the problem is one of
2425 ugly, but I don't know how to do it better (the problem is one of
2422 handling cross-thread exceptions).
2426 handling cross-thread exceptions).
2423
2427
2424 2004-10-28 Fernando Perez <fperez@colorado.edu>
2428 2004-10-28 Fernando Perez <fperez@colorado.edu>
2425
2429
2426 * IPython/Shell.py (signal_handler): add signal handlers to trap
2430 * IPython/Shell.py (signal_handler): add signal handlers to trap
2427 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2431 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2428 report by Francesc Alted.
2432 report by Francesc Alted.
2429
2433
2430 2004-10-21 Fernando Perez <fperez@colorado.edu>
2434 2004-10-21 Fernando Perez <fperez@colorado.edu>
2431
2435
2432 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2436 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2433 to % for pysh syntax extensions.
2437 to % for pysh syntax extensions.
2434
2438
2435 2004-10-09 Fernando Perez <fperez@colorado.edu>
2439 2004-10-09 Fernando Perez <fperez@colorado.edu>
2436
2440
2437 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2441 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2438 arrays to print a more useful summary, without calling str(arr).
2442 arrays to print a more useful summary, without calling str(arr).
2439 This avoids the problem of extremely lengthy computations which
2443 This avoids the problem of extremely lengthy computations which
2440 occur if arr is large, and appear to the user as a system lockup
2444 occur if arr is large, and appear to the user as a system lockup
2441 with 100% cpu activity. After a suggestion by Kristian Sandberg
2445 with 100% cpu activity. After a suggestion by Kristian Sandberg
2442 <Kristian.Sandberg@colorado.edu>.
2446 <Kristian.Sandberg@colorado.edu>.
2443 (Magic.__init__): fix bug in global magic escapes not being
2447 (Magic.__init__): fix bug in global magic escapes not being
2444 correctly set.
2448 correctly set.
2445
2449
2446 2004-10-08 Fernando Perez <fperez@colorado.edu>
2450 2004-10-08 Fernando Perez <fperez@colorado.edu>
2447
2451
2448 * IPython/Magic.py (__license__): change to absolute imports of
2452 * IPython/Magic.py (__license__): change to absolute imports of
2449 ipython's own internal packages, to start adapting to the absolute
2453 ipython's own internal packages, to start adapting to the absolute
2450 import requirement of PEP-328.
2454 import requirement of PEP-328.
2451
2455
2452 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2456 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2453 files, and standardize author/license marks through the Release
2457 files, and standardize author/license marks through the Release
2454 module instead of having per/file stuff (except for files with
2458 module instead of having per/file stuff (except for files with
2455 particular licenses, like the MIT/PSF-licensed codes).
2459 particular licenses, like the MIT/PSF-licensed codes).
2456
2460
2457 * IPython/Debugger.py: remove dead code for python 2.1
2461 * IPython/Debugger.py: remove dead code for python 2.1
2458
2462
2459 2004-10-04 Fernando Perez <fperez@colorado.edu>
2463 2004-10-04 Fernando Perez <fperez@colorado.edu>
2460
2464
2461 * IPython/iplib.py (ipmagic): New function for accessing magics
2465 * IPython/iplib.py (ipmagic): New function for accessing magics
2462 via a normal python function call.
2466 via a normal python function call.
2463
2467
2464 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2468 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2465 from '@' to '%', to accomodate the new @decorator syntax of python
2469 from '@' to '%', to accomodate the new @decorator syntax of python
2466 2.4.
2470 2.4.
2467
2471
2468 2004-09-29 Fernando Perez <fperez@colorado.edu>
2472 2004-09-29 Fernando Perez <fperez@colorado.edu>
2469
2473
2470 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2474 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2471 matplotlib.use to prevent running scripts which try to switch
2475 matplotlib.use to prevent running scripts which try to switch
2472 interactive backends from within ipython. This will just crash
2476 interactive backends from within ipython. This will just crash
2473 the python interpreter, so we can't allow it (but a detailed error
2477 the python interpreter, so we can't allow it (but a detailed error
2474 is given to the user).
2478 is given to the user).
2475
2479
2476 2004-09-28 Fernando Perez <fperez@colorado.edu>
2480 2004-09-28 Fernando Perez <fperez@colorado.edu>
2477
2481
2478 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2482 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2479 matplotlib-related fixes so that using @run with non-matplotlib
2483 matplotlib-related fixes so that using @run with non-matplotlib
2480 scripts doesn't pop up spurious plot windows. This requires
2484 scripts doesn't pop up spurious plot windows. This requires
2481 matplotlib >= 0.63, where I had to make some changes as well.
2485 matplotlib >= 0.63, where I had to make some changes as well.
2482
2486
2483 * IPython/ipmaker.py (make_IPython): update version requirement to
2487 * IPython/ipmaker.py (make_IPython): update version requirement to
2484 python 2.2.
2488 python 2.2.
2485
2489
2486 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2490 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2487 banner arg for embedded customization.
2491 banner arg for embedded customization.
2488
2492
2489 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2493 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2490 explicit uses of __IP as the IPython's instance name. Now things
2494 explicit uses of __IP as the IPython's instance name. Now things
2491 are properly handled via the shell.name value. The actual code
2495 are properly handled via the shell.name value. The actual code
2492 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2496 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2493 is much better than before. I'll clean things completely when the
2497 is much better than before. I'll clean things completely when the
2494 magic stuff gets a real overhaul.
2498 magic stuff gets a real overhaul.
2495
2499
2496 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2500 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2497 minor changes to debian dir.
2501 minor changes to debian dir.
2498
2502
2499 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2503 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2500 pointer to the shell itself in the interactive namespace even when
2504 pointer to the shell itself in the interactive namespace even when
2501 a user-supplied dict is provided. This is needed for embedding
2505 a user-supplied dict is provided. This is needed for embedding
2502 purposes (found by tests with Michel Sanner).
2506 purposes (found by tests with Michel Sanner).
2503
2507
2504 2004-09-27 Fernando Perez <fperez@colorado.edu>
2508 2004-09-27 Fernando Perez <fperez@colorado.edu>
2505
2509
2506 * IPython/UserConfig/ipythonrc: remove []{} from
2510 * IPython/UserConfig/ipythonrc: remove []{} from
2507 readline_remove_delims, so that things like [modname.<TAB> do
2511 readline_remove_delims, so that things like [modname.<TAB> do
2508 proper completion. This disables [].TAB, but that's a less common
2512 proper completion. This disables [].TAB, but that's a less common
2509 case than module names in list comprehensions, for example.
2513 case than module names in list comprehensions, for example.
2510 Thanks to a report by Andrea Riciputi.
2514 Thanks to a report by Andrea Riciputi.
2511
2515
2512 2004-09-09 Fernando Perez <fperez@colorado.edu>
2516 2004-09-09 Fernando Perez <fperez@colorado.edu>
2513
2517
2514 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2518 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2515 blocking problems in win32 and osx. Fix by John.
2519 blocking problems in win32 and osx. Fix by John.
2516
2520
2517 2004-09-08 Fernando Perez <fperez@colorado.edu>
2521 2004-09-08 Fernando Perez <fperez@colorado.edu>
2518
2522
2519 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2523 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2520 for Win32 and OSX. Fix by John Hunter.
2524 for Win32 and OSX. Fix by John Hunter.
2521
2525
2522 2004-08-30 *** Released version 0.6.3
2526 2004-08-30 *** Released version 0.6.3
2523
2527
2524 2004-08-30 Fernando Perez <fperez@colorado.edu>
2528 2004-08-30 Fernando Perez <fperez@colorado.edu>
2525
2529
2526 * setup.py (isfile): Add manpages to list of dependent files to be
2530 * setup.py (isfile): Add manpages to list of dependent files to be
2527 updated.
2531 updated.
2528
2532
2529 2004-08-27 Fernando Perez <fperez@colorado.edu>
2533 2004-08-27 Fernando Perez <fperez@colorado.edu>
2530
2534
2531 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2535 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2532 for now. They don't really work with standalone WX/GTK code
2536 for now. They don't really work with standalone WX/GTK code
2533 (though matplotlib IS working fine with both of those backends).
2537 (though matplotlib IS working fine with both of those backends).
2534 This will neeed much more testing. I disabled most things with
2538 This will neeed much more testing. I disabled most things with
2535 comments, so turning it back on later should be pretty easy.
2539 comments, so turning it back on later should be pretty easy.
2536
2540
2537 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2541 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2538 autocalling of expressions like r'foo', by modifying the line
2542 autocalling of expressions like r'foo', by modifying the line
2539 split regexp. Closes
2543 split regexp. Closes
2540 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2544 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2541 Riley <ipythonbugs-AT-sabi.net>.
2545 Riley <ipythonbugs-AT-sabi.net>.
2542 (InteractiveShell.mainloop): honor --nobanner with banner
2546 (InteractiveShell.mainloop): honor --nobanner with banner
2543 extensions.
2547 extensions.
2544
2548
2545 * IPython/Shell.py: Significant refactoring of all classes, so
2549 * IPython/Shell.py: Significant refactoring of all classes, so
2546 that we can really support ALL matplotlib backends and threading
2550 that we can really support ALL matplotlib backends and threading
2547 models (John spotted a bug with Tk which required this). Now we
2551 models (John spotted a bug with Tk which required this). Now we
2548 should support single-threaded, WX-threads and GTK-threads, both
2552 should support single-threaded, WX-threads and GTK-threads, both
2549 for generic code and for matplotlib.
2553 for generic code and for matplotlib.
2550
2554
2551 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2555 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2552 -pylab, to simplify things for users. Will also remove the pylab
2556 -pylab, to simplify things for users. Will also remove the pylab
2553 profile, since now all of matplotlib configuration is directly
2557 profile, since now all of matplotlib configuration is directly
2554 handled here. This also reduces startup time.
2558 handled here. This also reduces startup time.
2555
2559
2556 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2560 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2557 shell wasn't being correctly called. Also in IPShellWX.
2561 shell wasn't being correctly called. Also in IPShellWX.
2558
2562
2559 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2563 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2560 fine-tune banner.
2564 fine-tune banner.
2561
2565
2562 * IPython/numutils.py (spike): Deprecate these spike functions,
2566 * IPython/numutils.py (spike): Deprecate these spike functions,
2563 delete (long deprecated) gnuplot_exec handler.
2567 delete (long deprecated) gnuplot_exec handler.
2564
2568
2565 2004-08-26 Fernando Perez <fperez@colorado.edu>
2569 2004-08-26 Fernando Perez <fperez@colorado.edu>
2566
2570
2567 * ipython.1: Update for threading options, plus some others which
2571 * ipython.1: Update for threading options, plus some others which
2568 were missing.
2572 were missing.
2569
2573
2570 * IPython/ipmaker.py (__call__): Added -wthread option for
2574 * IPython/ipmaker.py (__call__): Added -wthread option for
2571 wxpython thread handling. Make sure threading options are only
2575 wxpython thread handling. Make sure threading options are only
2572 valid at the command line.
2576 valid at the command line.
2573
2577
2574 * scripts/ipython: moved shell selection into a factory function
2578 * scripts/ipython: moved shell selection into a factory function
2575 in Shell.py, to keep the starter script to a minimum.
2579 in Shell.py, to keep the starter script to a minimum.
2576
2580
2577 2004-08-25 Fernando Perez <fperez@colorado.edu>
2581 2004-08-25 Fernando Perez <fperez@colorado.edu>
2578
2582
2579 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2583 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2580 John. Along with some recent changes he made to matplotlib, the
2584 John. Along with some recent changes he made to matplotlib, the
2581 next versions of both systems should work very well together.
2585 next versions of both systems should work very well together.
2582
2586
2583 2004-08-24 Fernando Perez <fperez@colorado.edu>
2587 2004-08-24 Fernando Perez <fperez@colorado.edu>
2584
2588
2585 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2589 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2586 tried to switch the profiling to using hotshot, but I'm getting
2590 tried to switch the profiling to using hotshot, but I'm getting
2587 strange errors from prof.runctx() there. I may be misreading the
2591 strange errors from prof.runctx() there. I may be misreading the
2588 docs, but it looks weird. For now the profiling code will
2592 docs, but it looks weird. For now the profiling code will
2589 continue to use the standard profiler.
2593 continue to use the standard profiler.
2590
2594
2591 2004-08-23 Fernando Perez <fperez@colorado.edu>
2595 2004-08-23 Fernando Perez <fperez@colorado.edu>
2592
2596
2593 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2597 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2594 threaded shell, by John Hunter. It's not quite ready yet, but
2598 threaded shell, by John Hunter. It's not quite ready yet, but
2595 close.
2599 close.
2596
2600
2597 2004-08-22 Fernando Perez <fperez@colorado.edu>
2601 2004-08-22 Fernando Perez <fperez@colorado.edu>
2598
2602
2599 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2603 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2600 in Magic and ultraTB.
2604 in Magic and ultraTB.
2601
2605
2602 * ipython.1: document threading options in manpage.
2606 * ipython.1: document threading options in manpage.
2603
2607
2604 * scripts/ipython: Changed name of -thread option to -gthread,
2608 * scripts/ipython: Changed name of -thread option to -gthread,
2605 since this is GTK specific. I want to leave the door open for a
2609 since this is GTK specific. I want to leave the door open for a
2606 -wthread option for WX, which will most likely be necessary. This
2610 -wthread option for WX, which will most likely be necessary. This
2607 change affects usage and ipmaker as well.
2611 change affects usage and ipmaker as well.
2608
2612
2609 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2613 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2610 handle the matplotlib shell issues. Code by John Hunter
2614 handle the matplotlib shell issues. Code by John Hunter
2611 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2615 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2612 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2616 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2613 broken (and disabled for end users) for now, but it puts the
2617 broken (and disabled for end users) for now, but it puts the
2614 infrastructure in place.
2618 infrastructure in place.
2615
2619
2616 2004-08-21 Fernando Perez <fperez@colorado.edu>
2620 2004-08-21 Fernando Perez <fperez@colorado.edu>
2617
2621
2618 * ipythonrc-pylab: Add matplotlib support.
2622 * ipythonrc-pylab: Add matplotlib support.
2619
2623
2620 * matplotlib_config.py: new files for matplotlib support, part of
2624 * matplotlib_config.py: new files for matplotlib support, part of
2621 the pylab profile.
2625 the pylab profile.
2622
2626
2623 * IPython/usage.py (__doc__): documented the threading options.
2627 * IPython/usage.py (__doc__): documented the threading options.
2624
2628
2625 2004-08-20 Fernando Perez <fperez@colorado.edu>
2629 2004-08-20 Fernando Perez <fperez@colorado.edu>
2626
2630
2627 * ipython: Modified the main calling routine to handle the -thread
2631 * ipython: Modified the main calling routine to handle the -thread
2628 and -mpthread options. This needs to be done as a top-level hack,
2632 and -mpthread options. This needs to be done as a top-level hack,
2629 because it determines which class to instantiate for IPython
2633 because it determines which class to instantiate for IPython
2630 itself.
2634 itself.
2631
2635
2632 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2636 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2633 classes to support multithreaded GTK operation without blocking,
2637 classes to support multithreaded GTK operation without blocking,
2634 and matplotlib with all backends. This is a lot of still very
2638 and matplotlib with all backends. This is a lot of still very
2635 experimental code, and threads are tricky. So it may still have a
2639 experimental code, and threads are tricky. So it may still have a
2636 few rough edges... This code owes a lot to
2640 few rough edges... This code owes a lot to
2637 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2641 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2638 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2642 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2639 to John Hunter for all the matplotlib work.
2643 to John Hunter for all the matplotlib work.
2640
2644
2641 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2645 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2642 options for gtk thread and matplotlib support.
2646 options for gtk thread and matplotlib support.
2643
2647
2644 2004-08-16 Fernando Perez <fperez@colorado.edu>
2648 2004-08-16 Fernando Perez <fperez@colorado.edu>
2645
2649
2646 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2650 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2647 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2651 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2648 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2652 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2649
2653
2650 2004-08-11 Fernando Perez <fperez@colorado.edu>
2654 2004-08-11 Fernando Perez <fperez@colorado.edu>
2651
2655
2652 * setup.py (isfile): Fix build so documentation gets updated for
2656 * setup.py (isfile): Fix build so documentation gets updated for
2653 rpms (it was only done for .tgz builds).
2657 rpms (it was only done for .tgz builds).
2654
2658
2655 2004-08-10 Fernando Perez <fperez@colorado.edu>
2659 2004-08-10 Fernando Perez <fperez@colorado.edu>
2656
2660
2657 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2661 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2658
2662
2659 * iplib.py : Silence syntax error exceptions in tab-completion.
2663 * iplib.py : Silence syntax error exceptions in tab-completion.
2660
2664
2661 2004-08-05 Fernando Perez <fperez@colorado.edu>
2665 2004-08-05 Fernando Perez <fperez@colorado.edu>
2662
2666
2663 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2667 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2664 'color off' mark for continuation prompts. This was causing long
2668 'color off' mark for continuation prompts. This was causing long
2665 continuation lines to mis-wrap.
2669 continuation lines to mis-wrap.
2666
2670
2667 2004-08-01 Fernando Perez <fperez@colorado.edu>
2671 2004-08-01 Fernando Perez <fperez@colorado.edu>
2668
2672
2669 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2673 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2670 for building ipython to be a parameter. All this is necessary
2674 for building ipython to be a parameter. All this is necessary
2671 right now to have a multithreaded version, but this insane
2675 right now to have a multithreaded version, but this insane
2672 non-design will be cleaned up soon. For now, it's a hack that
2676 non-design will be cleaned up soon. For now, it's a hack that
2673 works.
2677 works.
2674
2678
2675 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2679 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2676 args in various places. No bugs so far, but it's a dangerous
2680 args in various places. No bugs so far, but it's a dangerous
2677 practice.
2681 practice.
2678
2682
2679 2004-07-31 Fernando Perez <fperez@colorado.edu>
2683 2004-07-31 Fernando Perez <fperez@colorado.edu>
2680
2684
2681 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2685 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2682 fix completion of files with dots in their names under most
2686 fix completion of files with dots in their names under most
2683 profiles (pysh was OK because the completion order is different).
2687 profiles (pysh was OK because the completion order is different).
2684
2688
2685 2004-07-27 Fernando Perez <fperez@colorado.edu>
2689 2004-07-27 Fernando Perez <fperez@colorado.edu>
2686
2690
2687 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2691 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2688 keywords manually, b/c the one in keyword.py was removed in python
2692 keywords manually, b/c the one in keyword.py was removed in python
2689 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2693 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2690 This is NOT a bug under python 2.3 and earlier.
2694 This is NOT a bug under python 2.3 and earlier.
2691
2695
2692 2004-07-26 Fernando Perez <fperez@colorado.edu>
2696 2004-07-26 Fernando Perez <fperez@colorado.edu>
2693
2697
2694 * IPython/ultraTB.py (VerboseTB.text): Add another
2698 * IPython/ultraTB.py (VerboseTB.text): Add another
2695 linecache.checkcache() call to try to prevent inspect.py from
2699 linecache.checkcache() call to try to prevent inspect.py from
2696 crashing under python 2.3. I think this fixes
2700 crashing under python 2.3. I think this fixes
2697 http://www.scipy.net/roundup/ipython/issue17.
2701 http://www.scipy.net/roundup/ipython/issue17.
2698
2702
2699 2004-07-26 *** Released version 0.6.2
2703 2004-07-26 *** Released version 0.6.2
2700
2704
2701 2004-07-26 Fernando Perez <fperez@colorado.edu>
2705 2004-07-26 Fernando Perez <fperez@colorado.edu>
2702
2706
2703 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2707 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2704 fail for any number.
2708 fail for any number.
2705 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2709 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2706 empty bookmarks.
2710 empty bookmarks.
2707
2711
2708 2004-07-26 *** Released version 0.6.1
2712 2004-07-26 *** Released version 0.6.1
2709
2713
2710 2004-07-26 Fernando Perez <fperez@colorado.edu>
2714 2004-07-26 Fernando Perez <fperez@colorado.edu>
2711
2715
2712 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2716 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2713
2717
2714 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2718 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2715 escaping '()[]{}' in filenames.
2719 escaping '()[]{}' in filenames.
2716
2720
2717 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2721 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2718 Python 2.2 users who lack a proper shlex.split.
2722 Python 2.2 users who lack a proper shlex.split.
2719
2723
2720 2004-07-19 Fernando Perez <fperez@colorado.edu>
2724 2004-07-19 Fernando Perez <fperez@colorado.edu>
2721
2725
2722 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2726 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2723 for reading readline's init file. I follow the normal chain:
2727 for reading readline's init file. I follow the normal chain:
2724 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2728 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2725 report by Mike Heeter. This closes
2729 report by Mike Heeter. This closes
2726 http://www.scipy.net/roundup/ipython/issue16.
2730 http://www.scipy.net/roundup/ipython/issue16.
2727
2731
2728 2004-07-18 Fernando Perez <fperez@colorado.edu>
2732 2004-07-18 Fernando Perez <fperez@colorado.edu>
2729
2733
2730 * IPython/iplib.py (__init__): Add better handling of '\' under
2734 * IPython/iplib.py (__init__): Add better handling of '\' under
2731 Win32 for filenames. After a patch by Ville.
2735 Win32 for filenames. After a patch by Ville.
2732
2736
2733 2004-07-17 Fernando Perez <fperez@colorado.edu>
2737 2004-07-17 Fernando Perez <fperez@colorado.edu>
2734
2738
2735 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2739 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2736 autocalling would be triggered for 'foo is bar' if foo is
2740 autocalling would be triggered for 'foo is bar' if foo is
2737 callable. I also cleaned up the autocall detection code to use a
2741 callable. I also cleaned up the autocall detection code to use a
2738 regexp, which is faster. Bug reported by Alexander Schmolck.
2742 regexp, which is faster. Bug reported by Alexander Schmolck.
2739
2743
2740 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2744 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2741 '?' in them would confuse the help system. Reported by Alex
2745 '?' in them would confuse the help system. Reported by Alex
2742 Schmolck.
2746 Schmolck.
2743
2747
2744 2004-07-16 Fernando Perez <fperez@colorado.edu>
2748 2004-07-16 Fernando Perez <fperez@colorado.edu>
2745
2749
2746 * IPython/GnuplotInteractive.py (__all__): added plot2.
2750 * IPython/GnuplotInteractive.py (__all__): added plot2.
2747
2751
2748 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2752 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2749 plotting dictionaries, lists or tuples of 1d arrays.
2753 plotting dictionaries, lists or tuples of 1d arrays.
2750
2754
2751 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2755 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2752 optimizations.
2756 optimizations.
2753
2757
2754 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2758 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2755 the information which was there from Janko's original IPP code:
2759 the information which was there from Janko's original IPP code:
2756
2760
2757 03.05.99 20:53 porto.ifm.uni-kiel.de
2761 03.05.99 20:53 porto.ifm.uni-kiel.de
2758 --Started changelog.
2762 --Started changelog.
2759 --make clear do what it say it does
2763 --make clear do what it say it does
2760 --added pretty output of lines from inputcache
2764 --added pretty output of lines from inputcache
2761 --Made Logger a mixin class, simplifies handling of switches
2765 --Made Logger a mixin class, simplifies handling of switches
2762 --Added own completer class. .string<TAB> expands to last history
2766 --Added own completer class. .string<TAB> expands to last history
2763 line which starts with string. The new expansion is also present
2767 line which starts with string. The new expansion is also present
2764 with Ctrl-r from the readline library. But this shows, who this
2768 with Ctrl-r from the readline library. But this shows, who this
2765 can be done for other cases.
2769 can be done for other cases.
2766 --Added convention that all shell functions should accept a
2770 --Added convention that all shell functions should accept a
2767 parameter_string This opens the door for different behaviour for
2771 parameter_string This opens the door for different behaviour for
2768 each function. @cd is a good example of this.
2772 each function. @cd is a good example of this.
2769
2773
2770 04.05.99 12:12 porto.ifm.uni-kiel.de
2774 04.05.99 12:12 porto.ifm.uni-kiel.de
2771 --added logfile rotation
2775 --added logfile rotation
2772 --added new mainloop method which freezes first the namespace
2776 --added new mainloop method which freezes first the namespace
2773
2777
2774 07.05.99 21:24 porto.ifm.uni-kiel.de
2778 07.05.99 21:24 porto.ifm.uni-kiel.de
2775 --added the docreader classes. Now there is a help system.
2779 --added the docreader classes. Now there is a help system.
2776 -This is only a first try. Currently it's not easy to put new
2780 -This is only a first try. Currently it's not easy to put new
2777 stuff in the indices. But this is the way to go. Info would be
2781 stuff in the indices. But this is the way to go. Info would be
2778 better, but HTML is every where and not everybody has an info
2782 better, but HTML is every where and not everybody has an info
2779 system installed and it's not so easy to change html-docs to info.
2783 system installed and it's not so easy to change html-docs to info.
2780 --added global logfile option
2784 --added global logfile option
2781 --there is now a hook for object inspection method pinfo needs to
2785 --there is now a hook for object inspection method pinfo needs to
2782 be provided for this. Can be reached by two '??'.
2786 be provided for this. Can be reached by two '??'.
2783
2787
2784 08.05.99 20:51 porto.ifm.uni-kiel.de
2788 08.05.99 20:51 porto.ifm.uni-kiel.de
2785 --added a README
2789 --added a README
2786 --bug in rc file. Something has changed so functions in the rc
2790 --bug in rc file. Something has changed so functions in the rc
2787 file need to reference the shell and not self. Not clear if it's a
2791 file need to reference the shell and not self. Not clear if it's a
2788 bug or feature.
2792 bug or feature.
2789 --changed rc file for new behavior
2793 --changed rc file for new behavior
2790
2794
2791 2004-07-15 Fernando Perez <fperez@colorado.edu>
2795 2004-07-15 Fernando Perez <fperez@colorado.edu>
2792
2796
2793 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2797 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2794 cache was falling out of sync in bizarre manners when multi-line
2798 cache was falling out of sync in bizarre manners when multi-line
2795 input was present. Minor optimizations and cleanup.
2799 input was present. Minor optimizations and cleanup.
2796
2800
2797 (Logger): Remove old Changelog info for cleanup. This is the
2801 (Logger): Remove old Changelog info for cleanup. This is the
2798 information which was there from Janko's original code:
2802 information which was there from Janko's original code:
2799
2803
2800 Changes to Logger: - made the default log filename a parameter
2804 Changes to Logger: - made the default log filename a parameter
2801
2805
2802 - put a check for lines beginning with !@? in log(). Needed
2806 - put a check for lines beginning with !@? in log(). Needed
2803 (even if the handlers properly log their lines) for mid-session
2807 (even if the handlers properly log their lines) for mid-session
2804 logging activation to work properly. Without this, lines logged
2808 logging activation to work properly. Without this, lines logged
2805 in mid session, which get read from the cache, would end up
2809 in mid session, which get read from the cache, would end up
2806 'bare' (with !@? in the open) in the log. Now they are caught
2810 'bare' (with !@? in the open) in the log. Now they are caught
2807 and prepended with a #.
2811 and prepended with a #.
2808
2812
2809 * IPython/iplib.py (InteractiveShell.init_readline): added check
2813 * IPython/iplib.py (InteractiveShell.init_readline): added check
2810 in case MagicCompleter fails to be defined, so we don't crash.
2814 in case MagicCompleter fails to be defined, so we don't crash.
2811
2815
2812 2004-07-13 Fernando Perez <fperez@colorado.edu>
2816 2004-07-13 Fernando Perez <fperez@colorado.edu>
2813
2817
2814 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2818 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2815 of EPS if the requested filename ends in '.eps'.
2819 of EPS if the requested filename ends in '.eps'.
2816
2820
2817 2004-07-04 Fernando Perez <fperez@colorado.edu>
2821 2004-07-04 Fernando Perez <fperez@colorado.edu>
2818
2822
2819 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2823 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2820 escaping of quotes when calling the shell.
2824 escaping of quotes when calling the shell.
2821
2825
2822 2004-07-02 Fernando Perez <fperez@colorado.edu>
2826 2004-07-02 Fernando Perez <fperez@colorado.edu>
2823
2827
2824 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2828 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2825 gettext not working because we were clobbering '_'. Fixes
2829 gettext not working because we were clobbering '_'. Fixes
2826 http://www.scipy.net/roundup/ipython/issue6.
2830 http://www.scipy.net/roundup/ipython/issue6.
2827
2831
2828 2004-07-01 Fernando Perez <fperez@colorado.edu>
2832 2004-07-01 Fernando Perez <fperez@colorado.edu>
2829
2833
2830 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2834 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2831 into @cd. Patch by Ville.
2835 into @cd. Patch by Ville.
2832
2836
2833 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2837 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2834 new function to store things after ipmaker runs. Patch by Ville.
2838 new function to store things after ipmaker runs. Patch by Ville.
2835 Eventually this will go away once ipmaker is removed and the class
2839 Eventually this will go away once ipmaker is removed and the class
2836 gets cleaned up, but for now it's ok. Key functionality here is
2840 gets cleaned up, but for now it's ok. Key functionality here is
2837 the addition of the persistent storage mechanism, a dict for
2841 the addition of the persistent storage mechanism, a dict for
2838 keeping data across sessions (for now just bookmarks, but more can
2842 keeping data across sessions (for now just bookmarks, but more can
2839 be implemented later).
2843 be implemented later).
2840
2844
2841 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2845 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2842 persistent across sections. Patch by Ville, I modified it
2846 persistent across sections. Patch by Ville, I modified it
2843 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2847 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2844 added a '-l' option to list all bookmarks.
2848 added a '-l' option to list all bookmarks.
2845
2849
2846 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2850 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2847 center for cleanup. Registered with atexit.register(). I moved
2851 center for cleanup. Registered with atexit.register(). I moved
2848 here the old exit_cleanup(). After a patch by Ville.
2852 here the old exit_cleanup(). After a patch by Ville.
2849
2853
2850 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2854 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2851 characters in the hacked shlex_split for python 2.2.
2855 characters in the hacked shlex_split for python 2.2.
2852
2856
2853 * IPython/iplib.py (file_matches): more fixes to filenames with
2857 * IPython/iplib.py (file_matches): more fixes to filenames with
2854 whitespace in them. It's not perfect, but limitations in python's
2858 whitespace in them. It's not perfect, but limitations in python's
2855 readline make it impossible to go further.
2859 readline make it impossible to go further.
2856
2860
2857 2004-06-29 Fernando Perez <fperez@colorado.edu>
2861 2004-06-29 Fernando Perez <fperez@colorado.edu>
2858
2862
2859 * IPython/iplib.py (file_matches): escape whitespace correctly in
2863 * IPython/iplib.py (file_matches): escape whitespace correctly in
2860 filename completions. Bug reported by Ville.
2864 filename completions. Bug reported by Ville.
2861
2865
2862 2004-06-28 Fernando Perez <fperez@colorado.edu>
2866 2004-06-28 Fernando Perez <fperez@colorado.edu>
2863
2867
2864 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2868 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2865 the history file will be called 'history-PROFNAME' (or just
2869 the history file will be called 'history-PROFNAME' (or just
2866 'history' if no profile is loaded). I was getting annoyed at
2870 'history' if no profile is loaded). I was getting annoyed at
2867 getting my Numerical work history clobbered by pysh sessions.
2871 getting my Numerical work history clobbered by pysh sessions.
2868
2872
2869 * IPython/iplib.py (InteractiveShell.__init__): Internal
2873 * IPython/iplib.py (InteractiveShell.__init__): Internal
2870 getoutputerror() function so that we can honor the system_verbose
2874 getoutputerror() function so that we can honor the system_verbose
2871 flag for _all_ system calls. I also added escaping of #
2875 flag for _all_ system calls. I also added escaping of #
2872 characters here to avoid confusing Itpl.
2876 characters here to avoid confusing Itpl.
2873
2877
2874 * IPython/Magic.py (shlex_split): removed call to shell in
2878 * IPython/Magic.py (shlex_split): removed call to shell in
2875 parse_options and replaced it with shlex.split(). The annoying
2879 parse_options and replaced it with shlex.split(). The annoying
2876 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2880 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2877 to backport it from 2.3, with several frail hacks (the shlex
2881 to backport it from 2.3, with several frail hacks (the shlex
2878 module is rather limited in 2.2). Thanks to a suggestion by Ville
2882 module is rather limited in 2.2). Thanks to a suggestion by Ville
2879 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2883 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2880 problem.
2884 problem.
2881
2885
2882 (Magic.magic_system_verbose): new toggle to print the actual
2886 (Magic.magic_system_verbose): new toggle to print the actual
2883 system calls made by ipython. Mainly for debugging purposes.
2887 system calls made by ipython. Mainly for debugging purposes.
2884
2888
2885 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2889 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2886 doesn't support persistence. Reported (and fix suggested) by
2890 doesn't support persistence. Reported (and fix suggested) by
2887 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2891 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2888
2892
2889 2004-06-26 Fernando Perez <fperez@colorado.edu>
2893 2004-06-26 Fernando Perez <fperez@colorado.edu>
2890
2894
2891 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2895 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2892 continue prompts.
2896 continue prompts.
2893
2897
2894 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2898 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2895 function (basically a big docstring) and a few more things here to
2899 function (basically a big docstring) and a few more things here to
2896 speedup startup. pysh.py is now very lightweight. We want because
2900 speedup startup. pysh.py is now very lightweight. We want because
2897 it gets execfile'd, while InterpreterExec gets imported, so
2901 it gets execfile'd, while InterpreterExec gets imported, so
2898 byte-compilation saves time.
2902 byte-compilation saves time.
2899
2903
2900 2004-06-25 Fernando Perez <fperez@colorado.edu>
2904 2004-06-25 Fernando Perez <fperez@colorado.edu>
2901
2905
2902 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2906 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2903 -NUM', which was recently broken.
2907 -NUM', which was recently broken.
2904
2908
2905 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2909 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2906 in multi-line input (but not !!, which doesn't make sense there).
2910 in multi-line input (but not !!, which doesn't make sense there).
2907
2911
2908 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2912 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2909 It's just too useful, and people can turn it off in the less
2913 It's just too useful, and people can turn it off in the less
2910 common cases where it's a problem.
2914 common cases where it's a problem.
2911
2915
2912 2004-06-24 Fernando Perez <fperez@colorado.edu>
2916 2004-06-24 Fernando Perez <fperez@colorado.edu>
2913
2917
2914 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2918 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2915 special syntaxes (like alias calling) is now allied in multi-line
2919 special syntaxes (like alias calling) is now allied in multi-line
2916 input. This is still _very_ experimental, but it's necessary for
2920 input. This is still _very_ experimental, but it's necessary for
2917 efficient shell usage combining python looping syntax with system
2921 efficient shell usage combining python looping syntax with system
2918 calls. For now it's restricted to aliases, I don't think it
2922 calls. For now it's restricted to aliases, I don't think it
2919 really even makes sense to have this for magics.
2923 really even makes sense to have this for magics.
2920
2924
2921 2004-06-23 Fernando Perez <fperez@colorado.edu>
2925 2004-06-23 Fernando Perez <fperez@colorado.edu>
2922
2926
2923 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2927 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2924 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2928 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2925
2929
2926 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2930 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2927 extensions under Windows (after code sent by Gary Bishop). The
2931 extensions under Windows (after code sent by Gary Bishop). The
2928 extensions considered 'executable' are stored in IPython's rc
2932 extensions considered 'executable' are stored in IPython's rc
2929 structure as win_exec_ext.
2933 structure as win_exec_ext.
2930
2934
2931 * IPython/genutils.py (shell): new function, like system() but
2935 * IPython/genutils.py (shell): new function, like system() but
2932 without return value. Very useful for interactive shell work.
2936 without return value. Very useful for interactive shell work.
2933
2937
2934 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2938 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2935 delete aliases.
2939 delete aliases.
2936
2940
2937 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2941 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2938 sure that the alias table doesn't contain python keywords.
2942 sure that the alias table doesn't contain python keywords.
2939
2943
2940 2004-06-21 Fernando Perez <fperez@colorado.edu>
2944 2004-06-21 Fernando Perez <fperez@colorado.edu>
2941
2945
2942 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2946 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2943 non-existent items are found in $PATH. Reported by Thorsten.
2947 non-existent items are found in $PATH. Reported by Thorsten.
2944
2948
2945 2004-06-20 Fernando Perez <fperez@colorado.edu>
2949 2004-06-20 Fernando Perez <fperez@colorado.edu>
2946
2950
2947 * IPython/iplib.py (complete): modified the completer so that the
2951 * IPython/iplib.py (complete): modified the completer so that the
2948 order of priorities can be easily changed at runtime.
2952 order of priorities can be easily changed at runtime.
2949
2953
2950 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2954 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2951 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2955 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2952
2956
2953 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2957 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2954 expand Python variables prepended with $ in all system calls. The
2958 expand Python variables prepended with $ in all system calls. The
2955 same was done to InteractiveShell.handle_shell_escape. Now all
2959 same was done to InteractiveShell.handle_shell_escape. Now all
2956 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2960 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2957 expansion of python variables and expressions according to the
2961 expansion of python variables and expressions according to the
2958 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2962 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2959
2963
2960 Though PEP-215 has been rejected, a similar (but simpler) one
2964 Though PEP-215 has been rejected, a similar (but simpler) one
2961 seems like it will go into Python 2.4, PEP-292 -
2965 seems like it will go into Python 2.4, PEP-292 -
2962 http://www.python.org/peps/pep-0292.html.
2966 http://www.python.org/peps/pep-0292.html.
2963
2967
2964 I'll keep the full syntax of PEP-215, since IPython has since the
2968 I'll keep the full syntax of PEP-215, since IPython has since the
2965 start used Ka-Ping Yee's reference implementation discussed there
2969 start used Ka-Ping Yee's reference implementation discussed there
2966 (Itpl), and I actually like the powerful semantics it offers.
2970 (Itpl), and I actually like the powerful semantics it offers.
2967
2971
2968 In order to access normal shell variables, the $ has to be escaped
2972 In order to access normal shell variables, the $ has to be escaped
2969 via an extra $. For example:
2973 via an extra $. For example:
2970
2974
2971 In [7]: PATH='a python variable'
2975 In [7]: PATH='a python variable'
2972
2976
2973 In [8]: !echo $PATH
2977 In [8]: !echo $PATH
2974 a python variable
2978 a python variable
2975
2979
2976 In [9]: !echo $$PATH
2980 In [9]: !echo $$PATH
2977 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2981 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2978
2982
2979 (Magic.parse_options): escape $ so the shell doesn't evaluate
2983 (Magic.parse_options): escape $ so the shell doesn't evaluate
2980 things prematurely.
2984 things prematurely.
2981
2985
2982 * IPython/iplib.py (InteractiveShell.call_alias): added the
2986 * IPython/iplib.py (InteractiveShell.call_alias): added the
2983 ability for aliases to expand python variables via $.
2987 ability for aliases to expand python variables via $.
2984
2988
2985 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2989 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2986 system, now there's a @rehash/@rehashx pair of magics. These work
2990 system, now there's a @rehash/@rehashx pair of magics. These work
2987 like the csh rehash command, and can be invoked at any time. They
2991 like the csh rehash command, and can be invoked at any time. They
2988 build a table of aliases to everything in the user's $PATH
2992 build a table of aliases to everything in the user's $PATH
2989 (@rehash uses everything, @rehashx is slower but only adds
2993 (@rehash uses everything, @rehashx is slower but only adds
2990 executable files). With this, the pysh.py-based shell profile can
2994 executable files). With this, the pysh.py-based shell profile can
2991 now simply call rehash upon startup, and full access to all
2995 now simply call rehash upon startup, and full access to all
2992 programs in the user's path is obtained.
2996 programs in the user's path is obtained.
2993
2997
2994 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2998 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2995 functionality is now fully in place. I removed the old dynamic
2999 functionality is now fully in place. I removed the old dynamic
2996 code generation based approach, in favor of a much lighter one
3000 code generation based approach, in favor of a much lighter one
2997 based on a simple dict. The advantage is that this allows me to
3001 based on a simple dict. The advantage is that this allows me to
2998 now have thousands of aliases with negligible cost (unthinkable
3002 now have thousands of aliases with negligible cost (unthinkable
2999 with the old system).
3003 with the old system).
3000
3004
3001 2004-06-19 Fernando Perez <fperez@colorado.edu>
3005 2004-06-19 Fernando Perez <fperez@colorado.edu>
3002
3006
3003 * IPython/iplib.py (__init__): extended MagicCompleter class to
3007 * IPython/iplib.py (__init__): extended MagicCompleter class to
3004 also complete (last in priority) on user aliases.
3008 also complete (last in priority) on user aliases.
3005
3009
3006 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3010 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3007 call to eval.
3011 call to eval.
3008 (ItplNS.__init__): Added a new class which functions like Itpl,
3012 (ItplNS.__init__): Added a new class which functions like Itpl,
3009 but allows configuring the namespace for the evaluation to occur
3013 but allows configuring the namespace for the evaluation to occur
3010 in.
3014 in.
3011
3015
3012 2004-06-18 Fernando Perez <fperez@colorado.edu>
3016 2004-06-18 Fernando Perez <fperez@colorado.edu>
3013
3017
3014 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3018 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3015 better message when 'exit' or 'quit' are typed (a common newbie
3019 better message when 'exit' or 'quit' are typed (a common newbie
3016 confusion).
3020 confusion).
3017
3021
3018 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3022 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3019 check for Windows users.
3023 check for Windows users.
3020
3024
3021 * IPython/iplib.py (InteractiveShell.user_setup): removed
3025 * IPython/iplib.py (InteractiveShell.user_setup): removed
3022 disabling of colors for Windows. I'll test at runtime and issue a
3026 disabling of colors for Windows. I'll test at runtime and issue a
3023 warning if Gary's readline isn't found, as to nudge users to
3027 warning if Gary's readline isn't found, as to nudge users to
3024 download it.
3028 download it.
3025
3029
3026 2004-06-16 Fernando Perez <fperez@colorado.edu>
3030 2004-06-16 Fernando Perez <fperez@colorado.edu>
3027
3031
3028 * IPython/genutils.py (Stream.__init__): changed to print errors
3032 * IPython/genutils.py (Stream.__init__): changed to print errors
3029 to sys.stderr. I had a circular dependency here. Now it's
3033 to sys.stderr. I had a circular dependency here. Now it's
3030 possible to run ipython as IDLE's shell (consider this pre-alpha,
3034 possible to run ipython as IDLE's shell (consider this pre-alpha,
3031 since true stdout things end up in the starting terminal instead
3035 since true stdout things end up in the starting terminal instead
3032 of IDLE's out).
3036 of IDLE's out).
3033
3037
3034 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3038 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3035 users who haven't # updated their prompt_in2 definitions. Remove
3039 users who haven't # updated their prompt_in2 definitions. Remove
3036 eventually.
3040 eventually.
3037 (multiple_replace): added credit to original ASPN recipe.
3041 (multiple_replace): added credit to original ASPN recipe.
3038
3042
3039 2004-06-15 Fernando Perez <fperez@colorado.edu>
3043 2004-06-15 Fernando Perez <fperez@colorado.edu>
3040
3044
3041 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3045 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3042 list of auto-defined aliases.
3046 list of auto-defined aliases.
3043
3047
3044 2004-06-13 Fernando Perez <fperez@colorado.edu>
3048 2004-06-13 Fernando Perez <fperez@colorado.edu>
3045
3049
3046 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3050 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3047 install was really requested (so setup.py can be used for other
3051 install was really requested (so setup.py can be used for other
3048 things under Windows).
3052 things under Windows).
3049
3053
3050 2004-06-10 Fernando Perez <fperez@colorado.edu>
3054 2004-06-10 Fernando Perez <fperez@colorado.edu>
3051
3055
3052 * IPython/Logger.py (Logger.create_log): Manually remove any old
3056 * IPython/Logger.py (Logger.create_log): Manually remove any old
3053 backup, since os.remove may fail under Windows. Fixes bug
3057 backup, since os.remove may fail under Windows. Fixes bug
3054 reported by Thorsten.
3058 reported by Thorsten.
3055
3059
3056 2004-06-09 Fernando Perez <fperez@colorado.edu>
3060 2004-06-09 Fernando Perez <fperez@colorado.edu>
3057
3061
3058 * examples/example-embed.py: fixed all references to %n (replaced
3062 * examples/example-embed.py: fixed all references to %n (replaced
3059 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3063 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3060 for all examples and the manual as well.
3064 for all examples and the manual as well.
3061
3065
3062 2004-06-08 Fernando Perez <fperez@colorado.edu>
3066 2004-06-08 Fernando Perez <fperez@colorado.edu>
3063
3067
3064 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3068 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3065 alignment and color management. All 3 prompt subsystems now
3069 alignment and color management. All 3 prompt subsystems now
3066 inherit from BasePrompt.
3070 inherit from BasePrompt.
3067
3071
3068 * tools/release: updates for windows installer build and tag rpms
3072 * tools/release: updates for windows installer build and tag rpms
3069 with python version (since paths are fixed).
3073 with python version (since paths are fixed).
3070
3074
3071 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3075 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3072 which will become eventually obsolete. Also fixed the default
3076 which will become eventually obsolete. Also fixed the default
3073 prompt_in2 to use \D, so at least new users start with the correct
3077 prompt_in2 to use \D, so at least new users start with the correct
3074 defaults.
3078 defaults.
3075 WARNING: Users with existing ipythonrc files will need to apply
3079 WARNING: Users with existing ipythonrc files will need to apply
3076 this fix manually!
3080 this fix manually!
3077
3081
3078 * setup.py: make windows installer (.exe). This is finally the
3082 * setup.py: make windows installer (.exe). This is finally the
3079 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3083 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3080 which I hadn't included because it required Python 2.3 (or recent
3084 which I hadn't included because it required Python 2.3 (or recent
3081 distutils).
3085 distutils).
3082
3086
3083 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3087 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3084 usage of new '\D' escape.
3088 usage of new '\D' escape.
3085
3089
3086 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3090 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3087 lacks os.getuid())
3091 lacks os.getuid())
3088 (CachedOutput.set_colors): Added the ability to turn coloring
3092 (CachedOutput.set_colors): Added the ability to turn coloring
3089 on/off with @colors even for manually defined prompt colors. It
3093 on/off with @colors even for manually defined prompt colors. It
3090 uses a nasty global, but it works safely and via the generic color
3094 uses a nasty global, but it works safely and via the generic color
3091 handling mechanism.
3095 handling mechanism.
3092 (Prompt2.__init__): Introduced new escape '\D' for continuation
3096 (Prompt2.__init__): Introduced new escape '\D' for continuation
3093 prompts. It represents the counter ('\#') as dots.
3097 prompts. It represents the counter ('\#') as dots.
3094 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3098 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3095 need to update their ipythonrc files and replace '%n' with '\D' in
3099 need to update their ipythonrc files and replace '%n' with '\D' in
3096 their prompt_in2 settings everywhere. Sorry, but there's
3100 their prompt_in2 settings everywhere. Sorry, but there's
3097 otherwise no clean way to get all prompts to properly align. The
3101 otherwise no clean way to get all prompts to properly align. The
3098 ipythonrc shipped with IPython has been updated.
3102 ipythonrc shipped with IPython has been updated.
3099
3103
3100 2004-06-07 Fernando Perez <fperez@colorado.edu>
3104 2004-06-07 Fernando Perez <fperez@colorado.edu>
3101
3105
3102 * setup.py (isfile): Pass local_icons option to latex2html, so the
3106 * setup.py (isfile): Pass local_icons option to latex2html, so the
3103 resulting HTML file is self-contained. Thanks to
3107 resulting HTML file is self-contained. Thanks to
3104 dryice-AT-liu.com.cn for the tip.
3108 dryice-AT-liu.com.cn for the tip.
3105
3109
3106 * pysh.py: I created a new profile 'shell', which implements a
3110 * pysh.py: I created a new profile 'shell', which implements a
3107 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3111 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3108 system shell, nor will it become one anytime soon. It's mainly
3112 system shell, nor will it become one anytime soon. It's mainly
3109 meant to illustrate the use of the new flexible bash-like prompts.
3113 meant to illustrate the use of the new flexible bash-like prompts.
3110 I guess it could be used by hardy souls for true shell management,
3114 I guess it could be used by hardy souls for true shell management,
3111 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3115 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3112 profile. This uses the InterpreterExec extension provided by
3116 profile. This uses the InterpreterExec extension provided by
3113 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3117 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3114
3118
3115 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3119 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3116 auto-align itself with the length of the previous input prompt
3120 auto-align itself with the length of the previous input prompt
3117 (taking into account the invisible color escapes).
3121 (taking into account the invisible color escapes).
3118 (CachedOutput.__init__): Large restructuring of this class. Now
3122 (CachedOutput.__init__): Large restructuring of this class. Now
3119 all three prompts (primary1, primary2, output) are proper objects,
3123 all three prompts (primary1, primary2, output) are proper objects,
3120 managed by the 'parent' CachedOutput class. The code is still a
3124 managed by the 'parent' CachedOutput class. The code is still a
3121 bit hackish (all prompts share state via a pointer to the cache),
3125 bit hackish (all prompts share state via a pointer to the cache),
3122 but it's overall far cleaner than before.
3126 but it's overall far cleaner than before.
3123
3127
3124 * IPython/genutils.py (getoutputerror): modified to add verbose,
3128 * IPython/genutils.py (getoutputerror): modified to add verbose,
3125 debug and header options. This makes the interface of all getout*
3129 debug and header options. This makes the interface of all getout*
3126 functions uniform.
3130 functions uniform.
3127 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3131 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3128
3132
3129 * IPython/Magic.py (Magic.default_option): added a function to
3133 * IPython/Magic.py (Magic.default_option): added a function to
3130 allow registering default options for any magic command. This
3134 allow registering default options for any magic command. This
3131 makes it easy to have profiles which customize the magics globally
3135 makes it easy to have profiles which customize the magics globally
3132 for a certain use. The values set through this function are
3136 for a certain use. The values set through this function are
3133 picked up by the parse_options() method, which all magics should
3137 picked up by the parse_options() method, which all magics should
3134 use to parse their options.
3138 use to parse their options.
3135
3139
3136 * IPython/genutils.py (warn): modified the warnings framework to
3140 * IPython/genutils.py (warn): modified the warnings framework to
3137 use the Term I/O class. I'm trying to slowly unify all of
3141 use the Term I/O class. I'm trying to slowly unify all of
3138 IPython's I/O operations to pass through Term.
3142 IPython's I/O operations to pass through Term.
3139
3143
3140 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3144 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3141 the secondary prompt to correctly match the length of the primary
3145 the secondary prompt to correctly match the length of the primary
3142 one for any prompt. Now multi-line code will properly line up
3146 one for any prompt. Now multi-line code will properly line up
3143 even for path dependent prompts, such as the new ones available
3147 even for path dependent prompts, such as the new ones available
3144 via the prompt_specials.
3148 via the prompt_specials.
3145
3149
3146 2004-06-06 Fernando Perez <fperez@colorado.edu>
3150 2004-06-06 Fernando Perez <fperez@colorado.edu>
3147
3151
3148 * IPython/Prompts.py (prompt_specials): Added the ability to have
3152 * IPython/Prompts.py (prompt_specials): Added the ability to have
3149 bash-like special sequences in the prompts, which get
3153 bash-like special sequences in the prompts, which get
3150 automatically expanded. Things like hostname, current working
3154 automatically expanded. Things like hostname, current working
3151 directory and username are implemented already, but it's easy to
3155 directory and username are implemented already, but it's easy to
3152 add more in the future. Thanks to a patch by W.J. van der Laan
3156 add more in the future. Thanks to a patch by W.J. van der Laan
3153 <gnufnork-AT-hetdigitalegat.nl>
3157 <gnufnork-AT-hetdigitalegat.nl>
3154 (prompt_specials): Added color support for prompt strings, so
3158 (prompt_specials): Added color support for prompt strings, so
3155 users can define arbitrary color setups for their prompts.
3159 users can define arbitrary color setups for their prompts.
3156
3160
3157 2004-06-05 Fernando Perez <fperez@colorado.edu>
3161 2004-06-05 Fernando Perez <fperez@colorado.edu>
3158
3162
3159 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3163 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3160 code to load Gary Bishop's readline and configure it
3164 code to load Gary Bishop's readline and configure it
3161 automatically. Thanks to Gary for help on this.
3165 automatically. Thanks to Gary for help on this.
3162
3166
3163 2004-06-01 Fernando Perez <fperez@colorado.edu>
3167 2004-06-01 Fernando Perez <fperez@colorado.edu>
3164
3168
3165 * IPython/Logger.py (Logger.create_log): fix bug for logging
3169 * IPython/Logger.py (Logger.create_log): fix bug for logging
3166 with no filename (previous fix was incomplete).
3170 with no filename (previous fix was incomplete).
3167
3171
3168 2004-05-25 Fernando Perez <fperez@colorado.edu>
3172 2004-05-25 Fernando Perez <fperez@colorado.edu>
3169
3173
3170 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3174 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3171 parens would get passed to the shell.
3175 parens would get passed to the shell.
3172
3176
3173 2004-05-20 Fernando Perez <fperez@colorado.edu>
3177 2004-05-20 Fernando Perez <fperez@colorado.edu>
3174
3178
3175 * IPython/Magic.py (Magic.magic_prun): changed default profile
3179 * IPython/Magic.py (Magic.magic_prun): changed default profile
3176 sort order to 'time' (the more common profiling need).
3180 sort order to 'time' (the more common profiling need).
3177
3181
3178 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3182 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3179 so that source code shown is guaranteed in sync with the file on
3183 so that source code shown is guaranteed in sync with the file on
3180 disk (also changed in psource). Similar fix to the one for
3184 disk (also changed in psource). Similar fix to the one for
3181 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3185 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3182 <yann.ledu-AT-noos.fr>.
3186 <yann.ledu-AT-noos.fr>.
3183
3187
3184 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3188 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3185 with a single option would not be correctly parsed. Closes
3189 with a single option would not be correctly parsed. Closes
3186 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3190 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3187 introduced in 0.6.0 (on 2004-05-06).
3191 introduced in 0.6.0 (on 2004-05-06).
3188
3192
3189 2004-05-13 *** Released version 0.6.0
3193 2004-05-13 *** Released version 0.6.0
3190
3194
3191 2004-05-13 Fernando Perez <fperez@colorado.edu>
3195 2004-05-13 Fernando Perez <fperez@colorado.edu>
3192
3196
3193 * debian/: Added debian/ directory to CVS, so that debian support
3197 * debian/: Added debian/ directory to CVS, so that debian support
3194 is publicly accessible. The debian package is maintained by Jack
3198 is publicly accessible. The debian package is maintained by Jack
3195 Moffit <jack-AT-xiph.org>.
3199 Moffit <jack-AT-xiph.org>.
3196
3200
3197 * Documentation: included the notes about an ipython-based system
3201 * Documentation: included the notes about an ipython-based system
3198 shell (the hypothetical 'pysh') into the new_design.pdf document,
3202 shell (the hypothetical 'pysh') into the new_design.pdf document,
3199 so that these ideas get distributed to users along with the
3203 so that these ideas get distributed to users along with the
3200 official documentation.
3204 official documentation.
3201
3205
3202 2004-05-10 Fernando Perez <fperez@colorado.edu>
3206 2004-05-10 Fernando Perez <fperez@colorado.edu>
3203
3207
3204 * IPython/Logger.py (Logger.create_log): fix recently introduced
3208 * IPython/Logger.py (Logger.create_log): fix recently introduced
3205 bug (misindented line) where logstart would fail when not given an
3209 bug (misindented line) where logstart would fail when not given an
3206 explicit filename.
3210 explicit filename.
3207
3211
3208 2004-05-09 Fernando Perez <fperez@colorado.edu>
3212 2004-05-09 Fernando Perez <fperez@colorado.edu>
3209
3213
3210 * IPython/Magic.py (Magic.parse_options): skip system call when
3214 * IPython/Magic.py (Magic.parse_options): skip system call when
3211 there are no options to look for. Faster, cleaner for the common
3215 there are no options to look for. Faster, cleaner for the common
3212 case.
3216 case.
3213
3217
3214 * Documentation: many updates to the manual: describing Windows
3218 * Documentation: many updates to the manual: describing Windows
3215 support better, Gnuplot updates, credits, misc small stuff. Also
3219 support better, Gnuplot updates, credits, misc small stuff. Also
3216 updated the new_design doc a bit.
3220 updated the new_design doc a bit.
3217
3221
3218 2004-05-06 *** Released version 0.6.0.rc1
3222 2004-05-06 *** Released version 0.6.0.rc1
3219
3223
3220 2004-05-06 Fernando Perez <fperez@colorado.edu>
3224 2004-05-06 Fernando Perez <fperez@colorado.edu>
3221
3225
3222 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3226 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3223 operations to use the vastly more efficient list/''.join() method.
3227 operations to use the vastly more efficient list/''.join() method.
3224 (FormattedTB.text): Fix
3228 (FormattedTB.text): Fix
3225 http://www.scipy.net/roundup/ipython/issue12 - exception source
3229 http://www.scipy.net/roundup/ipython/issue12 - exception source
3226 extract not updated after reload. Thanks to Mike Salib
3230 extract not updated after reload. Thanks to Mike Salib
3227 <msalib-AT-mit.edu> for pinning the source of the problem.
3231 <msalib-AT-mit.edu> for pinning the source of the problem.
3228 Fortunately, the solution works inside ipython and doesn't require
3232 Fortunately, the solution works inside ipython and doesn't require
3229 any changes to python proper.
3233 any changes to python proper.
3230
3234
3231 * IPython/Magic.py (Magic.parse_options): Improved to process the
3235 * IPython/Magic.py (Magic.parse_options): Improved to process the
3232 argument list as a true shell would (by actually using the
3236 argument list as a true shell would (by actually using the
3233 underlying system shell). This way, all @magics automatically get
3237 underlying system shell). This way, all @magics automatically get
3234 shell expansion for variables. Thanks to a comment by Alex
3238 shell expansion for variables. Thanks to a comment by Alex
3235 Schmolck.
3239 Schmolck.
3236
3240
3237 2004-04-04 Fernando Perez <fperez@colorado.edu>
3241 2004-04-04 Fernando Perez <fperez@colorado.edu>
3238
3242
3239 * IPython/iplib.py (InteractiveShell.interact): Added a special
3243 * IPython/iplib.py (InteractiveShell.interact): Added a special
3240 trap for a debugger quit exception, which is basically impossible
3244 trap for a debugger quit exception, which is basically impossible
3241 to handle by normal mechanisms, given what pdb does to the stack.
3245 to handle by normal mechanisms, given what pdb does to the stack.
3242 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3246 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3243
3247
3244 2004-04-03 Fernando Perez <fperez@colorado.edu>
3248 2004-04-03 Fernando Perez <fperez@colorado.edu>
3245
3249
3246 * IPython/genutils.py (Term): Standardized the names of the Term
3250 * IPython/genutils.py (Term): Standardized the names of the Term
3247 class streams to cin/cout/cerr, following C++ naming conventions
3251 class streams to cin/cout/cerr, following C++ naming conventions
3248 (I can't use in/out/err because 'in' is not a valid attribute
3252 (I can't use in/out/err because 'in' is not a valid attribute
3249 name).
3253 name).
3250
3254
3251 * IPython/iplib.py (InteractiveShell.interact): don't increment
3255 * IPython/iplib.py (InteractiveShell.interact): don't increment
3252 the prompt if there's no user input. By Daniel 'Dang' Griffith
3256 the prompt if there's no user input. By Daniel 'Dang' Griffith
3253 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3257 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3254 Francois Pinard.
3258 Francois Pinard.
3255
3259
3256 2004-04-02 Fernando Perez <fperez@colorado.edu>
3260 2004-04-02 Fernando Perez <fperez@colorado.edu>
3257
3261
3258 * IPython/genutils.py (Stream.__init__): Modified to survive at
3262 * IPython/genutils.py (Stream.__init__): Modified to survive at
3259 least importing in contexts where stdin/out/err aren't true file
3263 least importing in contexts where stdin/out/err aren't true file
3260 objects, such as PyCrust (they lack fileno() and mode). However,
3264 objects, such as PyCrust (they lack fileno() and mode). However,
3261 the recovery facilities which rely on these things existing will
3265 the recovery facilities which rely on these things existing will
3262 not work.
3266 not work.
3263
3267
3264 2004-04-01 Fernando Perez <fperez@colorado.edu>
3268 2004-04-01 Fernando Perez <fperez@colorado.edu>
3265
3269
3266 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3270 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3267 use the new getoutputerror() function, so it properly
3271 use the new getoutputerror() function, so it properly
3268 distinguishes stdout/err.
3272 distinguishes stdout/err.
3269
3273
3270 * IPython/genutils.py (getoutputerror): added a function to
3274 * IPython/genutils.py (getoutputerror): added a function to
3271 capture separately the standard output and error of a command.
3275 capture separately the standard output and error of a command.
3272 After a comment from dang on the mailing lists. This code is
3276 After a comment from dang on the mailing lists. This code is
3273 basically a modified version of commands.getstatusoutput(), from
3277 basically a modified version of commands.getstatusoutput(), from
3274 the standard library.
3278 the standard library.
3275
3279
3276 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3280 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3277 '!!' as a special syntax (shorthand) to access @sx.
3281 '!!' as a special syntax (shorthand) to access @sx.
3278
3282
3279 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3283 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3280 command and return its output as a list split on '\n'.
3284 command and return its output as a list split on '\n'.
3281
3285
3282 2004-03-31 Fernando Perez <fperez@colorado.edu>
3286 2004-03-31 Fernando Perez <fperez@colorado.edu>
3283
3287
3284 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3288 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3285 method to dictionaries used as FakeModule instances if they lack
3289 method to dictionaries used as FakeModule instances if they lack
3286 it. At least pydoc in python2.3 breaks for runtime-defined
3290 it. At least pydoc in python2.3 breaks for runtime-defined
3287 functions without this hack. At some point I need to _really_
3291 functions without this hack. At some point I need to _really_
3288 understand what FakeModule is doing, because it's a gross hack.
3292 understand what FakeModule is doing, because it's a gross hack.
3289 But it solves Arnd's problem for now...
3293 But it solves Arnd's problem for now...
3290
3294
3291 2004-02-27 Fernando Perez <fperez@colorado.edu>
3295 2004-02-27 Fernando Perez <fperez@colorado.edu>
3292
3296
3293 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3297 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3294 mode would behave erratically. Also increased the number of
3298 mode would behave erratically. Also increased the number of
3295 possible logs in rotate mod to 999. Thanks to Rod Holland
3299 possible logs in rotate mod to 999. Thanks to Rod Holland
3296 <rhh@StructureLABS.com> for the report and fixes.
3300 <rhh@StructureLABS.com> for the report and fixes.
3297
3301
3298 2004-02-26 Fernando Perez <fperez@colorado.edu>
3302 2004-02-26 Fernando Perez <fperez@colorado.edu>
3299
3303
3300 * IPython/genutils.py (page): Check that the curses module really
3304 * IPython/genutils.py (page): Check that the curses module really
3301 has the initscr attribute before trying to use it. For some
3305 has the initscr attribute before trying to use it. For some
3302 reason, the Solaris curses module is missing this. I think this
3306 reason, the Solaris curses module is missing this. I think this
3303 should be considered a Solaris python bug, but I'm not sure.
3307 should be considered a Solaris python bug, but I'm not sure.
3304
3308
3305 2004-01-17 Fernando Perez <fperez@colorado.edu>
3309 2004-01-17 Fernando Perez <fperez@colorado.edu>
3306
3310
3307 * IPython/genutils.py (Stream.__init__): Changes to try to make
3311 * IPython/genutils.py (Stream.__init__): Changes to try to make
3308 ipython robust against stdin/out/err being closed by the user.
3312 ipython robust against stdin/out/err being closed by the user.
3309 This is 'user error' (and blocks a normal python session, at least
3313 This is 'user error' (and blocks a normal python session, at least
3310 the stdout case). However, Ipython should be able to survive such
3314 the stdout case). However, Ipython should be able to survive such
3311 instances of abuse as gracefully as possible. To simplify the
3315 instances of abuse as gracefully as possible. To simplify the
3312 coding and maintain compatibility with Gary Bishop's Term
3316 coding and maintain compatibility with Gary Bishop's Term
3313 contributions, I've made use of classmethods for this. I think
3317 contributions, I've made use of classmethods for this. I think
3314 this introduces a dependency on python 2.2.
3318 this introduces a dependency on python 2.2.
3315
3319
3316 2004-01-13 Fernando Perez <fperez@colorado.edu>
3320 2004-01-13 Fernando Perez <fperez@colorado.edu>
3317
3321
3318 * IPython/numutils.py (exp_safe): simplified the code a bit and
3322 * IPython/numutils.py (exp_safe): simplified the code a bit and
3319 removed the need for importing the kinds module altogether.
3323 removed the need for importing the kinds module altogether.
3320
3324
3321 2004-01-06 Fernando Perez <fperez@colorado.edu>
3325 2004-01-06 Fernando Perez <fperez@colorado.edu>
3322
3326
3323 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3327 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3324 a magic function instead, after some community feedback. No
3328 a magic function instead, after some community feedback. No
3325 special syntax will exist for it, but its name is deliberately
3329 special syntax will exist for it, but its name is deliberately
3326 very short.
3330 very short.
3327
3331
3328 2003-12-20 Fernando Perez <fperez@colorado.edu>
3332 2003-12-20 Fernando Perez <fperez@colorado.edu>
3329
3333
3330 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3334 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3331 new functionality, to automagically assign the result of a shell
3335 new functionality, to automagically assign the result of a shell
3332 command to a variable. I'll solicit some community feedback on
3336 command to a variable. I'll solicit some community feedback on
3333 this before making it permanent.
3337 this before making it permanent.
3334
3338
3335 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3339 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3336 requested about callables for which inspect couldn't obtain a
3340 requested about callables for which inspect couldn't obtain a
3337 proper argspec. Thanks to a crash report sent by Etienne
3341 proper argspec. Thanks to a crash report sent by Etienne
3338 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3342 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3339
3343
3340 2003-12-09 Fernando Perez <fperez@colorado.edu>
3344 2003-12-09 Fernando Perez <fperez@colorado.edu>
3341
3345
3342 * IPython/genutils.py (page): patch for the pager to work across
3346 * IPython/genutils.py (page): patch for the pager to work across
3343 various versions of Windows. By Gary Bishop.
3347 various versions of Windows. By Gary Bishop.
3344
3348
3345 2003-12-04 Fernando Perez <fperez@colorado.edu>
3349 2003-12-04 Fernando Perez <fperez@colorado.edu>
3346
3350
3347 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3351 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3348 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3352 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3349 While I tested this and it looks ok, there may still be corner
3353 While I tested this and it looks ok, there may still be corner
3350 cases I've missed.
3354 cases I've missed.
3351
3355
3352 2003-12-01 Fernando Perez <fperez@colorado.edu>
3356 2003-12-01 Fernando Perez <fperez@colorado.edu>
3353
3357
3354 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3358 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3355 where a line like 'p,q=1,2' would fail because the automagic
3359 where a line like 'p,q=1,2' would fail because the automagic
3356 system would be triggered for @p.
3360 system would be triggered for @p.
3357
3361
3358 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3362 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3359 cleanups, code unmodified.
3363 cleanups, code unmodified.
3360
3364
3361 * IPython/genutils.py (Term): added a class for IPython to handle
3365 * IPython/genutils.py (Term): added a class for IPython to handle
3362 output. In most cases it will just be a proxy for stdout/err, but
3366 output. In most cases it will just be a proxy for stdout/err, but
3363 having this allows modifications to be made for some platforms,
3367 having this allows modifications to be made for some platforms,
3364 such as handling color escapes under Windows. All of this code
3368 such as handling color escapes under Windows. All of this code
3365 was contributed by Gary Bishop, with minor modifications by me.
3369 was contributed by Gary Bishop, with minor modifications by me.
3366 The actual changes affect many files.
3370 The actual changes affect many files.
3367
3371
3368 2003-11-30 Fernando Perez <fperez@colorado.edu>
3372 2003-11-30 Fernando Perez <fperez@colorado.edu>
3369
3373
3370 * IPython/iplib.py (file_matches): new completion code, courtesy
3374 * IPython/iplib.py (file_matches): new completion code, courtesy
3371 of Jeff Collins. This enables filename completion again under
3375 of Jeff Collins. This enables filename completion again under
3372 python 2.3, which disabled it at the C level.
3376 python 2.3, which disabled it at the C level.
3373
3377
3374 2003-11-11 Fernando Perez <fperez@colorado.edu>
3378 2003-11-11 Fernando Perez <fperez@colorado.edu>
3375
3379
3376 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3380 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3377 for Numeric.array(map(...)), but often convenient.
3381 for Numeric.array(map(...)), but often convenient.
3378
3382
3379 2003-11-05 Fernando Perez <fperez@colorado.edu>
3383 2003-11-05 Fernando Perez <fperez@colorado.edu>
3380
3384
3381 * IPython/numutils.py (frange): Changed a call from int() to
3385 * IPython/numutils.py (frange): Changed a call from int() to
3382 int(round()) to prevent a problem reported with arange() in the
3386 int(round()) to prevent a problem reported with arange() in the
3383 numpy list.
3387 numpy list.
3384
3388
3385 2003-10-06 Fernando Perez <fperez@colorado.edu>
3389 2003-10-06 Fernando Perez <fperez@colorado.edu>
3386
3390
3387 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3391 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3388 prevent crashes if sys lacks an argv attribute (it happens with
3392 prevent crashes if sys lacks an argv attribute (it happens with
3389 embedded interpreters which build a bare-bones sys module).
3393 embedded interpreters which build a bare-bones sys module).
3390 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3394 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3391
3395
3392 2003-09-24 Fernando Perez <fperez@colorado.edu>
3396 2003-09-24 Fernando Perez <fperez@colorado.edu>
3393
3397
3394 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3398 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3395 to protect against poorly written user objects where __getattr__
3399 to protect against poorly written user objects where __getattr__
3396 raises exceptions other than AttributeError. Thanks to a bug
3400 raises exceptions other than AttributeError. Thanks to a bug
3397 report by Oliver Sander <osander-AT-gmx.de>.
3401 report by Oliver Sander <osander-AT-gmx.de>.
3398
3402
3399 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3403 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3400 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3404 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3401
3405
3402 2003-09-09 Fernando Perez <fperez@colorado.edu>
3406 2003-09-09 Fernando Perez <fperez@colorado.edu>
3403
3407
3404 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3408 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3405 unpacking a list whith a callable as first element would
3409 unpacking a list whith a callable as first element would
3406 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3410 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3407 Collins.
3411 Collins.
3408
3412
3409 2003-08-25 *** Released version 0.5.0
3413 2003-08-25 *** Released version 0.5.0
3410
3414
3411 2003-08-22 Fernando Perez <fperez@colorado.edu>
3415 2003-08-22 Fernando Perez <fperez@colorado.edu>
3412
3416
3413 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3417 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3414 improperly defined user exceptions. Thanks to feedback from Mark
3418 improperly defined user exceptions. Thanks to feedback from Mark
3415 Russell <mrussell-AT-verio.net>.
3419 Russell <mrussell-AT-verio.net>.
3416
3420
3417 2003-08-20 Fernando Perez <fperez@colorado.edu>
3421 2003-08-20 Fernando Perez <fperez@colorado.edu>
3418
3422
3419 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3423 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3420 printing so that it would print multi-line string forms starting
3424 printing so that it would print multi-line string forms starting
3421 with a new line. This way the formatting is better respected for
3425 with a new line. This way the formatting is better respected for
3422 objects which work hard to make nice string forms.
3426 objects which work hard to make nice string forms.
3423
3427
3424 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3428 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3425 autocall would overtake data access for objects with both
3429 autocall would overtake data access for objects with both
3426 __getitem__ and __call__.
3430 __getitem__ and __call__.
3427
3431
3428 2003-08-19 *** Released version 0.5.0-rc1
3432 2003-08-19 *** Released version 0.5.0-rc1
3429
3433
3430 2003-08-19 Fernando Perez <fperez@colorado.edu>
3434 2003-08-19 Fernando Perez <fperez@colorado.edu>
3431
3435
3432 * IPython/deep_reload.py (load_tail): single tiny change here
3436 * IPython/deep_reload.py (load_tail): single tiny change here
3433 seems to fix the long-standing bug of dreload() failing to work
3437 seems to fix the long-standing bug of dreload() failing to work
3434 for dotted names. But this module is pretty tricky, so I may have
3438 for dotted names. But this module is pretty tricky, so I may have
3435 missed some subtlety. Needs more testing!.
3439 missed some subtlety. Needs more testing!.
3436
3440
3437 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3441 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3438 exceptions which have badly implemented __str__ methods.
3442 exceptions which have badly implemented __str__ methods.
3439 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3443 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3440 which I've been getting reports about from Python 2.3 users. I
3444 which I've been getting reports about from Python 2.3 users. I
3441 wish I had a simple test case to reproduce the problem, so I could
3445 wish I had a simple test case to reproduce the problem, so I could
3442 either write a cleaner workaround or file a bug report if
3446 either write a cleaner workaround or file a bug report if
3443 necessary.
3447 necessary.
3444
3448
3445 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3449 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3446 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3450 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3447 a bug report by Tjabo Kloppenburg.
3451 a bug report by Tjabo Kloppenburg.
3448
3452
3449 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3453 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3450 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3454 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3451 seems rather unstable. Thanks to a bug report by Tjabo
3455 seems rather unstable. Thanks to a bug report by Tjabo
3452 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3456 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3453
3457
3454 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3458 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3455 this out soon because of the critical fixes in the inner loop for
3459 this out soon because of the critical fixes in the inner loop for
3456 generators.
3460 generators.
3457
3461
3458 * IPython/Magic.py (Magic.getargspec): removed. This (and
3462 * IPython/Magic.py (Magic.getargspec): removed. This (and
3459 _get_def) have been obsoleted by OInspect for a long time, I
3463 _get_def) have been obsoleted by OInspect for a long time, I
3460 hadn't noticed that they were dead code.
3464 hadn't noticed that they were dead code.
3461 (Magic._ofind): restored _ofind functionality for a few literals
3465 (Magic._ofind): restored _ofind functionality for a few literals
3462 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3466 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3463 for things like "hello".capitalize?, since that would require a
3467 for things like "hello".capitalize?, since that would require a
3464 potentially dangerous eval() again.
3468 potentially dangerous eval() again.
3465
3469
3466 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3470 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3467 logic a bit more to clean up the escapes handling and minimize the
3471 logic a bit more to clean up the escapes handling and minimize the
3468 use of _ofind to only necessary cases. The interactive 'feel' of
3472 use of _ofind to only necessary cases. The interactive 'feel' of
3469 IPython should have improved quite a bit with the changes in
3473 IPython should have improved quite a bit with the changes in
3470 _prefilter and _ofind (besides being far safer than before).
3474 _prefilter and _ofind (besides being far safer than before).
3471
3475
3472 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3476 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3473 obscure, never reported). Edit would fail to find the object to
3477 obscure, never reported). Edit would fail to find the object to
3474 edit under some circumstances.
3478 edit under some circumstances.
3475 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3479 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3476 which were causing double-calling of generators. Those eval calls
3480 which were causing double-calling of generators. Those eval calls
3477 were _very_ dangerous, since code with side effects could be
3481 were _very_ dangerous, since code with side effects could be
3478 triggered. As they say, 'eval is evil'... These were the
3482 triggered. As they say, 'eval is evil'... These were the
3479 nastiest evals in IPython. Besides, _ofind is now far simpler,
3483 nastiest evals in IPython. Besides, _ofind is now far simpler,
3480 and it should also be quite a bit faster. Its use of inspect is
3484 and it should also be quite a bit faster. Its use of inspect is
3481 also safer, so perhaps some of the inspect-related crashes I've
3485 also safer, so perhaps some of the inspect-related crashes I've
3482 seen lately with Python 2.3 might be taken care of. That will
3486 seen lately with Python 2.3 might be taken care of. That will
3483 need more testing.
3487 need more testing.
3484
3488
3485 2003-08-17 Fernando Perez <fperez@colorado.edu>
3489 2003-08-17 Fernando Perez <fperez@colorado.edu>
3486
3490
3487 * IPython/iplib.py (InteractiveShell._prefilter): significant
3491 * IPython/iplib.py (InteractiveShell._prefilter): significant
3488 simplifications to the logic for handling user escapes. Faster
3492 simplifications to the logic for handling user escapes. Faster
3489 and simpler code.
3493 and simpler code.
3490
3494
3491 2003-08-14 Fernando Perez <fperez@colorado.edu>
3495 2003-08-14 Fernando Perez <fperez@colorado.edu>
3492
3496
3493 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3497 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3494 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3498 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3495 but it should be quite a bit faster. And the recursive version
3499 but it should be quite a bit faster. And the recursive version
3496 generated O(log N) intermediate storage for all rank>1 arrays,
3500 generated O(log N) intermediate storage for all rank>1 arrays,
3497 even if they were contiguous.
3501 even if they were contiguous.
3498 (l1norm): Added this function.
3502 (l1norm): Added this function.
3499 (norm): Added this function for arbitrary norms (including
3503 (norm): Added this function for arbitrary norms (including
3500 l-infinity). l1 and l2 are still special cases for convenience
3504 l-infinity). l1 and l2 are still special cases for convenience
3501 and speed.
3505 and speed.
3502
3506
3503 2003-08-03 Fernando Perez <fperez@colorado.edu>
3507 2003-08-03 Fernando Perez <fperez@colorado.edu>
3504
3508
3505 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3509 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3506 exceptions, which now raise PendingDeprecationWarnings in Python
3510 exceptions, which now raise PendingDeprecationWarnings in Python
3507 2.3. There were some in Magic and some in Gnuplot2.
3511 2.3. There were some in Magic and some in Gnuplot2.
3508
3512
3509 2003-06-30 Fernando Perez <fperez@colorado.edu>
3513 2003-06-30 Fernando Perez <fperez@colorado.edu>
3510
3514
3511 * IPython/genutils.py (page): modified to call curses only for
3515 * IPython/genutils.py (page): modified to call curses only for
3512 terminals where TERM=='xterm'. After problems under many other
3516 terminals where TERM=='xterm'. After problems under many other
3513 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3517 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3514
3518
3515 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3519 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3516 would be triggered when readline was absent. This was just an old
3520 would be triggered when readline was absent. This was just an old
3517 debugging statement I'd forgotten to take out.
3521 debugging statement I'd forgotten to take out.
3518
3522
3519 2003-06-20 Fernando Perez <fperez@colorado.edu>
3523 2003-06-20 Fernando Perez <fperez@colorado.edu>
3520
3524
3521 * IPython/genutils.py (clock): modified to return only user time
3525 * IPython/genutils.py (clock): modified to return only user time
3522 (not counting system time), after a discussion on scipy. While
3526 (not counting system time), after a discussion on scipy. While
3523 system time may be a useful quantity occasionally, it may much
3527 system time may be a useful quantity occasionally, it may much
3524 more easily be skewed by occasional swapping or other similar
3528 more easily be skewed by occasional swapping or other similar
3525 activity.
3529 activity.
3526
3530
3527 2003-06-05 Fernando Perez <fperez@colorado.edu>
3531 2003-06-05 Fernando Perez <fperez@colorado.edu>
3528
3532
3529 * IPython/numutils.py (identity): new function, for building
3533 * IPython/numutils.py (identity): new function, for building
3530 arbitrary rank Kronecker deltas (mostly backwards compatible with
3534 arbitrary rank Kronecker deltas (mostly backwards compatible with
3531 Numeric.identity)
3535 Numeric.identity)
3532
3536
3533 2003-06-03 Fernando Perez <fperez@colorado.edu>
3537 2003-06-03 Fernando Perez <fperez@colorado.edu>
3534
3538
3535 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3539 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3536 arguments passed to magics with spaces, to allow trailing '\' to
3540 arguments passed to magics with spaces, to allow trailing '\' to
3537 work normally (mainly for Windows users).
3541 work normally (mainly for Windows users).
3538
3542
3539 2003-05-29 Fernando Perez <fperez@colorado.edu>
3543 2003-05-29 Fernando Perez <fperez@colorado.edu>
3540
3544
3541 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3545 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3542 instead of pydoc.help. This fixes a bizarre behavior where
3546 instead of pydoc.help. This fixes a bizarre behavior where
3543 printing '%s' % locals() would trigger the help system. Now
3547 printing '%s' % locals() would trigger the help system. Now
3544 ipython behaves like normal python does.
3548 ipython behaves like normal python does.
3545
3549
3546 Note that if one does 'from pydoc import help', the bizarre
3550 Note that if one does 'from pydoc import help', the bizarre
3547 behavior returns, but this will also happen in normal python, so
3551 behavior returns, but this will also happen in normal python, so
3548 it's not an ipython bug anymore (it has to do with how pydoc.help
3552 it's not an ipython bug anymore (it has to do with how pydoc.help
3549 is implemented).
3553 is implemented).
3550
3554
3551 2003-05-22 Fernando Perez <fperez@colorado.edu>
3555 2003-05-22 Fernando Perez <fperez@colorado.edu>
3552
3556
3553 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3557 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3554 return [] instead of None when nothing matches, also match to end
3558 return [] instead of None when nothing matches, also match to end
3555 of line. Patch by Gary Bishop.
3559 of line. Patch by Gary Bishop.
3556
3560
3557 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3561 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3558 protection as before, for files passed on the command line. This
3562 protection as before, for files passed on the command line. This
3559 prevents the CrashHandler from kicking in if user files call into
3563 prevents the CrashHandler from kicking in if user files call into
3560 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3564 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3561 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3565 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3562
3566
3563 2003-05-20 *** Released version 0.4.0
3567 2003-05-20 *** Released version 0.4.0
3564
3568
3565 2003-05-20 Fernando Perez <fperez@colorado.edu>
3569 2003-05-20 Fernando Perez <fperez@colorado.edu>
3566
3570
3567 * setup.py: added support for manpages. It's a bit hackish b/c of
3571 * setup.py: added support for manpages. It's a bit hackish b/c of
3568 a bug in the way the bdist_rpm distutils target handles gzipped
3572 a bug in the way the bdist_rpm distutils target handles gzipped
3569 manpages, but it works. After a patch by Jack.
3573 manpages, but it works. After a patch by Jack.
3570
3574
3571 2003-05-19 Fernando Perez <fperez@colorado.edu>
3575 2003-05-19 Fernando Perez <fperez@colorado.edu>
3572
3576
3573 * IPython/numutils.py: added a mockup of the kinds module, since
3577 * IPython/numutils.py: added a mockup of the kinds module, since
3574 it was recently removed from Numeric. This way, numutils will
3578 it was recently removed from Numeric. This way, numutils will
3575 work for all users even if they are missing kinds.
3579 work for all users even if they are missing kinds.
3576
3580
3577 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3581 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3578 failure, which can occur with SWIG-wrapped extensions. After a
3582 failure, which can occur with SWIG-wrapped extensions. After a
3579 crash report from Prabhu.
3583 crash report from Prabhu.
3580
3584
3581 2003-05-16 Fernando Perez <fperez@colorado.edu>
3585 2003-05-16 Fernando Perez <fperez@colorado.edu>
3582
3586
3583 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3587 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3584 protect ipython from user code which may call directly
3588 protect ipython from user code which may call directly
3585 sys.excepthook (this looks like an ipython crash to the user, even
3589 sys.excepthook (this looks like an ipython crash to the user, even
3586 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3590 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3587 This is especially important to help users of WxWindows, but may
3591 This is especially important to help users of WxWindows, but may
3588 also be useful in other cases.
3592 also be useful in other cases.
3589
3593
3590 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3594 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3591 an optional tb_offset to be specified, and to preserve exception
3595 an optional tb_offset to be specified, and to preserve exception
3592 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3596 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3593
3597
3594 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3598 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3595
3599
3596 2003-05-15 Fernando Perez <fperez@colorado.edu>
3600 2003-05-15 Fernando Perez <fperez@colorado.edu>
3597
3601
3598 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3602 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3599 installing for a new user under Windows.
3603 installing for a new user under Windows.
3600
3604
3601 2003-05-12 Fernando Perez <fperez@colorado.edu>
3605 2003-05-12 Fernando Perez <fperez@colorado.edu>
3602
3606
3603 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3607 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3604 handler for Emacs comint-based lines. Currently it doesn't do
3608 handler for Emacs comint-based lines. Currently it doesn't do
3605 much (but importantly, it doesn't update the history cache). In
3609 much (but importantly, it doesn't update the history cache). In
3606 the future it may be expanded if Alex needs more functionality
3610 the future it may be expanded if Alex needs more functionality
3607 there.
3611 there.
3608
3612
3609 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3613 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3610 info to crash reports.
3614 info to crash reports.
3611
3615
3612 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3616 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3613 just like Python's -c. Also fixed crash with invalid -color
3617 just like Python's -c. Also fixed crash with invalid -color
3614 option value at startup. Thanks to Will French
3618 option value at startup. Thanks to Will French
3615 <wfrench-AT-bestweb.net> for the bug report.
3619 <wfrench-AT-bestweb.net> for the bug report.
3616
3620
3617 2003-05-09 Fernando Perez <fperez@colorado.edu>
3621 2003-05-09 Fernando Perez <fperez@colorado.edu>
3618
3622
3619 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3623 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3620 to EvalDict (it's a mapping, after all) and simplified its code
3624 to EvalDict (it's a mapping, after all) and simplified its code
3621 quite a bit, after a nice discussion on c.l.py where Gustavo
3625 quite a bit, after a nice discussion on c.l.py where Gustavo
3622 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3626 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3623
3627
3624 2003-04-30 Fernando Perez <fperez@colorado.edu>
3628 2003-04-30 Fernando Perez <fperez@colorado.edu>
3625
3629
3626 * IPython/genutils.py (timings_out): modified it to reduce its
3630 * IPython/genutils.py (timings_out): modified it to reduce its
3627 overhead in the common reps==1 case.
3631 overhead in the common reps==1 case.
3628
3632
3629 2003-04-29 Fernando Perez <fperez@colorado.edu>
3633 2003-04-29 Fernando Perez <fperez@colorado.edu>
3630
3634
3631 * IPython/genutils.py (timings_out): Modified to use the resource
3635 * IPython/genutils.py (timings_out): Modified to use the resource
3632 module, which avoids the wraparound problems of time.clock().
3636 module, which avoids the wraparound problems of time.clock().
3633
3637
3634 2003-04-17 *** Released version 0.2.15pre4
3638 2003-04-17 *** Released version 0.2.15pre4
3635
3639
3636 2003-04-17 Fernando Perez <fperez@colorado.edu>
3640 2003-04-17 Fernando Perez <fperez@colorado.edu>
3637
3641
3638 * setup.py (scriptfiles): Split windows-specific stuff over to a
3642 * setup.py (scriptfiles): Split windows-specific stuff over to a
3639 separate file, in an attempt to have a Windows GUI installer.
3643 separate file, in an attempt to have a Windows GUI installer.
3640 That didn't work, but part of the groundwork is done.
3644 That didn't work, but part of the groundwork is done.
3641
3645
3642 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3646 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3643 indent/unindent with 4 spaces. Particularly useful in combination
3647 indent/unindent with 4 spaces. Particularly useful in combination
3644 with the new auto-indent option.
3648 with the new auto-indent option.
3645
3649
3646 2003-04-16 Fernando Perez <fperez@colorado.edu>
3650 2003-04-16 Fernando Perez <fperez@colorado.edu>
3647
3651
3648 * IPython/Magic.py: various replacements of self.rc for
3652 * IPython/Magic.py: various replacements of self.rc for
3649 self.shell.rc. A lot more remains to be done to fully disentangle
3653 self.shell.rc. A lot more remains to be done to fully disentangle
3650 this class from the main Shell class.
3654 this class from the main Shell class.
3651
3655
3652 * IPython/GnuplotRuntime.py: added checks for mouse support so
3656 * IPython/GnuplotRuntime.py: added checks for mouse support so
3653 that we don't try to enable it if the current gnuplot doesn't
3657 that we don't try to enable it if the current gnuplot doesn't
3654 really support it. Also added checks so that we don't try to
3658 really support it. Also added checks so that we don't try to
3655 enable persist under Windows (where Gnuplot doesn't recognize the
3659 enable persist under Windows (where Gnuplot doesn't recognize the
3656 option).
3660 option).
3657
3661
3658 * IPython/iplib.py (InteractiveShell.interact): Added optional
3662 * IPython/iplib.py (InteractiveShell.interact): Added optional
3659 auto-indenting code, after a patch by King C. Shu
3663 auto-indenting code, after a patch by King C. Shu
3660 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3664 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3661 get along well with pasting indented code. If I ever figure out
3665 get along well with pasting indented code. If I ever figure out
3662 how to make that part go well, it will become on by default.
3666 how to make that part go well, it will become on by default.
3663
3667
3664 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3668 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3665 crash ipython if there was an unmatched '%' in the user's prompt
3669 crash ipython if there was an unmatched '%' in the user's prompt
3666 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3670 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3667
3671
3668 * IPython/iplib.py (InteractiveShell.interact): removed the
3672 * IPython/iplib.py (InteractiveShell.interact): removed the
3669 ability to ask the user whether he wants to crash or not at the
3673 ability to ask the user whether he wants to crash or not at the
3670 'last line' exception handler. Calling functions at that point
3674 'last line' exception handler. Calling functions at that point
3671 changes the stack, and the error reports would have incorrect
3675 changes the stack, and the error reports would have incorrect
3672 tracebacks.
3676 tracebacks.
3673
3677
3674 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3678 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3675 pass through a peger a pretty-printed form of any object. After a
3679 pass through a peger a pretty-printed form of any object. After a
3676 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3680 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3677
3681
3678 2003-04-14 Fernando Perez <fperez@colorado.edu>
3682 2003-04-14 Fernando Perez <fperez@colorado.edu>
3679
3683
3680 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3684 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3681 all files in ~ would be modified at first install (instead of
3685 all files in ~ would be modified at first install (instead of
3682 ~/.ipython). This could be potentially disastrous, as the
3686 ~/.ipython). This could be potentially disastrous, as the
3683 modification (make line-endings native) could damage binary files.
3687 modification (make line-endings native) could damage binary files.
3684
3688
3685 2003-04-10 Fernando Perez <fperez@colorado.edu>
3689 2003-04-10 Fernando Perez <fperez@colorado.edu>
3686
3690
3687 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3691 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3688 handle only lines which are invalid python. This now means that
3692 handle only lines which are invalid python. This now means that
3689 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3693 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3690 for the bug report.
3694 for the bug report.
3691
3695
3692 2003-04-01 Fernando Perez <fperez@colorado.edu>
3696 2003-04-01 Fernando Perez <fperez@colorado.edu>
3693
3697
3694 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3698 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3695 where failing to set sys.last_traceback would crash pdb.pm().
3699 where failing to set sys.last_traceback would crash pdb.pm().
3696 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3700 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3697 report.
3701 report.
3698
3702
3699 2003-03-25 Fernando Perez <fperez@colorado.edu>
3703 2003-03-25 Fernando Perez <fperez@colorado.edu>
3700
3704
3701 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3705 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3702 before printing it (it had a lot of spurious blank lines at the
3706 before printing it (it had a lot of spurious blank lines at the
3703 end).
3707 end).
3704
3708
3705 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3709 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3706 output would be sent 21 times! Obviously people don't use this
3710 output would be sent 21 times! Obviously people don't use this
3707 too often, or I would have heard about it.
3711 too often, or I would have heard about it.
3708
3712
3709 2003-03-24 Fernando Perez <fperez@colorado.edu>
3713 2003-03-24 Fernando Perez <fperez@colorado.edu>
3710
3714
3711 * setup.py (scriptfiles): renamed the data_files parameter from
3715 * setup.py (scriptfiles): renamed the data_files parameter from
3712 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3716 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3713 for the patch.
3717 for the patch.
3714
3718
3715 2003-03-20 Fernando Perez <fperez@colorado.edu>
3719 2003-03-20 Fernando Perez <fperez@colorado.edu>
3716
3720
3717 * IPython/genutils.py (error): added error() and fatal()
3721 * IPython/genutils.py (error): added error() and fatal()
3718 functions.
3722 functions.
3719
3723
3720 2003-03-18 *** Released version 0.2.15pre3
3724 2003-03-18 *** Released version 0.2.15pre3
3721
3725
3722 2003-03-18 Fernando Perez <fperez@colorado.edu>
3726 2003-03-18 Fernando Perez <fperez@colorado.edu>
3723
3727
3724 * setupext/install_data_ext.py
3728 * setupext/install_data_ext.py
3725 (install_data_ext.initialize_options): Class contributed by Jack
3729 (install_data_ext.initialize_options): Class contributed by Jack
3726 Moffit for fixing the old distutils hack. He is sending this to
3730 Moffit for fixing the old distutils hack. He is sending this to
3727 the distutils folks so in the future we may not need it as a
3731 the distutils folks so in the future we may not need it as a
3728 private fix.
3732 private fix.
3729
3733
3730 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3734 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3731 changes for Debian packaging. See his patch for full details.
3735 changes for Debian packaging. See his patch for full details.
3732 The old distutils hack of making the ipythonrc* files carry a
3736 The old distutils hack of making the ipythonrc* files carry a
3733 bogus .py extension is gone, at last. Examples were moved to a
3737 bogus .py extension is gone, at last. Examples were moved to a
3734 separate subdir under doc/, and the separate executable scripts
3738 separate subdir under doc/, and the separate executable scripts
3735 now live in their own directory. Overall a great cleanup. The
3739 now live in their own directory. Overall a great cleanup. The
3736 manual was updated to use the new files, and setup.py has been
3740 manual was updated to use the new files, and setup.py has been
3737 fixed for this setup.
3741 fixed for this setup.
3738
3742
3739 * IPython/PyColorize.py (Parser.usage): made non-executable and
3743 * IPython/PyColorize.py (Parser.usage): made non-executable and
3740 created a pycolor wrapper around it to be included as a script.
3744 created a pycolor wrapper around it to be included as a script.
3741
3745
3742 2003-03-12 *** Released version 0.2.15pre2
3746 2003-03-12 *** Released version 0.2.15pre2
3743
3747
3744 2003-03-12 Fernando Perez <fperez@colorado.edu>
3748 2003-03-12 Fernando Perez <fperez@colorado.edu>
3745
3749
3746 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3750 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3747 long-standing problem with garbage characters in some terminals.
3751 long-standing problem with garbage characters in some terminals.
3748 The issue was really that the \001 and \002 escapes must _only_ be
3752 The issue was really that the \001 and \002 escapes must _only_ be
3749 passed to input prompts (which call readline), but _never_ to
3753 passed to input prompts (which call readline), but _never_ to
3750 normal text to be printed on screen. I changed ColorANSI to have
3754 normal text to be printed on screen. I changed ColorANSI to have
3751 two classes: TermColors and InputTermColors, each with the
3755 two classes: TermColors and InputTermColors, each with the
3752 appropriate escapes for input prompts or normal text. The code in
3756 appropriate escapes for input prompts or normal text. The code in
3753 Prompts.py got slightly more complicated, but this very old and
3757 Prompts.py got slightly more complicated, but this very old and
3754 annoying bug is finally fixed.
3758 annoying bug is finally fixed.
3755
3759
3756 All the credit for nailing down the real origin of this problem
3760 All the credit for nailing down the real origin of this problem
3757 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3761 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3758 *Many* thanks to him for spending quite a bit of effort on this.
3762 *Many* thanks to him for spending quite a bit of effort on this.
3759
3763
3760 2003-03-05 *** Released version 0.2.15pre1
3764 2003-03-05 *** Released version 0.2.15pre1
3761
3765
3762 2003-03-03 Fernando Perez <fperez@colorado.edu>
3766 2003-03-03 Fernando Perez <fperez@colorado.edu>
3763
3767
3764 * IPython/FakeModule.py: Moved the former _FakeModule to a
3768 * IPython/FakeModule.py: Moved the former _FakeModule to a
3765 separate file, because it's also needed by Magic (to fix a similar
3769 separate file, because it's also needed by Magic (to fix a similar
3766 pickle-related issue in @run).
3770 pickle-related issue in @run).
3767
3771
3768 2003-03-02 Fernando Perez <fperez@colorado.edu>
3772 2003-03-02 Fernando Perez <fperez@colorado.edu>
3769
3773
3770 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3774 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3771 the autocall option at runtime.
3775 the autocall option at runtime.
3772 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3776 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3773 across Magic.py to start separating Magic from InteractiveShell.
3777 across Magic.py to start separating Magic from InteractiveShell.
3774 (Magic._ofind): Fixed to return proper namespace for dotted
3778 (Magic._ofind): Fixed to return proper namespace for dotted
3775 names. Before, a dotted name would always return 'not currently
3779 names. Before, a dotted name would always return 'not currently
3776 defined', because it would find the 'parent'. s.x would be found,
3780 defined', because it would find the 'parent'. s.x would be found,
3777 but since 'x' isn't defined by itself, it would get confused.
3781 but since 'x' isn't defined by itself, it would get confused.
3778 (Magic.magic_run): Fixed pickling problems reported by Ralf
3782 (Magic.magic_run): Fixed pickling problems reported by Ralf
3779 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3783 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3780 that I'd used when Mike Heeter reported similar issues at the
3784 that I'd used when Mike Heeter reported similar issues at the
3781 top-level, but now for @run. It boils down to injecting the
3785 top-level, but now for @run. It boils down to injecting the
3782 namespace where code is being executed with something that looks
3786 namespace where code is being executed with something that looks
3783 enough like a module to fool pickle.dump(). Since a pickle stores
3787 enough like a module to fool pickle.dump(). Since a pickle stores
3784 a named reference to the importing module, we need this for
3788 a named reference to the importing module, we need this for
3785 pickles to save something sensible.
3789 pickles to save something sensible.
3786
3790
3787 * IPython/ipmaker.py (make_IPython): added an autocall option.
3791 * IPython/ipmaker.py (make_IPython): added an autocall option.
3788
3792
3789 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3793 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3790 the auto-eval code. Now autocalling is an option, and the code is
3794 the auto-eval code. Now autocalling is an option, and the code is
3791 also vastly safer. There is no more eval() involved at all.
3795 also vastly safer. There is no more eval() involved at all.
3792
3796
3793 2003-03-01 Fernando Perez <fperez@colorado.edu>
3797 2003-03-01 Fernando Perez <fperez@colorado.edu>
3794
3798
3795 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3799 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3796 dict with named keys instead of a tuple.
3800 dict with named keys instead of a tuple.
3797
3801
3798 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3802 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3799
3803
3800 * setup.py (make_shortcut): Fixed message about directories
3804 * setup.py (make_shortcut): Fixed message about directories
3801 created during Windows installation (the directories were ok, just
3805 created during Windows installation (the directories were ok, just
3802 the printed message was misleading). Thanks to Chris Liechti
3806 the printed message was misleading). Thanks to Chris Liechti
3803 <cliechti-AT-gmx.net> for the heads up.
3807 <cliechti-AT-gmx.net> for the heads up.
3804
3808
3805 2003-02-21 Fernando Perez <fperez@colorado.edu>
3809 2003-02-21 Fernando Perez <fperez@colorado.edu>
3806
3810
3807 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3811 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3808 of ValueError exception when checking for auto-execution. This
3812 of ValueError exception when checking for auto-execution. This
3809 one is raised by things like Numeric arrays arr.flat when the
3813 one is raised by things like Numeric arrays arr.flat when the
3810 array is non-contiguous.
3814 array is non-contiguous.
3811
3815
3812 2003-01-31 Fernando Perez <fperez@colorado.edu>
3816 2003-01-31 Fernando Perez <fperez@colorado.edu>
3813
3817
3814 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3818 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3815 not return any value at all (even though the command would get
3819 not return any value at all (even though the command would get
3816 executed).
3820 executed).
3817 (xsys): Flush stdout right after printing the command to ensure
3821 (xsys): Flush stdout right after printing the command to ensure
3818 proper ordering of commands and command output in the total
3822 proper ordering of commands and command output in the total
3819 output.
3823 output.
3820 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3824 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3821 system/getoutput as defaults. The old ones are kept for
3825 system/getoutput as defaults. The old ones are kept for
3822 compatibility reasons, so no code which uses this library needs
3826 compatibility reasons, so no code which uses this library needs
3823 changing.
3827 changing.
3824
3828
3825 2003-01-27 *** Released version 0.2.14
3829 2003-01-27 *** Released version 0.2.14
3826
3830
3827 2003-01-25 Fernando Perez <fperez@colorado.edu>
3831 2003-01-25 Fernando Perez <fperez@colorado.edu>
3828
3832
3829 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3833 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3830 functions defined in previous edit sessions could not be re-edited
3834 functions defined in previous edit sessions could not be re-edited
3831 (because the temp files were immediately removed). Now temp files
3835 (because the temp files were immediately removed). Now temp files
3832 are removed only at IPython's exit.
3836 are removed only at IPython's exit.
3833 (Magic.magic_run): Improved @run to perform shell-like expansions
3837 (Magic.magic_run): Improved @run to perform shell-like expansions
3834 on its arguments (~users and $VARS). With this, @run becomes more
3838 on its arguments (~users and $VARS). With this, @run becomes more
3835 like a normal command-line.
3839 like a normal command-line.
3836
3840
3837 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3841 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3838 bugs related to embedding and cleaned up that code. A fairly
3842 bugs related to embedding and cleaned up that code. A fairly
3839 important one was the impossibility to access the global namespace
3843 important one was the impossibility to access the global namespace
3840 through the embedded IPython (only local variables were visible).
3844 through the embedded IPython (only local variables were visible).
3841
3845
3842 2003-01-14 Fernando Perez <fperez@colorado.edu>
3846 2003-01-14 Fernando Perez <fperez@colorado.edu>
3843
3847
3844 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3848 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3845 auto-calling to be a bit more conservative. Now it doesn't get
3849 auto-calling to be a bit more conservative. Now it doesn't get
3846 triggered if any of '!=()<>' are in the rest of the input line, to
3850 triggered if any of '!=()<>' are in the rest of the input line, to
3847 allow comparing callables. Thanks to Alex for the heads up.
3851 allow comparing callables. Thanks to Alex for the heads up.
3848
3852
3849 2003-01-07 Fernando Perez <fperez@colorado.edu>
3853 2003-01-07 Fernando Perez <fperez@colorado.edu>
3850
3854
3851 * IPython/genutils.py (page): fixed estimation of the number of
3855 * IPython/genutils.py (page): fixed estimation of the number of
3852 lines in a string to be paged to simply count newlines. This
3856 lines in a string to be paged to simply count newlines. This
3853 prevents over-guessing due to embedded escape sequences. A better
3857 prevents over-guessing due to embedded escape sequences. A better
3854 long-term solution would involve stripping out the control chars
3858 long-term solution would involve stripping out the control chars
3855 for the count, but it's potentially so expensive I just don't
3859 for the count, but it's potentially so expensive I just don't
3856 think it's worth doing.
3860 think it's worth doing.
3857
3861
3858 2002-12-19 *** Released version 0.2.14pre50
3862 2002-12-19 *** Released version 0.2.14pre50
3859
3863
3860 2002-12-19 Fernando Perez <fperez@colorado.edu>
3864 2002-12-19 Fernando Perez <fperez@colorado.edu>
3861
3865
3862 * tools/release (version): Changed release scripts to inform
3866 * tools/release (version): Changed release scripts to inform
3863 Andrea and build a NEWS file with a list of recent changes.
3867 Andrea and build a NEWS file with a list of recent changes.
3864
3868
3865 * IPython/ColorANSI.py (__all__): changed terminal detection
3869 * IPython/ColorANSI.py (__all__): changed terminal detection
3866 code. Seems to work better for xterms without breaking
3870 code. Seems to work better for xterms without breaking
3867 konsole. Will need more testing to determine if WinXP and Mac OSX
3871 konsole. Will need more testing to determine if WinXP and Mac OSX
3868 also work ok.
3872 also work ok.
3869
3873
3870 2002-12-18 *** Released version 0.2.14pre49
3874 2002-12-18 *** Released version 0.2.14pre49
3871
3875
3872 2002-12-18 Fernando Perez <fperez@colorado.edu>
3876 2002-12-18 Fernando Perez <fperez@colorado.edu>
3873
3877
3874 * Docs: added new info about Mac OSX, from Andrea.
3878 * Docs: added new info about Mac OSX, from Andrea.
3875
3879
3876 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3880 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3877 allow direct plotting of python strings whose format is the same
3881 allow direct plotting of python strings whose format is the same
3878 of gnuplot data files.
3882 of gnuplot data files.
3879
3883
3880 2002-12-16 Fernando Perez <fperez@colorado.edu>
3884 2002-12-16 Fernando Perez <fperez@colorado.edu>
3881
3885
3882 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3886 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3883 value of exit question to be acknowledged.
3887 value of exit question to be acknowledged.
3884
3888
3885 2002-12-03 Fernando Perez <fperez@colorado.edu>
3889 2002-12-03 Fernando Perez <fperez@colorado.edu>
3886
3890
3887 * IPython/ipmaker.py: removed generators, which had been added
3891 * IPython/ipmaker.py: removed generators, which had been added
3888 by mistake in an earlier debugging run. This was causing trouble
3892 by mistake in an earlier debugging run. This was causing trouble
3889 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3893 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3890 for pointing this out.
3894 for pointing this out.
3891
3895
3892 2002-11-17 Fernando Perez <fperez@colorado.edu>
3896 2002-11-17 Fernando Perez <fperez@colorado.edu>
3893
3897
3894 * Manual: updated the Gnuplot section.
3898 * Manual: updated the Gnuplot section.
3895
3899
3896 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3900 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3897 a much better split of what goes in Runtime and what goes in
3901 a much better split of what goes in Runtime and what goes in
3898 Interactive.
3902 Interactive.
3899
3903
3900 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3904 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3901 being imported from iplib.
3905 being imported from iplib.
3902
3906
3903 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3907 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3904 for command-passing. Now the global Gnuplot instance is called
3908 for command-passing. Now the global Gnuplot instance is called
3905 'gp' instead of 'g', which was really a far too fragile and
3909 'gp' instead of 'g', which was really a far too fragile and
3906 common name.
3910 common name.
3907
3911
3908 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3912 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3909 bounding boxes generated by Gnuplot for square plots.
3913 bounding boxes generated by Gnuplot for square plots.
3910
3914
3911 * IPython/genutils.py (popkey): new function added. I should
3915 * IPython/genutils.py (popkey): new function added. I should
3912 suggest this on c.l.py as a dict method, it seems useful.
3916 suggest this on c.l.py as a dict method, it seems useful.
3913
3917
3914 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3918 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3915 to transparently handle PostScript generation. MUCH better than
3919 to transparently handle PostScript generation. MUCH better than
3916 the previous plot_eps/replot_eps (which I removed now). The code
3920 the previous plot_eps/replot_eps (which I removed now). The code
3917 is also fairly clean and well documented now (including
3921 is also fairly clean and well documented now (including
3918 docstrings).
3922 docstrings).
3919
3923
3920 2002-11-13 Fernando Perez <fperez@colorado.edu>
3924 2002-11-13 Fernando Perez <fperez@colorado.edu>
3921
3925
3922 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3926 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3923 (inconsistent with options).
3927 (inconsistent with options).
3924
3928
3925 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3929 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3926 manually disabled, I don't know why. Fixed it.
3930 manually disabled, I don't know why. Fixed it.
3927 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3931 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3928 eps output.
3932 eps output.
3929
3933
3930 2002-11-12 Fernando Perez <fperez@colorado.edu>
3934 2002-11-12 Fernando Perez <fperez@colorado.edu>
3931
3935
3932 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3936 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3933 don't propagate up to caller. Fixes crash reported by François
3937 don't propagate up to caller. Fixes crash reported by François
3934 Pinard.
3938 Pinard.
3935
3939
3936 2002-11-09 Fernando Perez <fperez@colorado.edu>
3940 2002-11-09 Fernando Perez <fperez@colorado.edu>
3937
3941
3938 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3942 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3939 history file for new users.
3943 history file for new users.
3940 (make_IPython): fixed bug where initial install would leave the
3944 (make_IPython): fixed bug where initial install would leave the
3941 user running in the .ipython dir.
3945 user running in the .ipython dir.
3942 (make_IPython): fixed bug where config dir .ipython would be
3946 (make_IPython): fixed bug where config dir .ipython would be
3943 created regardless of the given -ipythondir option. Thanks to Cory
3947 created regardless of the given -ipythondir option. Thanks to Cory
3944 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3948 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3945
3949
3946 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3950 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3947 type confirmations. Will need to use it in all of IPython's code
3951 type confirmations. Will need to use it in all of IPython's code
3948 consistently.
3952 consistently.
3949
3953
3950 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3954 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3951 context to print 31 lines instead of the default 5. This will make
3955 context to print 31 lines instead of the default 5. This will make
3952 the crash reports extremely detailed in case the problem is in
3956 the crash reports extremely detailed in case the problem is in
3953 libraries I don't have access to.
3957 libraries I don't have access to.
3954
3958
3955 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3959 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3956 line of defense' code to still crash, but giving users fair
3960 line of defense' code to still crash, but giving users fair
3957 warning. I don't want internal errors to go unreported: if there's
3961 warning. I don't want internal errors to go unreported: if there's
3958 an internal problem, IPython should crash and generate a full
3962 an internal problem, IPython should crash and generate a full
3959 report.
3963 report.
3960
3964
3961 2002-11-08 Fernando Perez <fperez@colorado.edu>
3965 2002-11-08 Fernando Perez <fperez@colorado.edu>
3962
3966
3963 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3967 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3964 otherwise uncaught exceptions which can appear if people set
3968 otherwise uncaught exceptions which can appear if people set
3965 sys.stdout to something badly broken. Thanks to a crash report
3969 sys.stdout to something badly broken. Thanks to a crash report
3966 from henni-AT-mail.brainbot.com.
3970 from henni-AT-mail.brainbot.com.
3967
3971
3968 2002-11-04 Fernando Perez <fperez@colorado.edu>
3972 2002-11-04 Fernando Perez <fperez@colorado.edu>
3969
3973
3970 * IPython/iplib.py (InteractiveShell.interact): added
3974 * IPython/iplib.py (InteractiveShell.interact): added
3971 __IPYTHON__active to the builtins. It's a flag which goes on when
3975 __IPYTHON__active to the builtins. It's a flag which goes on when
3972 the interaction starts and goes off again when it stops. This
3976 the interaction starts and goes off again when it stops. This
3973 allows embedding code to detect being inside IPython. Before this
3977 allows embedding code to detect being inside IPython. Before this
3974 was done via __IPYTHON__, but that only shows that an IPython
3978 was done via __IPYTHON__, but that only shows that an IPython
3975 instance has been created.
3979 instance has been created.
3976
3980
3977 * IPython/Magic.py (Magic.magic_env): I realized that in a
3981 * IPython/Magic.py (Magic.magic_env): I realized that in a
3978 UserDict, instance.data holds the data as a normal dict. So I
3982 UserDict, instance.data holds the data as a normal dict. So I
3979 modified @env to return os.environ.data instead of rebuilding a
3983 modified @env to return os.environ.data instead of rebuilding a
3980 dict by hand.
3984 dict by hand.
3981
3985
3982 2002-11-02 Fernando Perez <fperez@colorado.edu>
3986 2002-11-02 Fernando Perez <fperez@colorado.edu>
3983
3987
3984 * IPython/genutils.py (warn): changed so that level 1 prints no
3988 * IPython/genutils.py (warn): changed so that level 1 prints no
3985 header. Level 2 is now the default (with 'WARNING' header, as
3989 header. Level 2 is now the default (with 'WARNING' header, as
3986 before). I think I tracked all places where changes were needed in
3990 before). I think I tracked all places where changes were needed in
3987 IPython, but outside code using the old level numbering may have
3991 IPython, but outside code using the old level numbering may have
3988 broken.
3992 broken.
3989
3993
3990 * IPython/iplib.py (InteractiveShell.runcode): added this to
3994 * IPython/iplib.py (InteractiveShell.runcode): added this to
3991 handle the tracebacks in SystemExit traps correctly. The previous
3995 handle the tracebacks in SystemExit traps correctly. The previous
3992 code (through interact) was printing more of the stack than
3996 code (through interact) was printing more of the stack than
3993 necessary, showing IPython internal code to the user.
3997 necessary, showing IPython internal code to the user.
3994
3998
3995 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3999 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3996 default. Now that the default at the confirmation prompt is yes,
4000 default. Now that the default at the confirmation prompt is yes,
3997 it's not so intrusive. François' argument that ipython sessions
4001 it's not so intrusive. François' argument that ipython sessions
3998 tend to be complex enough not to lose them from an accidental C-d,
4002 tend to be complex enough not to lose them from an accidental C-d,
3999 is a valid one.
4003 is a valid one.
4000
4004
4001 * IPython/iplib.py (InteractiveShell.interact): added a
4005 * IPython/iplib.py (InteractiveShell.interact): added a
4002 showtraceback() call to the SystemExit trap, and modified the exit
4006 showtraceback() call to the SystemExit trap, and modified the exit
4003 confirmation to have yes as the default.
4007 confirmation to have yes as the default.
4004
4008
4005 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4009 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4006 this file. It's been gone from the code for a long time, this was
4010 this file. It's been gone from the code for a long time, this was
4007 simply leftover junk.
4011 simply leftover junk.
4008
4012
4009 2002-11-01 Fernando Perez <fperez@colorado.edu>
4013 2002-11-01 Fernando Perez <fperez@colorado.edu>
4010
4014
4011 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4015 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4012 added. If set, IPython now traps EOF and asks for
4016 added. If set, IPython now traps EOF and asks for
4013 confirmation. After a request by François Pinard.
4017 confirmation. After a request by François Pinard.
4014
4018
4015 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4019 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4016 of @abort, and with a new (better) mechanism for handling the
4020 of @abort, and with a new (better) mechanism for handling the
4017 exceptions.
4021 exceptions.
4018
4022
4019 2002-10-27 Fernando Perez <fperez@colorado.edu>
4023 2002-10-27 Fernando Perez <fperez@colorado.edu>
4020
4024
4021 * IPython/usage.py (__doc__): updated the --help information and
4025 * IPython/usage.py (__doc__): updated the --help information and
4022 the ipythonrc file to indicate that -log generates
4026 the ipythonrc file to indicate that -log generates
4023 ./ipython.log. Also fixed the corresponding info in @logstart.
4027 ./ipython.log. Also fixed the corresponding info in @logstart.
4024 This and several other fixes in the manuals thanks to reports by
4028 This and several other fixes in the manuals thanks to reports by
4025 François Pinard <pinard-AT-iro.umontreal.ca>.
4029 François Pinard <pinard-AT-iro.umontreal.ca>.
4026
4030
4027 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4031 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4028 refer to @logstart (instead of @log, which doesn't exist).
4032 refer to @logstart (instead of @log, which doesn't exist).
4029
4033
4030 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4034 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4031 AttributeError crash. Thanks to Christopher Armstrong
4035 AttributeError crash. Thanks to Christopher Armstrong
4032 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4036 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4033 introduced recently (in 0.2.14pre37) with the fix to the eval
4037 introduced recently (in 0.2.14pre37) with the fix to the eval
4034 problem mentioned below.
4038 problem mentioned below.
4035
4039
4036 2002-10-17 Fernando Perez <fperez@colorado.edu>
4040 2002-10-17 Fernando Perez <fperez@colorado.edu>
4037
4041
4038 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4042 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4039 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4043 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4040
4044
4041 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4045 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4042 this function to fix a problem reported by Alex Schmolck. He saw
4046 this function to fix a problem reported by Alex Schmolck. He saw
4043 it with list comprehensions and generators, which were getting
4047 it with list comprehensions and generators, which were getting
4044 called twice. The real problem was an 'eval' call in testing for
4048 called twice. The real problem was an 'eval' call in testing for
4045 automagic which was evaluating the input line silently.
4049 automagic which was evaluating the input line silently.
4046
4050
4047 This is a potentially very nasty bug, if the input has side
4051 This is a potentially very nasty bug, if the input has side
4048 effects which must not be repeated. The code is much cleaner now,
4052 effects which must not be repeated. The code is much cleaner now,
4049 without any blanket 'except' left and with a regexp test for
4053 without any blanket 'except' left and with a regexp test for
4050 actual function names.
4054 actual function names.
4051
4055
4052 But an eval remains, which I'm not fully comfortable with. I just
4056 But an eval remains, which I'm not fully comfortable with. I just
4053 don't know how to find out if an expression could be a callable in
4057 don't know how to find out if an expression could be a callable in
4054 the user's namespace without doing an eval on the string. However
4058 the user's namespace without doing an eval on the string. However
4055 that string is now much more strictly checked so that no code
4059 that string is now much more strictly checked so that no code
4056 slips by, so the eval should only happen for things that can
4060 slips by, so the eval should only happen for things that can
4057 really be only function/method names.
4061 really be only function/method names.
4058
4062
4059 2002-10-15 Fernando Perez <fperez@colorado.edu>
4063 2002-10-15 Fernando Perez <fperez@colorado.edu>
4060
4064
4061 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4065 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4062 OSX information to main manual, removed README_Mac_OSX file from
4066 OSX information to main manual, removed README_Mac_OSX file from
4063 distribution. Also updated credits for recent additions.
4067 distribution. Also updated credits for recent additions.
4064
4068
4065 2002-10-10 Fernando Perez <fperez@colorado.edu>
4069 2002-10-10 Fernando Perez <fperez@colorado.edu>
4066
4070
4067 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4071 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4068 terminal-related issues. Many thanks to Andrea Riciputi
4072 terminal-related issues. Many thanks to Andrea Riciputi
4069 <andrea.riciputi-AT-libero.it> for writing it.
4073 <andrea.riciputi-AT-libero.it> for writing it.
4070
4074
4071 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4075 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4072 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4076 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4073
4077
4074 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4078 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4075 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4079 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4076 <syver-en-AT-online.no> who both submitted patches for this problem.
4080 <syver-en-AT-online.no> who both submitted patches for this problem.
4077
4081
4078 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4082 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4079 global embedding to make sure that things don't overwrite user
4083 global embedding to make sure that things don't overwrite user
4080 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4084 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4081
4085
4082 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4086 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4083 compatibility. Thanks to Hayden Callow
4087 compatibility. Thanks to Hayden Callow
4084 <h.callow-AT-elec.canterbury.ac.nz>
4088 <h.callow-AT-elec.canterbury.ac.nz>
4085
4089
4086 2002-10-04 Fernando Perez <fperez@colorado.edu>
4090 2002-10-04 Fernando Perez <fperez@colorado.edu>
4087
4091
4088 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4092 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4089 Gnuplot.File objects.
4093 Gnuplot.File objects.
4090
4094
4091 2002-07-23 Fernando Perez <fperez@colorado.edu>
4095 2002-07-23 Fernando Perez <fperez@colorado.edu>
4092
4096
4093 * IPython/genutils.py (timing): Added timings() and timing() for
4097 * IPython/genutils.py (timing): Added timings() and timing() for
4094 quick access to the most commonly needed data, the execution
4098 quick access to the most commonly needed data, the execution
4095 times. Old timing() renamed to timings_out().
4099 times. Old timing() renamed to timings_out().
4096
4100
4097 2002-07-18 Fernando Perez <fperez@colorado.edu>
4101 2002-07-18 Fernando Perez <fperez@colorado.edu>
4098
4102
4099 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4103 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4100 bug with nested instances disrupting the parent's tab completion.
4104 bug with nested instances disrupting the parent's tab completion.
4101
4105
4102 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4106 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4103 all_completions code to begin the emacs integration.
4107 all_completions code to begin the emacs integration.
4104
4108
4105 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4109 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4106 argument to allow titling individual arrays when plotting.
4110 argument to allow titling individual arrays when plotting.
4107
4111
4108 2002-07-15 Fernando Perez <fperez@colorado.edu>
4112 2002-07-15 Fernando Perez <fperez@colorado.edu>
4109
4113
4110 * setup.py (make_shortcut): changed to retrieve the value of
4114 * setup.py (make_shortcut): changed to retrieve the value of
4111 'Program Files' directory from the registry (this value changes in
4115 'Program Files' directory from the registry (this value changes in
4112 non-english versions of Windows). Thanks to Thomas Fanslau
4116 non-english versions of Windows). Thanks to Thomas Fanslau
4113 <tfanslau-AT-gmx.de> for the report.
4117 <tfanslau-AT-gmx.de> for the report.
4114
4118
4115 2002-07-10 Fernando Perez <fperez@colorado.edu>
4119 2002-07-10 Fernando Perez <fperez@colorado.edu>
4116
4120
4117 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4121 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4118 a bug in pdb, which crashes if a line with only whitespace is
4122 a bug in pdb, which crashes if a line with only whitespace is
4119 entered. Bug report submitted to sourceforge.
4123 entered. Bug report submitted to sourceforge.
4120
4124
4121 2002-07-09 Fernando Perez <fperez@colorado.edu>
4125 2002-07-09 Fernando Perez <fperez@colorado.edu>
4122
4126
4123 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4127 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4124 reporting exceptions (it's a bug in inspect.py, I just set a
4128 reporting exceptions (it's a bug in inspect.py, I just set a
4125 workaround).
4129 workaround).
4126
4130
4127 2002-07-08 Fernando Perez <fperez@colorado.edu>
4131 2002-07-08 Fernando Perez <fperez@colorado.edu>
4128
4132
4129 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4133 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4130 __IPYTHON__ in __builtins__ to show up in user_ns.
4134 __IPYTHON__ in __builtins__ to show up in user_ns.
4131
4135
4132 2002-07-03 Fernando Perez <fperez@colorado.edu>
4136 2002-07-03 Fernando Perez <fperez@colorado.edu>
4133
4137
4134 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4138 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4135 name from @gp_set_instance to @gp_set_default.
4139 name from @gp_set_instance to @gp_set_default.
4136
4140
4137 * IPython/ipmaker.py (make_IPython): default editor value set to
4141 * IPython/ipmaker.py (make_IPython): default editor value set to
4138 '0' (a string), to match the rc file. Otherwise will crash when
4142 '0' (a string), to match the rc file. Otherwise will crash when
4139 .strip() is called on it.
4143 .strip() is called on it.
4140
4144
4141
4145
4142 2002-06-28 Fernando Perez <fperez@colorado.edu>
4146 2002-06-28 Fernando Perez <fperez@colorado.edu>
4143
4147
4144 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4148 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4145 of files in current directory when a file is executed via
4149 of files in current directory when a file is executed via
4146 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4150 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4147
4151
4148 * setup.py (manfiles): fix for rpm builds, submitted by RA
4152 * setup.py (manfiles): fix for rpm builds, submitted by RA
4149 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4153 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4150
4154
4151 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4155 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4152 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4156 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4153 string!). A. Schmolck caught this one.
4157 string!). A. Schmolck caught this one.
4154
4158
4155 2002-06-27 Fernando Perez <fperez@colorado.edu>
4159 2002-06-27 Fernando Perez <fperez@colorado.edu>
4156
4160
4157 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4161 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4158 defined files at the cmd line. __name__ wasn't being set to
4162 defined files at the cmd line. __name__ wasn't being set to
4159 __main__.
4163 __main__.
4160
4164
4161 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4165 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4162 regular lists and tuples besides Numeric arrays.
4166 regular lists and tuples besides Numeric arrays.
4163
4167
4164 * IPython/Prompts.py (CachedOutput.__call__): Added output
4168 * IPython/Prompts.py (CachedOutput.__call__): Added output
4165 supression for input ending with ';'. Similar to Mathematica and
4169 supression for input ending with ';'. Similar to Mathematica and
4166 Matlab. The _* vars and Out[] list are still updated, just like
4170 Matlab. The _* vars and Out[] list are still updated, just like
4167 Mathematica behaves.
4171 Mathematica behaves.
4168
4172
4169 2002-06-25 Fernando Perez <fperez@colorado.edu>
4173 2002-06-25 Fernando Perez <fperez@colorado.edu>
4170
4174
4171 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4175 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4172 .ini extensions for profiels under Windows.
4176 .ini extensions for profiels under Windows.
4173
4177
4174 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4178 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4175 string form. Fix contributed by Alexander Schmolck
4179 string form. Fix contributed by Alexander Schmolck
4176 <a.schmolck-AT-gmx.net>
4180 <a.schmolck-AT-gmx.net>
4177
4181
4178 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4182 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4179 pre-configured Gnuplot instance.
4183 pre-configured Gnuplot instance.
4180
4184
4181 2002-06-21 Fernando Perez <fperez@colorado.edu>
4185 2002-06-21 Fernando Perez <fperez@colorado.edu>
4182
4186
4183 * IPython/numutils.py (exp_safe): new function, works around the
4187 * IPython/numutils.py (exp_safe): new function, works around the
4184 underflow problems in Numeric.
4188 underflow problems in Numeric.
4185 (log2): New fn. Safe log in base 2: returns exact integer answer
4189 (log2): New fn. Safe log in base 2: returns exact integer answer
4186 for exact integer powers of 2.
4190 for exact integer powers of 2.
4187
4191
4188 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4192 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4189 properly.
4193 properly.
4190
4194
4191 2002-06-20 Fernando Perez <fperez@colorado.edu>
4195 2002-06-20 Fernando Perez <fperez@colorado.edu>
4192
4196
4193 * IPython/genutils.py (timing): new function like
4197 * IPython/genutils.py (timing): new function like
4194 Mathematica's. Similar to time_test, but returns more info.
4198 Mathematica's. Similar to time_test, but returns more info.
4195
4199
4196 2002-06-18 Fernando Perez <fperez@colorado.edu>
4200 2002-06-18 Fernando Perez <fperez@colorado.edu>
4197
4201
4198 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4202 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4199 according to Mike Heeter's suggestions.
4203 according to Mike Heeter's suggestions.
4200
4204
4201 2002-06-16 Fernando Perez <fperez@colorado.edu>
4205 2002-06-16 Fernando Perez <fperez@colorado.edu>
4202
4206
4203 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4207 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4204 system. GnuplotMagic is gone as a user-directory option. New files
4208 system. GnuplotMagic is gone as a user-directory option. New files
4205 make it easier to use all the gnuplot stuff both from external
4209 make it easier to use all the gnuplot stuff both from external
4206 programs as well as from IPython. Had to rewrite part of
4210 programs as well as from IPython. Had to rewrite part of
4207 hardcopy() b/c of a strange bug: often the ps files simply don't
4211 hardcopy() b/c of a strange bug: often the ps files simply don't
4208 get created, and require a repeat of the command (often several
4212 get created, and require a repeat of the command (often several
4209 times).
4213 times).
4210
4214
4211 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4215 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4212 resolve output channel at call time, so that if sys.stderr has
4216 resolve output channel at call time, so that if sys.stderr has
4213 been redirected by user this gets honored.
4217 been redirected by user this gets honored.
4214
4218
4215 2002-06-13 Fernando Perez <fperez@colorado.edu>
4219 2002-06-13 Fernando Perez <fperez@colorado.edu>
4216
4220
4217 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4221 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4218 IPShell. Kept a copy with the old names to avoid breaking people's
4222 IPShell. Kept a copy with the old names to avoid breaking people's
4219 embedded code.
4223 embedded code.
4220
4224
4221 * IPython/ipython: simplified it to the bare minimum after
4225 * IPython/ipython: simplified it to the bare minimum after
4222 Holger's suggestions. Added info about how to use it in
4226 Holger's suggestions. Added info about how to use it in
4223 PYTHONSTARTUP.
4227 PYTHONSTARTUP.
4224
4228
4225 * IPython/Shell.py (IPythonShell): changed the options passing
4229 * IPython/Shell.py (IPythonShell): changed the options passing
4226 from a string with funky %s replacements to a straight list. Maybe
4230 from a string with funky %s replacements to a straight list. Maybe
4227 a bit more typing, but it follows sys.argv conventions, so there's
4231 a bit more typing, but it follows sys.argv conventions, so there's
4228 less special-casing to remember.
4232 less special-casing to remember.
4229
4233
4230 2002-06-12 Fernando Perez <fperez@colorado.edu>
4234 2002-06-12 Fernando Perez <fperez@colorado.edu>
4231
4235
4232 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4236 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4233 command. Thanks to a suggestion by Mike Heeter.
4237 command. Thanks to a suggestion by Mike Heeter.
4234 (Magic.magic_pfile): added behavior to look at filenames if given
4238 (Magic.magic_pfile): added behavior to look at filenames if given
4235 arg is not a defined object.
4239 arg is not a defined object.
4236 (Magic.magic_save): New @save function to save code snippets. Also
4240 (Magic.magic_save): New @save function to save code snippets. Also
4237 a Mike Heeter idea.
4241 a Mike Heeter idea.
4238
4242
4239 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4243 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4240 plot() and replot(). Much more convenient now, especially for
4244 plot() and replot(). Much more convenient now, especially for
4241 interactive use.
4245 interactive use.
4242
4246
4243 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4247 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4244 filenames.
4248 filenames.
4245
4249
4246 2002-06-02 Fernando Perez <fperez@colorado.edu>
4250 2002-06-02 Fernando Perez <fperez@colorado.edu>
4247
4251
4248 * IPython/Struct.py (Struct.__init__): modified to admit
4252 * IPython/Struct.py (Struct.__init__): modified to admit
4249 initialization via another struct.
4253 initialization via another struct.
4250
4254
4251 * IPython/genutils.py (SystemExec.__init__): New stateful
4255 * IPython/genutils.py (SystemExec.__init__): New stateful
4252 interface to xsys and bq. Useful for writing system scripts.
4256 interface to xsys and bq. Useful for writing system scripts.
4253
4257
4254 2002-05-30 Fernando Perez <fperez@colorado.edu>
4258 2002-05-30 Fernando Perez <fperez@colorado.edu>
4255
4259
4256 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4260 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4257 documents. This will make the user download smaller (it's getting
4261 documents. This will make the user download smaller (it's getting
4258 too big).
4262 too big).
4259
4263
4260 2002-05-29 Fernando Perez <fperez@colorado.edu>
4264 2002-05-29 Fernando Perez <fperez@colorado.edu>
4261
4265
4262 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4266 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4263 fix problems with shelve and pickle. Seems to work, but I don't
4267 fix problems with shelve and pickle. Seems to work, but I don't
4264 know if corner cases break it. Thanks to Mike Heeter
4268 know if corner cases break it. Thanks to Mike Heeter
4265 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4269 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4266
4270
4267 2002-05-24 Fernando Perez <fperez@colorado.edu>
4271 2002-05-24 Fernando Perez <fperez@colorado.edu>
4268
4272
4269 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4273 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4270 macros having broken.
4274 macros having broken.
4271
4275
4272 2002-05-21 Fernando Perez <fperez@colorado.edu>
4276 2002-05-21 Fernando Perez <fperez@colorado.edu>
4273
4277
4274 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4278 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4275 introduced logging bug: all history before logging started was
4279 introduced logging bug: all history before logging started was
4276 being written one character per line! This came from the redesign
4280 being written one character per line! This came from the redesign
4277 of the input history as a special list which slices to strings,
4281 of the input history as a special list which slices to strings,
4278 not to lists.
4282 not to lists.
4279
4283
4280 2002-05-20 Fernando Perez <fperez@colorado.edu>
4284 2002-05-20 Fernando Perez <fperez@colorado.edu>
4281
4285
4282 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4286 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4283 be an attribute of all classes in this module. The design of these
4287 be an attribute of all classes in this module. The design of these
4284 classes needs some serious overhauling.
4288 classes needs some serious overhauling.
4285
4289
4286 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4290 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4287 which was ignoring '_' in option names.
4291 which was ignoring '_' in option names.
4288
4292
4289 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4293 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4290 'Verbose_novars' to 'Context' and made it the new default. It's a
4294 'Verbose_novars' to 'Context' and made it the new default. It's a
4291 bit more readable and also safer than verbose.
4295 bit more readable and also safer than verbose.
4292
4296
4293 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4297 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4294 triple-quoted strings.
4298 triple-quoted strings.
4295
4299
4296 * IPython/OInspect.py (__all__): new module exposing the object
4300 * IPython/OInspect.py (__all__): new module exposing the object
4297 introspection facilities. Now the corresponding magics are dummy
4301 introspection facilities. Now the corresponding magics are dummy
4298 wrappers around this. Having this module will make it much easier
4302 wrappers around this. Having this module will make it much easier
4299 to put these functions into our modified pdb.
4303 to put these functions into our modified pdb.
4300 This new object inspector system uses the new colorizing module,
4304 This new object inspector system uses the new colorizing module,
4301 so source code and other things are nicely syntax highlighted.
4305 so source code and other things are nicely syntax highlighted.
4302
4306
4303 2002-05-18 Fernando Perez <fperez@colorado.edu>
4307 2002-05-18 Fernando Perez <fperez@colorado.edu>
4304
4308
4305 * IPython/ColorANSI.py: Split the coloring tools into a separate
4309 * IPython/ColorANSI.py: Split the coloring tools into a separate
4306 module so I can use them in other code easier (they were part of
4310 module so I can use them in other code easier (they were part of
4307 ultraTB).
4311 ultraTB).
4308
4312
4309 2002-05-17 Fernando Perez <fperez@colorado.edu>
4313 2002-05-17 Fernando Perez <fperez@colorado.edu>
4310
4314
4311 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4315 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4312 fixed it to set the global 'g' also to the called instance, as
4316 fixed it to set the global 'g' also to the called instance, as
4313 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4317 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4314 user's 'g' variables).
4318 user's 'g' variables).
4315
4319
4316 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4320 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4317 global variables (aliases to _ih,_oh) so that users which expect
4321 global variables (aliases to _ih,_oh) so that users which expect
4318 In[5] or Out[7] to work aren't unpleasantly surprised.
4322 In[5] or Out[7] to work aren't unpleasantly surprised.
4319 (InputList.__getslice__): new class to allow executing slices of
4323 (InputList.__getslice__): new class to allow executing slices of
4320 input history directly. Very simple class, complements the use of
4324 input history directly. Very simple class, complements the use of
4321 macros.
4325 macros.
4322
4326
4323 2002-05-16 Fernando Perez <fperez@colorado.edu>
4327 2002-05-16 Fernando Perez <fperez@colorado.edu>
4324
4328
4325 * setup.py (docdirbase): make doc directory be just doc/IPython
4329 * setup.py (docdirbase): make doc directory be just doc/IPython
4326 without version numbers, it will reduce clutter for users.
4330 without version numbers, it will reduce clutter for users.
4327
4331
4328 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4332 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4329 execfile call to prevent possible memory leak. See for details:
4333 execfile call to prevent possible memory leak. See for details:
4330 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4334 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4331
4335
4332 2002-05-15 Fernando Perez <fperez@colorado.edu>
4336 2002-05-15 Fernando Perez <fperez@colorado.edu>
4333
4337
4334 * IPython/Magic.py (Magic.magic_psource): made the object
4338 * IPython/Magic.py (Magic.magic_psource): made the object
4335 introspection names be more standard: pdoc, pdef, pfile and
4339 introspection names be more standard: pdoc, pdef, pfile and
4336 psource. They all print/page their output, and it makes
4340 psource. They all print/page their output, and it makes
4337 remembering them easier. Kept old names for compatibility as
4341 remembering them easier. Kept old names for compatibility as
4338 aliases.
4342 aliases.
4339
4343
4340 2002-05-14 Fernando Perez <fperez@colorado.edu>
4344 2002-05-14 Fernando Perez <fperez@colorado.edu>
4341
4345
4342 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4346 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4343 what the mouse problem was. The trick is to use gnuplot with temp
4347 what the mouse problem was. The trick is to use gnuplot with temp
4344 files and NOT with pipes (for data communication), because having
4348 files and NOT with pipes (for data communication), because having
4345 both pipes and the mouse on is bad news.
4349 both pipes and the mouse on is bad news.
4346
4350
4347 2002-05-13 Fernando Perez <fperez@colorado.edu>
4351 2002-05-13 Fernando Perez <fperez@colorado.edu>
4348
4352
4349 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4353 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4350 bug. Information would be reported about builtins even when
4354 bug. Information would be reported about builtins even when
4351 user-defined functions overrode them.
4355 user-defined functions overrode them.
4352
4356
4353 2002-05-11 Fernando Perez <fperez@colorado.edu>
4357 2002-05-11 Fernando Perez <fperez@colorado.edu>
4354
4358
4355 * IPython/__init__.py (__all__): removed FlexCompleter from
4359 * IPython/__init__.py (__all__): removed FlexCompleter from
4356 __all__ so that things don't fail in platforms without readline.
4360 __all__ so that things don't fail in platforms without readline.
4357
4361
4358 2002-05-10 Fernando Perez <fperez@colorado.edu>
4362 2002-05-10 Fernando Perez <fperez@colorado.edu>
4359
4363
4360 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4364 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4361 it requires Numeric, effectively making Numeric a dependency for
4365 it requires Numeric, effectively making Numeric a dependency for
4362 IPython.
4366 IPython.
4363
4367
4364 * Released 0.2.13
4368 * Released 0.2.13
4365
4369
4366 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4370 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4367 profiler interface. Now all the major options from the profiler
4371 profiler interface. Now all the major options from the profiler
4368 module are directly supported in IPython, both for single
4372 module are directly supported in IPython, both for single
4369 expressions (@prun) and for full programs (@run -p).
4373 expressions (@prun) and for full programs (@run -p).
4370
4374
4371 2002-05-09 Fernando Perez <fperez@colorado.edu>
4375 2002-05-09 Fernando Perez <fperez@colorado.edu>
4372
4376
4373 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4377 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4374 magic properly formatted for screen.
4378 magic properly formatted for screen.
4375
4379
4376 * setup.py (make_shortcut): Changed things to put pdf version in
4380 * setup.py (make_shortcut): Changed things to put pdf version in
4377 doc/ instead of doc/manual (had to change lyxport a bit).
4381 doc/ instead of doc/manual (had to change lyxport a bit).
4378
4382
4379 * IPython/Magic.py (Profile.string_stats): made profile runs go
4383 * IPython/Magic.py (Profile.string_stats): made profile runs go
4380 through pager (they are long and a pager allows searching, saving,
4384 through pager (they are long and a pager allows searching, saving,
4381 etc.)
4385 etc.)
4382
4386
4383 2002-05-08 Fernando Perez <fperez@colorado.edu>
4387 2002-05-08 Fernando Perez <fperez@colorado.edu>
4384
4388
4385 * Released 0.2.12
4389 * Released 0.2.12
4386
4390
4387 2002-05-06 Fernando Perez <fperez@colorado.edu>
4391 2002-05-06 Fernando Perez <fperez@colorado.edu>
4388
4392
4389 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4393 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4390 introduced); 'hist n1 n2' was broken.
4394 introduced); 'hist n1 n2' was broken.
4391 (Magic.magic_pdb): added optional on/off arguments to @pdb
4395 (Magic.magic_pdb): added optional on/off arguments to @pdb
4392 (Magic.magic_run): added option -i to @run, which executes code in
4396 (Magic.magic_run): added option -i to @run, which executes code in
4393 the IPython namespace instead of a clean one. Also added @irun as
4397 the IPython namespace instead of a clean one. Also added @irun as
4394 an alias to @run -i.
4398 an alias to @run -i.
4395
4399
4396 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4400 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4397 fixed (it didn't really do anything, the namespaces were wrong).
4401 fixed (it didn't really do anything, the namespaces were wrong).
4398
4402
4399 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4403 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4400
4404
4401 * IPython/__init__.py (__all__): Fixed package namespace, now
4405 * IPython/__init__.py (__all__): Fixed package namespace, now
4402 'import IPython' does give access to IPython.<all> as
4406 'import IPython' does give access to IPython.<all> as
4403 expected. Also renamed __release__ to Release.
4407 expected. Also renamed __release__ to Release.
4404
4408
4405 * IPython/Debugger.py (__license__): created new Pdb class which
4409 * IPython/Debugger.py (__license__): created new Pdb class which
4406 functions like a drop-in for the normal pdb.Pdb but does NOT
4410 functions like a drop-in for the normal pdb.Pdb but does NOT
4407 import readline by default. This way it doesn't muck up IPython's
4411 import readline by default. This way it doesn't muck up IPython's
4408 readline handling, and now tab-completion finally works in the
4412 readline handling, and now tab-completion finally works in the
4409 debugger -- sort of. It completes things globally visible, but the
4413 debugger -- sort of. It completes things globally visible, but the
4410 completer doesn't track the stack as pdb walks it. That's a bit
4414 completer doesn't track the stack as pdb walks it. That's a bit
4411 tricky, and I'll have to implement it later.
4415 tricky, and I'll have to implement it later.
4412
4416
4413 2002-05-05 Fernando Perez <fperez@colorado.edu>
4417 2002-05-05 Fernando Perez <fperez@colorado.edu>
4414
4418
4415 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4419 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4416 magic docstrings when printed via ? (explicit \'s were being
4420 magic docstrings when printed via ? (explicit \'s were being
4417 printed).
4421 printed).
4418
4422
4419 * IPython/ipmaker.py (make_IPython): fixed namespace
4423 * IPython/ipmaker.py (make_IPython): fixed namespace
4420 identification bug. Now variables loaded via logs or command-line
4424 identification bug. Now variables loaded via logs or command-line
4421 files are recognized in the interactive namespace by @who.
4425 files are recognized in the interactive namespace by @who.
4422
4426
4423 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4427 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4424 log replay system stemming from the string form of Structs.
4428 log replay system stemming from the string form of Structs.
4425
4429
4426 * IPython/Magic.py (Macro.__init__): improved macros to properly
4430 * IPython/Magic.py (Macro.__init__): improved macros to properly
4427 handle magic commands in them.
4431 handle magic commands in them.
4428 (Magic.magic_logstart): usernames are now expanded so 'logstart
4432 (Magic.magic_logstart): usernames are now expanded so 'logstart
4429 ~/mylog' now works.
4433 ~/mylog' now works.
4430
4434
4431 * IPython/iplib.py (complete): fixed bug where paths starting with
4435 * IPython/iplib.py (complete): fixed bug where paths starting with
4432 '/' would be completed as magic names.
4436 '/' would be completed as magic names.
4433
4437
4434 2002-05-04 Fernando Perez <fperez@colorado.edu>
4438 2002-05-04 Fernando Perez <fperez@colorado.edu>
4435
4439
4436 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4440 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4437 allow running full programs under the profiler's control.
4441 allow running full programs under the profiler's control.
4438
4442
4439 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4443 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4440 mode to report exceptions verbosely but without formatting
4444 mode to report exceptions verbosely but without formatting
4441 variables. This addresses the issue of ipython 'freezing' (it's
4445 variables. This addresses the issue of ipython 'freezing' (it's
4442 not frozen, but caught in an expensive formatting loop) when huge
4446 not frozen, but caught in an expensive formatting loop) when huge
4443 variables are in the context of an exception.
4447 variables are in the context of an exception.
4444 (VerboseTB.text): Added '--->' markers at line where exception was
4448 (VerboseTB.text): Added '--->' markers at line where exception was
4445 triggered. Much clearer to read, especially in NoColor modes.
4449 triggered. Much clearer to read, especially in NoColor modes.
4446
4450
4447 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4451 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4448 implemented in reverse when changing to the new parse_options().
4452 implemented in reverse when changing to the new parse_options().
4449
4453
4450 2002-05-03 Fernando Perez <fperez@colorado.edu>
4454 2002-05-03 Fernando Perez <fperez@colorado.edu>
4451
4455
4452 * IPython/Magic.py (Magic.parse_options): new function so that
4456 * IPython/Magic.py (Magic.parse_options): new function so that
4453 magics can parse options easier.
4457 magics can parse options easier.
4454 (Magic.magic_prun): new function similar to profile.run(),
4458 (Magic.magic_prun): new function similar to profile.run(),
4455 suggested by Chris Hart.
4459 suggested by Chris Hart.
4456 (Magic.magic_cd): fixed behavior so that it only changes if
4460 (Magic.magic_cd): fixed behavior so that it only changes if
4457 directory actually is in history.
4461 directory actually is in history.
4458
4462
4459 * IPython/usage.py (__doc__): added information about potential
4463 * IPython/usage.py (__doc__): added information about potential
4460 slowness of Verbose exception mode when there are huge data
4464 slowness of Verbose exception mode when there are huge data
4461 structures to be formatted (thanks to Archie Paulson).
4465 structures to be formatted (thanks to Archie Paulson).
4462
4466
4463 * IPython/ipmaker.py (make_IPython): Changed default logging
4467 * IPython/ipmaker.py (make_IPython): Changed default logging
4464 (when simply called with -log) to use curr_dir/ipython.log in
4468 (when simply called with -log) to use curr_dir/ipython.log in
4465 rotate mode. Fixed crash which was occuring with -log before
4469 rotate mode. Fixed crash which was occuring with -log before
4466 (thanks to Jim Boyle).
4470 (thanks to Jim Boyle).
4467
4471
4468 2002-05-01 Fernando Perez <fperez@colorado.edu>
4472 2002-05-01 Fernando Perez <fperez@colorado.edu>
4469
4473
4470 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4474 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4471 was nasty -- though somewhat of a corner case).
4475 was nasty -- though somewhat of a corner case).
4472
4476
4473 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4477 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4474 text (was a bug).
4478 text (was a bug).
4475
4479
4476 2002-04-30 Fernando Perez <fperez@colorado.edu>
4480 2002-04-30 Fernando Perez <fperez@colorado.edu>
4477
4481
4478 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4482 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4479 a print after ^D or ^C from the user so that the In[] prompt
4483 a print after ^D or ^C from the user so that the In[] prompt
4480 doesn't over-run the gnuplot one.
4484 doesn't over-run the gnuplot one.
4481
4485
4482 2002-04-29 Fernando Perez <fperez@colorado.edu>
4486 2002-04-29 Fernando Perez <fperez@colorado.edu>
4483
4487
4484 * Released 0.2.10
4488 * Released 0.2.10
4485
4489
4486 * IPython/__release__.py (version): get date dynamically.
4490 * IPython/__release__.py (version): get date dynamically.
4487
4491
4488 * Misc. documentation updates thanks to Arnd's comments. Also ran
4492 * Misc. documentation updates thanks to Arnd's comments. Also ran
4489 a full spellcheck on the manual (hadn't been done in a while).
4493 a full spellcheck on the manual (hadn't been done in a while).
4490
4494
4491 2002-04-27 Fernando Perez <fperez@colorado.edu>
4495 2002-04-27 Fernando Perez <fperez@colorado.edu>
4492
4496
4493 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4497 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4494 starting a log in mid-session would reset the input history list.
4498 starting a log in mid-session would reset the input history list.
4495
4499
4496 2002-04-26 Fernando Perez <fperez@colorado.edu>
4500 2002-04-26 Fernando Perez <fperez@colorado.edu>
4497
4501
4498 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4502 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4499 all files were being included in an update. Now anything in
4503 all files were being included in an update. Now anything in
4500 UserConfig that matches [A-Za-z]*.py will go (this excludes
4504 UserConfig that matches [A-Za-z]*.py will go (this excludes
4501 __init__.py)
4505 __init__.py)
4502
4506
4503 2002-04-25 Fernando Perez <fperez@colorado.edu>
4507 2002-04-25 Fernando Perez <fperez@colorado.edu>
4504
4508
4505 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4509 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4506 to __builtins__ so that any form of embedded or imported code can
4510 to __builtins__ so that any form of embedded or imported code can
4507 test for being inside IPython.
4511 test for being inside IPython.
4508
4512
4509 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4513 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4510 changed to GnuplotMagic because it's now an importable module,
4514 changed to GnuplotMagic because it's now an importable module,
4511 this makes the name follow that of the standard Gnuplot module.
4515 this makes the name follow that of the standard Gnuplot module.
4512 GnuplotMagic can now be loaded at any time in mid-session.
4516 GnuplotMagic can now be loaded at any time in mid-session.
4513
4517
4514 2002-04-24 Fernando Perez <fperez@colorado.edu>
4518 2002-04-24 Fernando Perez <fperez@colorado.edu>
4515
4519
4516 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4520 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4517 the globals (IPython has its own namespace) and the
4521 the globals (IPython has its own namespace) and the
4518 PhysicalQuantity stuff is much better anyway.
4522 PhysicalQuantity stuff is much better anyway.
4519
4523
4520 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4524 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4521 embedding example to standard user directory for
4525 embedding example to standard user directory for
4522 distribution. Also put it in the manual.
4526 distribution. Also put it in the manual.
4523
4527
4524 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4528 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4525 instance as first argument (so it doesn't rely on some obscure
4529 instance as first argument (so it doesn't rely on some obscure
4526 hidden global).
4530 hidden global).
4527
4531
4528 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4532 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4529 delimiters. While it prevents ().TAB from working, it allows
4533 delimiters. While it prevents ().TAB from working, it allows
4530 completions in open (... expressions. This is by far a more common
4534 completions in open (... expressions. This is by far a more common
4531 case.
4535 case.
4532
4536
4533 2002-04-23 Fernando Perez <fperez@colorado.edu>
4537 2002-04-23 Fernando Perez <fperez@colorado.edu>
4534
4538
4535 * IPython/Extensions/InterpreterPasteInput.py: new
4539 * IPython/Extensions/InterpreterPasteInput.py: new
4536 syntax-processing module for pasting lines with >>> or ... at the
4540 syntax-processing module for pasting lines with >>> or ... at the
4537 start.
4541 start.
4538
4542
4539 * IPython/Extensions/PhysicalQ_Interactive.py
4543 * IPython/Extensions/PhysicalQ_Interactive.py
4540 (PhysicalQuantityInteractive.__int__): fixed to work with either
4544 (PhysicalQuantityInteractive.__int__): fixed to work with either
4541 Numeric or math.
4545 Numeric or math.
4542
4546
4543 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4547 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4544 provided profiles. Now we have:
4548 provided profiles. Now we have:
4545 -math -> math module as * and cmath with its own namespace.
4549 -math -> math module as * and cmath with its own namespace.
4546 -numeric -> Numeric as *, plus gnuplot & grace
4550 -numeric -> Numeric as *, plus gnuplot & grace
4547 -physics -> same as before
4551 -physics -> same as before
4548
4552
4549 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4553 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4550 user-defined magics wouldn't be found by @magic if they were
4554 user-defined magics wouldn't be found by @magic if they were
4551 defined as class methods. Also cleaned up the namespace search
4555 defined as class methods. Also cleaned up the namespace search
4552 logic and the string building (to use %s instead of many repeated
4556 logic and the string building (to use %s instead of many repeated
4553 string adds).
4557 string adds).
4554
4558
4555 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4559 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4556 of user-defined magics to operate with class methods (cleaner, in
4560 of user-defined magics to operate with class methods (cleaner, in
4557 line with the gnuplot code).
4561 line with the gnuplot code).
4558
4562
4559 2002-04-22 Fernando Perez <fperez@colorado.edu>
4563 2002-04-22 Fernando Perez <fperez@colorado.edu>
4560
4564
4561 * setup.py: updated dependency list so that manual is updated when
4565 * setup.py: updated dependency list so that manual is updated when
4562 all included files change.
4566 all included files change.
4563
4567
4564 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4568 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4565 the delimiter removal option (the fix is ugly right now).
4569 the delimiter removal option (the fix is ugly right now).
4566
4570
4567 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4571 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4568 all of the math profile (quicker loading, no conflict between
4572 all of the math profile (quicker loading, no conflict between
4569 g-9.8 and g-gnuplot).
4573 g-9.8 and g-gnuplot).
4570
4574
4571 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4575 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4572 name of post-mortem files to IPython_crash_report.txt.
4576 name of post-mortem files to IPython_crash_report.txt.
4573
4577
4574 * Cleanup/update of the docs. Added all the new readline info and
4578 * Cleanup/update of the docs. Added all the new readline info and
4575 formatted all lists as 'real lists'.
4579 formatted all lists as 'real lists'.
4576
4580
4577 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4581 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4578 tab-completion options, since the full readline parse_and_bind is
4582 tab-completion options, since the full readline parse_and_bind is
4579 now accessible.
4583 now accessible.
4580
4584
4581 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4585 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4582 handling of readline options. Now users can specify any string to
4586 handling of readline options. Now users can specify any string to
4583 be passed to parse_and_bind(), as well as the delimiters to be
4587 be passed to parse_and_bind(), as well as the delimiters to be
4584 removed.
4588 removed.
4585 (InteractiveShell.__init__): Added __name__ to the global
4589 (InteractiveShell.__init__): Added __name__ to the global
4586 namespace so that things like Itpl which rely on its existence
4590 namespace so that things like Itpl which rely on its existence
4587 don't crash.
4591 don't crash.
4588 (InteractiveShell._prefilter): Defined the default with a _ so
4592 (InteractiveShell._prefilter): Defined the default with a _ so
4589 that prefilter() is easier to override, while the default one
4593 that prefilter() is easier to override, while the default one
4590 remains available.
4594 remains available.
4591
4595
4592 2002-04-18 Fernando Perez <fperez@colorado.edu>
4596 2002-04-18 Fernando Perez <fperez@colorado.edu>
4593
4597
4594 * Added information about pdb in the docs.
4598 * Added information about pdb in the docs.
4595
4599
4596 2002-04-17 Fernando Perez <fperez@colorado.edu>
4600 2002-04-17 Fernando Perez <fperez@colorado.edu>
4597
4601
4598 * IPython/ipmaker.py (make_IPython): added rc_override option to
4602 * IPython/ipmaker.py (make_IPython): added rc_override option to
4599 allow passing config options at creation time which may override
4603 allow passing config options at creation time which may override
4600 anything set in the config files or command line. This is
4604 anything set in the config files or command line. This is
4601 particularly useful for configuring embedded instances.
4605 particularly useful for configuring embedded instances.
4602
4606
4603 2002-04-15 Fernando Perez <fperez@colorado.edu>
4607 2002-04-15 Fernando Perez <fperez@colorado.edu>
4604
4608
4605 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4609 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4606 crash embedded instances because of the input cache falling out of
4610 crash embedded instances because of the input cache falling out of
4607 sync with the output counter.
4611 sync with the output counter.
4608
4612
4609 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4613 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4610 mode which calls pdb after an uncaught exception in IPython itself.
4614 mode which calls pdb after an uncaught exception in IPython itself.
4611
4615
4612 2002-04-14 Fernando Perez <fperez@colorado.edu>
4616 2002-04-14 Fernando Perez <fperez@colorado.edu>
4613
4617
4614 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4618 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4615 readline, fix it back after each call.
4619 readline, fix it back after each call.
4616
4620
4617 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4621 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4618 method to force all access via __call__(), which guarantees that
4622 method to force all access via __call__(), which guarantees that
4619 traceback references are properly deleted.
4623 traceback references are properly deleted.
4620
4624
4621 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4625 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4622 improve printing when pprint is in use.
4626 improve printing when pprint is in use.
4623
4627
4624 2002-04-13 Fernando Perez <fperez@colorado.edu>
4628 2002-04-13 Fernando Perez <fperez@colorado.edu>
4625
4629
4626 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4630 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4627 exceptions aren't caught anymore. If the user triggers one, he
4631 exceptions aren't caught anymore. If the user triggers one, he
4628 should know why he's doing it and it should go all the way up,
4632 should know why he's doing it and it should go all the way up,
4629 just like any other exception. So now @abort will fully kill the
4633 just like any other exception. So now @abort will fully kill the
4630 embedded interpreter and the embedding code (unless that happens
4634 embedded interpreter and the embedding code (unless that happens
4631 to catch SystemExit).
4635 to catch SystemExit).
4632
4636
4633 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4637 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4634 and a debugger() method to invoke the interactive pdb debugger
4638 and a debugger() method to invoke the interactive pdb debugger
4635 after printing exception information. Also added the corresponding
4639 after printing exception information. Also added the corresponding
4636 -pdb option and @pdb magic to control this feature, and updated
4640 -pdb option and @pdb magic to control this feature, and updated
4637 the docs. After a suggestion from Christopher Hart
4641 the docs. After a suggestion from Christopher Hart
4638 (hart-AT-caltech.edu).
4642 (hart-AT-caltech.edu).
4639
4643
4640 2002-04-12 Fernando Perez <fperez@colorado.edu>
4644 2002-04-12 Fernando Perez <fperez@colorado.edu>
4641
4645
4642 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4646 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4643 the exception handlers defined by the user (not the CrashHandler)
4647 the exception handlers defined by the user (not the CrashHandler)
4644 so that user exceptions don't trigger an ipython bug report.
4648 so that user exceptions don't trigger an ipython bug report.
4645
4649
4646 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4650 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4647 configurable (it should have always been so).
4651 configurable (it should have always been so).
4648
4652
4649 2002-03-26 Fernando Perez <fperez@colorado.edu>
4653 2002-03-26 Fernando Perez <fperez@colorado.edu>
4650
4654
4651 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4655 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4652 and there to fix embedding namespace issues. This should all be
4656 and there to fix embedding namespace issues. This should all be
4653 done in a more elegant way.
4657 done in a more elegant way.
4654
4658
4655 2002-03-25 Fernando Perez <fperez@colorado.edu>
4659 2002-03-25 Fernando Perez <fperez@colorado.edu>
4656
4660
4657 * IPython/genutils.py (get_home_dir): Try to make it work under
4661 * IPython/genutils.py (get_home_dir): Try to make it work under
4658 win9x also.
4662 win9x also.
4659
4663
4660 2002-03-20 Fernando Perez <fperez@colorado.edu>
4664 2002-03-20 Fernando Perez <fperez@colorado.edu>
4661
4665
4662 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4666 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4663 sys.displayhook untouched upon __init__.
4667 sys.displayhook untouched upon __init__.
4664
4668
4665 2002-03-19 Fernando Perez <fperez@colorado.edu>
4669 2002-03-19 Fernando Perez <fperez@colorado.edu>
4666
4670
4667 * Released 0.2.9 (for embedding bug, basically).
4671 * Released 0.2.9 (for embedding bug, basically).
4668
4672
4669 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4673 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4670 exceptions so that enclosing shell's state can be restored.
4674 exceptions so that enclosing shell's state can be restored.
4671
4675
4672 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4676 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4673 naming conventions in the .ipython/ dir.
4677 naming conventions in the .ipython/ dir.
4674
4678
4675 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4679 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4676 from delimiters list so filenames with - in them get expanded.
4680 from delimiters list so filenames with - in them get expanded.
4677
4681
4678 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4682 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4679 sys.displayhook not being properly restored after an embedded call.
4683 sys.displayhook not being properly restored after an embedded call.
4680
4684
4681 2002-03-18 Fernando Perez <fperez@colorado.edu>
4685 2002-03-18 Fernando Perez <fperez@colorado.edu>
4682
4686
4683 * Released 0.2.8
4687 * Released 0.2.8
4684
4688
4685 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4689 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4686 some files weren't being included in a -upgrade.
4690 some files weren't being included in a -upgrade.
4687 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4691 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4688 on' so that the first tab completes.
4692 on' so that the first tab completes.
4689 (InteractiveShell.handle_magic): fixed bug with spaces around
4693 (InteractiveShell.handle_magic): fixed bug with spaces around
4690 quotes breaking many magic commands.
4694 quotes breaking many magic commands.
4691
4695
4692 * setup.py: added note about ignoring the syntax error messages at
4696 * setup.py: added note about ignoring the syntax error messages at
4693 installation.
4697 installation.
4694
4698
4695 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4699 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4696 streamlining the gnuplot interface, now there's only one magic @gp.
4700 streamlining the gnuplot interface, now there's only one magic @gp.
4697
4701
4698 2002-03-17 Fernando Perez <fperez@colorado.edu>
4702 2002-03-17 Fernando Perez <fperez@colorado.edu>
4699
4703
4700 * IPython/UserConfig/magic_gnuplot.py: new name for the
4704 * IPython/UserConfig/magic_gnuplot.py: new name for the
4701 example-magic_pm.py file. Much enhanced system, now with a shell
4705 example-magic_pm.py file. Much enhanced system, now with a shell
4702 for communicating directly with gnuplot, one command at a time.
4706 for communicating directly with gnuplot, one command at a time.
4703
4707
4704 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4708 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4705 setting __name__=='__main__'.
4709 setting __name__=='__main__'.
4706
4710
4707 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4711 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4708 mini-shell for accessing gnuplot from inside ipython. Should
4712 mini-shell for accessing gnuplot from inside ipython. Should
4709 extend it later for grace access too. Inspired by Arnd's
4713 extend it later for grace access too. Inspired by Arnd's
4710 suggestion.
4714 suggestion.
4711
4715
4712 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4716 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4713 calling magic functions with () in their arguments. Thanks to Arnd
4717 calling magic functions with () in their arguments. Thanks to Arnd
4714 Baecker for pointing this to me.
4718 Baecker for pointing this to me.
4715
4719
4716 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4720 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4717 infinitely for integer or complex arrays (only worked with floats).
4721 infinitely for integer or complex arrays (only worked with floats).
4718
4722
4719 2002-03-16 Fernando Perez <fperez@colorado.edu>
4723 2002-03-16 Fernando Perez <fperez@colorado.edu>
4720
4724
4721 * setup.py: Merged setup and setup_windows into a single script
4725 * setup.py: Merged setup and setup_windows into a single script
4722 which properly handles things for windows users.
4726 which properly handles things for windows users.
4723
4727
4724 2002-03-15 Fernando Perez <fperez@colorado.edu>
4728 2002-03-15 Fernando Perez <fperez@colorado.edu>
4725
4729
4726 * Big change to the manual: now the magics are all automatically
4730 * Big change to the manual: now the magics are all automatically
4727 documented. This information is generated from their docstrings
4731 documented. This information is generated from their docstrings
4728 and put in a latex file included by the manual lyx file. This way
4732 and put in a latex file included by the manual lyx file. This way
4729 we get always up to date information for the magics. The manual
4733 we get always up to date information for the magics. The manual
4730 now also has proper version information, also auto-synced.
4734 now also has proper version information, also auto-synced.
4731
4735
4732 For this to work, an undocumented --magic_docstrings option was added.
4736 For this to work, an undocumented --magic_docstrings option was added.
4733
4737
4734 2002-03-13 Fernando Perez <fperez@colorado.edu>
4738 2002-03-13 Fernando Perez <fperez@colorado.edu>
4735
4739
4736 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4740 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4737 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4741 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4738
4742
4739 2002-03-12 Fernando Perez <fperez@colorado.edu>
4743 2002-03-12 Fernando Perez <fperez@colorado.edu>
4740
4744
4741 * IPython/ultraTB.py (TermColors): changed color escapes again to
4745 * IPython/ultraTB.py (TermColors): changed color escapes again to
4742 fix the (old, reintroduced) line-wrapping bug. Basically, if
4746 fix the (old, reintroduced) line-wrapping bug. Basically, if
4743 \001..\002 aren't given in the color escapes, lines get wrapped
4747 \001..\002 aren't given in the color escapes, lines get wrapped
4744 weirdly. But giving those screws up old xterms and emacs terms. So
4748 weirdly. But giving those screws up old xterms and emacs terms. So
4745 I added some logic for emacs terms to be ok, but I can't identify old
4749 I added some logic for emacs terms to be ok, but I can't identify old
4746 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4750 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4747
4751
4748 2002-03-10 Fernando Perez <fperez@colorado.edu>
4752 2002-03-10 Fernando Perez <fperez@colorado.edu>
4749
4753
4750 * IPython/usage.py (__doc__): Various documentation cleanups and
4754 * IPython/usage.py (__doc__): Various documentation cleanups and
4751 updates, both in usage docstrings and in the manual.
4755 updates, both in usage docstrings and in the manual.
4752
4756
4753 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4757 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4754 handling of caching. Set minimum acceptabe value for having a
4758 handling of caching. Set minimum acceptabe value for having a
4755 cache at 20 values.
4759 cache at 20 values.
4756
4760
4757 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4761 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4758 install_first_time function to a method, renamed it and added an
4762 install_first_time function to a method, renamed it and added an
4759 'upgrade' mode. Now people can update their config directory with
4763 'upgrade' mode. Now people can update their config directory with
4760 a simple command line switch (-upgrade, also new).
4764 a simple command line switch (-upgrade, also new).
4761
4765
4762 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4766 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4763 @file (convenient for automagic users under Python >= 2.2).
4767 @file (convenient for automagic users under Python >= 2.2).
4764 Removed @files (it seemed more like a plural than an abbrev. of
4768 Removed @files (it seemed more like a plural than an abbrev. of
4765 'file show').
4769 'file show').
4766
4770
4767 * IPython/iplib.py (install_first_time): Fixed crash if there were
4771 * IPython/iplib.py (install_first_time): Fixed crash if there were
4768 backup files ('~') in .ipython/ install directory.
4772 backup files ('~') in .ipython/ install directory.
4769
4773
4770 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4774 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4771 system. Things look fine, but these changes are fairly
4775 system. Things look fine, but these changes are fairly
4772 intrusive. Test them for a few days.
4776 intrusive. Test them for a few days.
4773
4777
4774 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4778 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4775 the prompts system. Now all in/out prompt strings are user
4779 the prompts system. Now all in/out prompt strings are user
4776 controllable. This is particularly useful for embedding, as one
4780 controllable. This is particularly useful for embedding, as one
4777 can tag embedded instances with particular prompts.
4781 can tag embedded instances with particular prompts.
4778
4782
4779 Also removed global use of sys.ps1/2, which now allows nested
4783 Also removed global use of sys.ps1/2, which now allows nested
4780 embeddings without any problems. Added command-line options for
4784 embeddings without any problems. Added command-line options for
4781 the prompt strings.
4785 the prompt strings.
4782
4786
4783 2002-03-08 Fernando Perez <fperez@colorado.edu>
4787 2002-03-08 Fernando Perez <fperez@colorado.edu>
4784
4788
4785 * IPython/UserConfig/example-embed-short.py (ipshell): added
4789 * IPython/UserConfig/example-embed-short.py (ipshell): added
4786 example file with the bare minimum code for embedding.
4790 example file with the bare minimum code for embedding.
4787
4791
4788 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4792 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4789 functionality for the embeddable shell to be activated/deactivated
4793 functionality for the embeddable shell to be activated/deactivated
4790 either globally or at each call.
4794 either globally or at each call.
4791
4795
4792 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4796 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4793 rewriting the prompt with '--->' for auto-inputs with proper
4797 rewriting the prompt with '--->' for auto-inputs with proper
4794 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4798 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4795 this is handled by the prompts class itself, as it should.
4799 this is handled by the prompts class itself, as it should.
4796
4800
4797 2002-03-05 Fernando Perez <fperez@colorado.edu>
4801 2002-03-05 Fernando Perez <fperez@colorado.edu>
4798
4802
4799 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4803 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4800 @logstart to avoid name clashes with the math log function.
4804 @logstart to avoid name clashes with the math log function.
4801
4805
4802 * Big updates to X/Emacs section of the manual.
4806 * Big updates to X/Emacs section of the manual.
4803
4807
4804 * Removed ipython_emacs. Milan explained to me how to pass
4808 * Removed ipython_emacs. Milan explained to me how to pass
4805 arguments to ipython through Emacs. Some day I'm going to end up
4809 arguments to ipython through Emacs. Some day I'm going to end up
4806 learning some lisp...
4810 learning some lisp...
4807
4811
4808 2002-03-04 Fernando Perez <fperez@colorado.edu>
4812 2002-03-04 Fernando Perez <fperez@colorado.edu>
4809
4813
4810 * IPython/ipython_emacs: Created script to be used as the
4814 * IPython/ipython_emacs: Created script to be used as the
4811 py-python-command Emacs variable so we can pass IPython
4815 py-python-command Emacs variable so we can pass IPython
4812 parameters. I can't figure out how to tell Emacs directly to pass
4816 parameters. I can't figure out how to tell Emacs directly to pass
4813 parameters to IPython, so a dummy shell script will do it.
4817 parameters to IPython, so a dummy shell script will do it.
4814
4818
4815 Other enhancements made for things to work better under Emacs'
4819 Other enhancements made for things to work better under Emacs'
4816 various types of terminals. Many thanks to Milan Zamazal
4820 various types of terminals. Many thanks to Milan Zamazal
4817 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4821 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4818
4822
4819 2002-03-01 Fernando Perez <fperez@colorado.edu>
4823 2002-03-01 Fernando Perez <fperez@colorado.edu>
4820
4824
4821 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4825 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4822 that loading of readline is now optional. This gives better
4826 that loading of readline is now optional. This gives better
4823 control to emacs users.
4827 control to emacs users.
4824
4828
4825 * IPython/ultraTB.py (__date__): Modified color escape sequences
4829 * IPython/ultraTB.py (__date__): Modified color escape sequences
4826 and now things work fine under xterm and in Emacs' term buffers
4830 and now things work fine under xterm and in Emacs' term buffers
4827 (though not shell ones). Well, in emacs you get colors, but all
4831 (though not shell ones). Well, in emacs you get colors, but all
4828 seem to be 'light' colors (no difference between dark and light
4832 seem to be 'light' colors (no difference between dark and light
4829 ones). But the garbage chars are gone, and also in xterms. It
4833 ones). But the garbage chars are gone, and also in xterms. It
4830 seems that now I'm using 'cleaner' ansi sequences.
4834 seems that now I'm using 'cleaner' ansi sequences.
4831
4835
4832 2002-02-21 Fernando Perez <fperez@colorado.edu>
4836 2002-02-21 Fernando Perez <fperez@colorado.edu>
4833
4837
4834 * Released 0.2.7 (mainly to publish the scoping fix).
4838 * Released 0.2.7 (mainly to publish the scoping fix).
4835
4839
4836 * IPython/Logger.py (Logger.logstate): added. A corresponding
4840 * IPython/Logger.py (Logger.logstate): added. A corresponding
4837 @logstate magic was created.
4841 @logstate magic was created.
4838
4842
4839 * IPython/Magic.py: fixed nested scoping problem under Python
4843 * IPython/Magic.py: fixed nested scoping problem under Python
4840 2.1.x (automagic wasn't working).
4844 2.1.x (automagic wasn't working).
4841
4845
4842 2002-02-20 Fernando Perez <fperez@colorado.edu>
4846 2002-02-20 Fernando Perez <fperez@colorado.edu>
4843
4847
4844 * Released 0.2.6.
4848 * Released 0.2.6.
4845
4849
4846 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4850 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4847 option so that logs can come out without any headers at all.
4851 option so that logs can come out without any headers at all.
4848
4852
4849 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4853 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4850 SciPy.
4854 SciPy.
4851
4855
4852 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4856 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4853 that embedded IPython calls don't require vars() to be explicitly
4857 that embedded IPython calls don't require vars() to be explicitly
4854 passed. Now they are extracted from the caller's frame (code
4858 passed. Now they are extracted from the caller's frame (code
4855 snatched from Eric Jones' weave). Added better documentation to
4859 snatched from Eric Jones' weave). Added better documentation to
4856 the section on embedding and the example file.
4860 the section on embedding and the example file.
4857
4861
4858 * IPython/genutils.py (page): Changed so that under emacs, it just
4862 * IPython/genutils.py (page): Changed so that under emacs, it just
4859 prints the string. You can then page up and down in the emacs
4863 prints the string. You can then page up and down in the emacs
4860 buffer itself. This is how the builtin help() works.
4864 buffer itself. This is how the builtin help() works.
4861
4865
4862 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4866 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4863 macro scoping: macros need to be executed in the user's namespace
4867 macro scoping: macros need to be executed in the user's namespace
4864 to work as if they had been typed by the user.
4868 to work as if they had been typed by the user.
4865
4869
4866 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4870 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4867 execute automatically (no need to type 'exec...'). They then
4871 execute automatically (no need to type 'exec...'). They then
4868 behave like 'true macros'. The printing system was also modified
4872 behave like 'true macros'. The printing system was also modified
4869 for this to work.
4873 for this to work.
4870
4874
4871 2002-02-19 Fernando Perez <fperez@colorado.edu>
4875 2002-02-19 Fernando Perez <fperez@colorado.edu>
4872
4876
4873 * IPython/genutils.py (page_file): new function for paging files
4877 * IPython/genutils.py (page_file): new function for paging files
4874 in an OS-independent way. Also necessary for file viewing to work
4878 in an OS-independent way. Also necessary for file viewing to work
4875 well inside Emacs buffers.
4879 well inside Emacs buffers.
4876 (page): Added checks for being in an emacs buffer.
4880 (page): Added checks for being in an emacs buffer.
4877 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4881 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4878 same bug in iplib.
4882 same bug in iplib.
4879
4883
4880 2002-02-18 Fernando Perez <fperez@colorado.edu>
4884 2002-02-18 Fernando Perez <fperez@colorado.edu>
4881
4885
4882 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4886 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4883 of readline so that IPython can work inside an Emacs buffer.
4887 of readline so that IPython can work inside an Emacs buffer.
4884
4888
4885 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4889 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4886 method signatures (they weren't really bugs, but it looks cleaner
4890 method signatures (they weren't really bugs, but it looks cleaner
4887 and keeps PyChecker happy).
4891 and keeps PyChecker happy).
4888
4892
4889 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4893 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4890 for implementing various user-defined hooks. Currently only
4894 for implementing various user-defined hooks. Currently only
4891 display is done.
4895 display is done.
4892
4896
4893 * IPython/Prompts.py (CachedOutput._display): changed display
4897 * IPython/Prompts.py (CachedOutput._display): changed display
4894 functions so that they can be dynamically changed by users easily.
4898 functions so that they can be dynamically changed by users easily.
4895
4899
4896 * IPython/Extensions/numeric_formats.py (num_display): added an
4900 * IPython/Extensions/numeric_formats.py (num_display): added an
4897 extension for printing NumPy arrays in flexible manners. It
4901 extension for printing NumPy arrays in flexible manners. It
4898 doesn't do anything yet, but all the structure is in
4902 doesn't do anything yet, but all the structure is in
4899 place. Ultimately the plan is to implement output format control
4903 place. Ultimately the plan is to implement output format control
4900 like in Octave.
4904 like in Octave.
4901
4905
4902 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4906 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4903 methods are found at run-time by all the automatic machinery.
4907 methods are found at run-time by all the automatic machinery.
4904
4908
4905 2002-02-17 Fernando Perez <fperez@colorado.edu>
4909 2002-02-17 Fernando Perez <fperez@colorado.edu>
4906
4910
4907 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4911 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4908 whole file a little.
4912 whole file a little.
4909
4913
4910 * ToDo: closed this document. Now there's a new_design.lyx
4914 * ToDo: closed this document. Now there's a new_design.lyx
4911 document for all new ideas. Added making a pdf of it for the
4915 document for all new ideas. Added making a pdf of it for the
4912 end-user distro.
4916 end-user distro.
4913
4917
4914 * IPython/Logger.py (Logger.switch_log): Created this to replace
4918 * IPython/Logger.py (Logger.switch_log): Created this to replace
4915 logon() and logoff(). It also fixes a nasty crash reported by
4919 logon() and logoff(). It also fixes a nasty crash reported by
4916 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4920 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4917
4921
4918 * IPython/iplib.py (complete): got auto-completion to work with
4922 * IPython/iplib.py (complete): got auto-completion to work with
4919 automagic (I had wanted this for a long time).
4923 automagic (I had wanted this for a long time).
4920
4924
4921 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4925 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4922 to @file, since file() is now a builtin and clashes with automagic
4926 to @file, since file() is now a builtin and clashes with automagic
4923 for @file.
4927 for @file.
4924
4928
4925 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4929 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4926 of this was previously in iplib, which had grown to more than 2000
4930 of this was previously in iplib, which had grown to more than 2000
4927 lines, way too long. No new functionality, but it makes managing
4931 lines, way too long. No new functionality, but it makes managing
4928 the code a bit easier.
4932 the code a bit easier.
4929
4933
4930 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4934 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4931 information to crash reports.
4935 information to crash reports.
4932
4936
4933 2002-02-12 Fernando Perez <fperez@colorado.edu>
4937 2002-02-12 Fernando Perez <fperez@colorado.edu>
4934
4938
4935 * Released 0.2.5.
4939 * Released 0.2.5.
4936
4940
4937 2002-02-11 Fernando Perez <fperez@colorado.edu>
4941 2002-02-11 Fernando Perez <fperez@colorado.edu>
4938
4942
4939 * Wrote a relatively complete Windows installer. It puts
4943 * Wrote a relatively complete Windows installer. It puts
4940 everything in place, creates Start Menu entries and fixes the
4944 everything in place, creates Start Menu entries and fixes the
4941 color issues. Nothing fancy, but it works.
4945 color issues. Nothing fancy, but it works.
4942
4946
4943 2002-02-10 Fernando Perez <fperez@colorado.edu>
4947 2002-02-10 Fernando Perez <fperez@colorado.edu>
4944
4948
4945 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4949 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4946 os.path.expanduser() call so that we can type @run ~/myfile.py and
4950 os.path.expanduser() call so that we can type @run ~/myfile.py and
4947 have thigs work as expected.
4951 have thigs work as expected.
4948
4952
4949 * IPython/genutils.py (page): fixed exception handling so things
4953 * IPython/genutils.py (page): fixed exception handling so things
4950 work both in Unix and Windows correctly. Quitting a pager triggers
4954 work both in Unix and Windows correctly. Quitting a pager triggers
4951 an IOError/broken pipe in Unix, and in windows not finding a pager
4955 an IOError/broken pipe in Unix, and in windows not finding a pager
4952 is also an IOError, so I had to actually look at the return value
4956 is also an IOError, so I had to actually look at the return value
4953 of the exception, not just the exception itself. Should be ok now.
4957 of the exception, not just the exception itself. Should be ok now.
4954
4958
4955 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4959 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4956 modified to allow case-insensitive color scheme changes.
4960 modified to allow case-insensitive color scheme changes.
4957
4961
4958 2002-02-09 Fernando Perez <fperez@colorado.edu>
4962 2002-02-09 Fernando Perez <fperez@colorado.edu>
4959
4963
4960 * IPython/genutils.py (native_line_ends): new function to leave
4964 * IPython/genutils.py (native_line_ends): new function to leave
4961 user config files with os-native line-endings.
4965 user config files with os-native line-endings.
4962
4966
4963 * README and manual updates.
4967 * README and manual updates.
4964
4968
4965 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4969 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4966 instead of StringType to catch Unicode strings.
4970 instead of StringType to catch Unicode strings.
4967
4971
4968 * IPython/genutils.py (filefind): fixed bug for paths with
4972 * IPython/genutils.py (filefind): fixed bug for paths with
4969 embedded spaces (very common in Windows).
4973 embedded spaces (very common in Windows).
4970
4974
4971 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4975 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4972 files under Windows, so that they get automatically associated
4976 files under Windows, so that they get automatically associated
4973 with a text editor. Windows makes it a pain to handle
4977 with a text editor. Windows makes it a pain to handle
4974 extension-less files.
4978 extension-less files.
4975
4979
4976 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4980 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4977 warning about readline only occur for Posix. In Windows there's no
4981 warning about readline only occur for Posix. In Windows there's no
4978 way to get readline, so why bother with the warning.
4982 way to get readline, so why bother with the warning.
4979
4983
4980 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4984 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4981 for __str__ instead of dir(self), since dir() changed in 2.2.
4985 for __str__ instead of dir(self), since dir() changed in 2.2.
4982
4986
4983 * Ported to Windows! Tested on XP, I suspect it should work fine
4987 * Ported to Windows! Tested on XP, I suspect it should work fine
4984 on NT/2000, but I don't think it will work on 98 et al. That
4988 on NT/2000, but I don't think it will work on 98 et al. That
4985 series of Windows is such a piece of junk anyway that I won't try
4989 series of Windows is such a piece of junk anyway that I won't try
4986 porting it there. The XP port was straightforward, showed a few
4990 porting it there. The XP port was straightforward, showed a few
4987 bugs here and there (fixed all), in particular some string
4991 bugs here and there (fixed all), in particular some string
4988 handling stuff which required considering Unicode strings (which
4992 handling stuff which required considering Unicode strings (which
4989 Windows uses). This is good, but hasn't been too tested :) No
4993 Windows uses). This is good, but hasn't been too tested :) No
4990 fancy installer yet, I'll put a note in the manual so people at
4994 fancy installer yet, I'll put a note in the manual so people at
4991 least make manually a shortcut.
4995 least make manually a shortcut.
4992
4996
4993 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4997 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4994 into a single one, "colors". This now controls both prompt and
4998 into a single one, "colors". This now controls both prompt and
4995 exception color schemes, and can be changed both at startup
4999 exception color schemes, and can be changed both at startup
4996 (either via command-line switches or via ipythonrc files) and at
5000 (either via command-line switches or via ipythonrc files) and at
4997 runtime, with @colors.
5001 runtime, with @colors.
4998 (Magic.magic_run): renamed @prun to @run and removed the old
5002 (Magic.magic_run): renamed @prun to @run and removed the old
4999 @run. The two were too similar to warrant keeping both.
5003 @run. The two were too similar to warrant keeping both.
5000
5004
5001 2002-02-03 Fernando Perez <fperez@colorado.edu>
5005 2002-02-03 Fernando Perez <fperez@colorado.edu>
5002
5006
5003 * IPython/iplib.py (install_first_time): Added comment on how to
5007 * IPython/iplib.py (install_first_time): Added comment on how to
5004 configure the color options for first-time users. Put a <return>
5008 configure the color options for first-time users. Put a <return>
5005 request at the end so that small-terminal users get a chance to
5009 request at the end so that small-terminal users get a chance to
5006 read the startup info.
5010 read the startup info.
5007
5011
5008 2002-01-23 Fernando Perez <fperez@colorado.edu>
5012 2002-01-23 Fernando Perez <fperez@colorado.edu>
5009
5013
5010 * IPython/iplib.py (CachedOutput.update): Changed output memory
5014 * IPython/iplib.py (CachedOutput.update): Changed output memory
5011 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5015 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5012 input history we still use _i. Did this b/c these variable are
5016 input history we still use _i. Did this b/c these variable are
5013 very commonly used in interactive work, so the less we need to
5017 very commonly used in interactive work, so the less we need to
5014 type the better off we are.
5018 type the better off we are.
5015 (Magic.magic_prun): updated @prun to better handle the namespaces
5019 (Magic.magic_prun): updated @prun to better handle the namespaces
5016 the file will run in, including a fix for __name__ not being set
5020 the file will run in, including a fix for __name__ not being set
5017 before.
5021 before.
5018
5022
5019 2002-01-20 Fernando Perez <fperez@colorado.edu>
5023 2002-01-20 Fernando Perez <fperez@colorado.edu>
5020
5024
5021 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5025 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5022 extra garbage for Python 2.2. Need to look more carefully into
5026 extra garbage for Python 2.2. Need to look more carefully into
5023 this later.
5027 this later.
5024
5028
5025 2002-01-19 Fernando Perez <fperez@colorado.edu>
5029 2002-01-19 Fernando Perez <fperez@colorado.edu>
5026
5030
5027 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5031 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5028 display SyntaxError exceptions properly formatted when they occur
5032 display SyntaxError exceptions properly formatted when they occur
5029 (they can be triggered by imported code).
5033 (they can be triggered by imported code).
5030
5034
5031 2002-01-18 Fernando Perez <fperez@colorado.edu>
5035 2002-01-18 Fernando Perez <fperez@colorado.edu>
5032
5036
5033 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5037 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5034 SyntaxError exceptions are reported nicely formatted, instead of
5038 SyntaxError exceptions are reported nicely formatted, instead of
5035 spitting out only offset information as before.
5039 spitting out only offset information as before.
5036 (Magic.magic_prun): Added the @prun function for executing
5040 (Magic.magic_prun): Added the @prun function for executing
5037 programs with command line args inside IPython.
5041 programs with command line args inside IPython.
5038
5042
5039 2002-01-16 Fernando Perez <fperez@colorado.edu>
5043 2002-01-16 Fernando Perez <fperez@colorado.edu>
5040
5044
5041 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5045 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5042 to *not* include the last item given in a range. This brings their
5046 to *not* include the last item given in a range. This brings their
5043 behavior in line with Python's slicing:
5047 behavior in line with Python's slicing:
5044 a[n1:n2] -> a[n1]...a[n2-1]
5048 a[n1:n2] -> a[n1]...a[n2-1]
5045 It may be a bit less convenient, but I prefer to stick to Python's
5049 It may be a bit less convenient, but I prefer to stick to Python's
5046 conventions *everywhere*, so users never have to wonder.
5050 conventions *everywhere*, so users never have to wonder.
5047 (Magic.magic_macro): Added @macro function to ease the creation of
5051 (Magic.magic_macro): Added @macro function to ease the creation of
5048 macros.
5052 macros.
5049
5053
5050 2002-01-05 Fernando Perez <fperez@colorado.edu>
5054 2002-01-05 Fernando Perez <fperez@colorado.edu>
5051
5055
5052 * Released 0.2.4.
5056 * Released 0.2.4.
5053
5057
5054 * IPython/iplib.py (Magic.magic_pdef):
5058 * IPython/iplib.py (Magic.magic_pdef):
5055 (InteractiveShell.safe_execfile): report magic lines and error
5059 (InteractiveShell.safe_execfile): report magic lines and error
5056 lines without line numbers so one can easily copy/paste them for
5060 lines without line numbers so one can easily copy/paste them for
5057 re-execution.
5061 re-execution.
5058
5062
5059 * Updated manual with recent changes.
5063 * Updated manual with recent changes.
5060
5064
5061 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5065 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5062 docstring printing when class? is called. Very handy for knowing
5066 docstring printing when class? is called. Very handy for knowing
5063 how to create class instances (as long as __init__ is well
5067 how to create class instances (as long as __init__ is well
5064 documented, of course :)
5068 documented, of course :)
5065 (Magic.magic_doc): print both class and constructor docstrings.
5069 (Magic.magic_doc): print both class and constructor docstrings.
5066 (Magic.magic_pdef): give constructor info if passed a class and
5070 (Magic.magic_pdef): give constructor info if passed a class and
5067 __call__ info for callable object instances.
5071 __call__ info for callable object instances.
5068
5072
5069 2002-01-04 Fernando Perez <fperez@colorado.edu>
5073 2002-01-04 Fernando Perez <fperez@colorado.edu>
5070
5074
5071 * Made deep_reload() off by default. It doesn't always work
5075 * Made deep_reload() off by default. It doesn't always work
5072 exactly as intended, so it's probably safer to have it off. It's
5076 exactly as intended, so it's probably safer to have it off. It's
5073 still available as dreload() anyway, so nothing is lost.
5077 still available as dreload() anyway, so nothing is lost.
5074
5078
5075 2002-01-02 Fernando Perez <fperez@colorado.edu>
5079 2002-01-02 Fernando Perez <fperez@colorado.edu>
5076
5080
5077 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5081 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5078 so I wanted an updated release).
5082 so I wanted an updated release).
5079
5083
5080 2001-12-27 Fernando Perez <fperez@colorado.edu>
5084 2001-12-27 Fernando Perez <fperez@colorado.edu>
5081
5085
5082 * IPython/iplib.py (InteractiveShell.interact): Added the original
5086 * IPython/iplib.py (InteractiveShell.interact): Added the original
5083 code from 'code.py' for this module in order to change the
5087 code from 'code.py' for this module in order to change the
5084 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5088 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5085 the history cache would break when the user hit Ctrl-C, and
5089 the history cache would break when the user hit Ctrl-C, and
5086 interact() offers no way to add any hooks to it.
5090 interact() offers no way to add any hooks to it.
5087
5091
5088 2001-12-23 Fernando Perez <fperez@colorado.edu>
5092 2001-12-23 Fernando Perez <fperez@colorado.edu>
5089
5093
5090 * setup.py: added check for 'MANIFEST' before trying to remove
5094 * setup.py: added check for 'MANIFEST' before trying to remove
5091 it. Thanks to Sean Reifschneider.
5095 it. Thanks to Sean Reifschneider.
5092
5096
5093 2001-12-22 Fernando Perez <fperez@colorado.edu>
5097 2001-12-22 Fernando Perez <fperez@colorado.edu>
5094
5098
5095 * Released 0.2.2.
5099 * Released 0.2.2.
5096
5100
5097 * Finished (reasonably) writing the manual. Later will add the
5101 * Finished (reasonably) writing the manual. Later will add the
5098 python-standard navigation stylesheets, but for the time being
5102 python-standard navigation stylesheets, but for the time being
5099 it's fairly complete. Distribution will include html and pdf
5103 it's fairly complete. Distribution will include html and pdf
5100 versions.
5104 versions.
5101
5105
5102 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5106 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5103 (MayaVi author).
5107 (MayaVi author).
5104
5108
5105 2001-12-21 Fernando Perez <fperez@colorado.edu>
5109 2001-12-21 Fernando Perez <fperez@colorado.edu>
5106
5110
5107 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5111 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5108 good public release, I think (with the manual and the distutils
5112 good public release, I think (with the manual and the distutils
5109 installer). The manual can use some work, but that can go
5113 installer). The manual can use some work, but that can go
5110 slowly. Otherwise I think it's quite nice for end users. Next
5114 slowly. Otherwise I think it's quite nice for end users. Next
5111 summer, rewrite the guts of it...
5115 summer, rewrite the guts of it...
5112
5116
5113 * Changed format of ipythonrc files to use whitespace as the
5117 * Changed format of ipythonrc files to use whitespace as the
5114 separator instead of an explicit '='. Cleaner.
5118 separator instead of an explicit '='. Cleaner.
5115
5119
5116 2001-12-20 Fernando Perez <fperez@colorado.edu>
5120 2001-12-20 Fernando Perez <fperez@colorado.edu>
5117
5121
5118 * Started a manual in LyX. For now it's just a quick merge of the
5122 * Started a manual in LyX. For now it's just a quick merge of the
5119 various internal docstrings and READMEs. Later it may grow into a
5123 various internal docstrings and READMEs. Later it may grow into a
5120 nice, full-blown manual.
5124 nice, full-blown manual.
5121
5125
5122 * Set up a distutils based installer. Installation should now be
5126 * Set up a distutils based installer. Installation should now be
5123 trivially simple for end-users.
5127 trivially simple for end-users.
5124
5128
5125 2001-12-11 Fernando Perez <fperez@colorado.edu>
5129 2001-12-11 Fernando Perez <fperez@colorado.edu>
5126
5130
5127 * Released 0.2.0. First public release, announced it at
5131 * Released 0.2.0. First public release, announced it at
5128 comp.lang.python. From now on, just bugfixes...
5132 comp.lang.python. From now on, just bugfixes...
5129
5133
5130 * Went through all the files, set copyright/license notices and
5134 * Went through all the files, set copyright/license notices and
5131 cleaned up things. Ready for release.
5135 cleaned up things. Ready for release.
5132
5136
5133 2001-12-10 Fernando Perez <fperez@colorado.edu>
5137 2001-12-10 Fernando Perez <fperez@colorado.edu>
5134
5138
5135 * Changed the first-time installer not to use tarfiles. It's more
5139 * Changed the first-time installer not to use tarfiles. It's more
5136 robust now and less unix-dependent. Also makes it easier for
5140 robust now and less unix-dependent. Also makes it easier for
5137 people to later upgrade versions.
5141 people to later upgrade versions.
5138
5142
5139 * Changed @exit to @abort to reflect the fact that it's pretty
5143 * Changed @exit to @abort to reflect the fact that it's pretty
5140 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5144 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5141 becomes significant only when IPyhton is embedded: in that case,
5145 becomes significant only when IPyhton is embedded: in that case,
5142 C-D closes IPython only, but @abort kills the enclosing program
5146 C-D closes IPython only, but @abort kills the enclosing program
5143 too (unless it had called IPython inside a try catching
5147 too (unless it had called IPython inside a try catching
5144 SystemExit).
5148 SystemExit).
5145
5149
5146 * Created Shell module which exposes the actuall IPython Shell
5150 * Created Shell module which exposes the actuall IPython Shell
5147 classes, currently the normal and the embeddable one. This at
5151 classes, currently the normal and the embeddable one. This at
5148 least offers a stable interface we won't need to change when
5152 least offers a stable interface we won't need to change when
5149 (later) the internals are rewritten. That rewrite will be confined
5153 (later) the internals are rewritten. That rewrite will be confined
5150 to iplib and ipmaker, but the Shell interface should remain as is.
5154 to iplib and ipmaker, but the Shell interface should remain as is.
5151
5155
5152 * Added embed module which offers an embeddable IPShell object,
5156 * Added embed module which offers an embeddable IPShell object,
5153 useful to fire up IPython *inside* a running program. Great for
5157 useful to fire up IPython *inside* a running program. Great for
5154 debugging or dynamical data analysis.
5158 debugging or dynamical data analysis.
5155
5159
5156 2001-12-08 Fernando Perez <fperez@colorado.edu>
5160 2001-12-08 Fernando Perez <fperez@colorado.edu>
5157
5161
5158 * Fixed small bug preventing seeing info from methods of defined
5162 * Fixed small bug preventing seeing info from methods of defined
5159 objects (incorrect namespace in _ofind()).
5163 objects (incorrect namespace in _ofind()).
5160
5164
5161 * Documentation cleanup. Moved the main usage docstrings to a
5165 * Documentation cleanup. Moved the main usage docstrings to a
5162 separate file, usage.py (cleaner to maintain, and hopefully in the
5166 separate file, usage.py (cleaner to maintain, and hopefully in the
5163 future some perlpod-like way of producing interactive, man and
5167 future some perlpod-like way of producing interactive, man and
5164 html docs out of it will be found).
5168 html docs out of it will be found).
5165
5169
5166 * Added @profile to see your profile at any time.
5170 * Added @profile to see your profile at any time.
5167
5171
5168 * Added @p as an alias for 'print'. It's especially convenient if
5172 * Added @p as an alias for 'print'. It's especially convenient if
5169 using automagic ('p x' prints x).
5173 using automagic ('p x' prints x).
5170
5174
5171 * Small cleanups and fixes after a pychecker run.
5175 * Small cleanups and fixes after a pychecker run.
5172
5176
5173 * Changed the @cd command to handle @cd - and @cd -<n> for
5177 * Changed the @cd command to handle @cd - and @cd -<n> for
5174 visiting any directory in _dh.
5178 visiting any directory in _dh.
5175
5179
5176 * Introduced _dh, a history of visited directories. @dhist prints
5180 * Introduced _dh, a history of visited directories. @dhist prints
5177 it out with numbers.
5181 it out with numbers.
5178
5182
5179 2001-12-07 Fernando Perez <fperez@colorado.edu>
5183 2001-12-07 Fernando Perez <fperez@colorado.edu>
5180
5184
5181 * Released 0.1.22
5185 * Released 0.1.22
5182
5186
5183 * Made initialization a bit more robust against invalid color
5187 * Made initialization a bit more robust against invalid color
5184 options in user input (exit, not traceback-crash).
5188 options in user input (exit, not traceback-crash).
5185
5189
5186 * Changed the bug crash reporter to write the report only in the
5190 * Changed the bug crash reporter to write the report only in the
5187 user's .ipython directory. That way IPython won't litter people's
5191 user's .ipython directory. That way IPython won't litter people's
5188 hard disks with crash files all over the place. Also print on
5192 hard disks with crash files all over the place. Also print on
5189 screen the necessary mail command.
5193 screen the necessary mail command.
5190
5194
5191 * With the new ultraTB, implemented LightBG color scheme for light
5195 * With the new ultraTB, implemented LightBG color scheme for light
5192 background terminals. A lot of people like white backgrounds, so I
5196 background terminals. A lot of people like white backgrounds, so I
5193 guess we should at least give them something readable.
5197 guess we should at least give them something readable.
5194
5198
5195 2001-12-06 Fernando Perez <fperez@colorado.edu>
5199 2001-12-06 Fernando Perez <fperez@colorado.edu>
5196
5200
5197 * Modified the structure of ultraTB. Now there's a proper class
5201 * Modified the structure of ultraTB. Now there's a proper class
5198 for tables of color schemes which allow adding schemes easily and
5202 for tables of color schemes which allow adding schemes easily and
5199 switching the active scheme without creating a new instance every
5203 switching the active scheme without creating a new instance every
5200 time (which was ridiculous). The syntax for creating new schemes
5204 time (which was ridiculous). The syntax for creating new schemes
5201 is also cleaner. I think ultraTB is finally done, with a clean
5205 is also cleaner. I think ultraTB is finally done, with a clean
5202 class structure. Names are also much cleaner (now there's proper
5206 class structure. Names are also much cleaner (now there's proper
5203 color tables, no need for every variable to also have 'color' in
5207 color tables, no need for every variable to also have 'color' in
5204 its name).
5208 its name).
5205
5209
5206 * Broke down genutils into separate files. Now genutils only
5210 * Broke down genutils into separate files. Now genutils only
5207 contains utility functions, and classes have been moved to their
5211 contains utility functions, and classes have been moved to their
5208 own files (they had enough independent functionality to warrant
5212 own files (they had enough independent functionality to warrant
5209 it): ConfigLoader, OutputTrap, Struct.
5213 it): ConfigLoader, OutputTrap, Struct.
5210
5214
5211 2001-12-05 Fernando Perez <fperez@colorado.edu>
5215 2001-12-05 Fernando Perez <fperez@colorado.edu>
5212
5216
5213 * IPython turns 21! Released version 0.1.21, as a candidate for
5217 * IPython turns 21! Released version 0.1.21, as a candidate for
5214 public consumption. If all goes well, release in a few days.
5218 public consumption. If all goes well, release in a few days.
5215
5219
5216 * Fixed path bug (files in Extensions/ directory wouldn't be found
5220 * Fixed path bug (files in Extensions/ directory wouldn't be found
5217 unless IPython/ was explicitly in sys.path).
5221 unless IPython/ was explicitly in sys.path).
5218
5222
5219 * Extended the FlexCompleter class as MagicCompleter to allow
5223 * Extended the FlexCompleter class as MagicCompleter to allow
5220 completion of @-starting lines.
5224 completion of @-starting lines.
5221
5225
5222 * Created __release__.py file as a central repository for release
5226 * Created __release__.py file as a central repository for release
5223 info that other files can read from.
5227 info that other files can read from.
5224
5228
5225 * Fixed small bug in logging: when logging was turned on in
5229 * Fixed small bug in logging: when logging was turned on in
5226 mid-session, old lines with special meanings (!@?) were being
5230 mid-session, old lines with special meanings (!@?) were being
5227 logged without the prepended comment, which is necessary since
5231 logged without the prepended comment, which is necessary since
5228 they are not truly valid python syntax. This should make session
5232 they are not truly valid python syntax. This should make session
5229 restores produce less errors.
5233 restores produce less errors.
5230
5234
5231 * The namespace cleanup forced me to make a FlexCompleter class
5235 * The namespace cleanup forced me to make a FlexCompleter class
5232 which is nothing but a ripoff of rlcompleter, but with selectable
5236 which is nothing but a ripoff of rlcompleter, but with selectable
5233 namespace (rlcompleter only works in __main__.__dict__). I'll try
5237 namespace (rlcompleter only works in __main__.__dict__). I'll try
5234 to submit a note to the authors to see if this change can be
5238 to submit a note to the authors to see if this change can be
5235 incorporated in future rlcompleter releases (Dec.6: done)
5239 incorporated in future rlcompleter releases (Dec.6: done)
5236
5240
5237 * More fixes to namespace handling. It was a mess! Now all
5241 * More fixes to namespace handling. It was a mess! Now all
5238 explicit references to __main__.__dict__ are gone (except when
5242 explicit references to __main__.__dict__ are gone (except when
5239 really needed) and everything is handled through the namespace
5243 really needed) and everything is handled through the namespace
5240 dicts in the IPython instance. We seem to be getting somewhere
5244 dicts in the IPython instance. We seem to be getting somewhere
5241 with this, finally...
5245 with this, finally...
5242
5246
5243 * Small documentation updates.
5247 * Small documentation updates.
5244
5248
5245 * Created the Extensions directory under IPython (with an
5249 * Created the Extensions directory under IPython (with an
5246 __init__.py). Put the PhysicalQ stuff there. This directory should
5250 __init__.py). Put the PhysicalQ stuff there. This directory should
5247 be used for all special-purpose extensions.
5251 be used for all special-purpose extensions.
5248
5252
5249 * File renaming:
5253 * File renaming:
5250 ipythonlib --> ipmaker
5254 ipythonlib --> ipmaker
5251 ipplib --> iplib
5255 ipplib --> iplib
5252 This makes a bit more sense in terms of what these files actually do.
5256 This makes a bit more sense in terms of what these files actually do.
5253
5257
5254 * Moved all the classes and functions in ipythonlib to ipplib, so
5258 * Moved all the classes and functions in ipythonlib to ipplib, so
5255 now ipythonlib only has make_IPython(). This will ease up its
5259 now ipythonlib only has make_IPython(). This will ease up its
5256 splitting in smaller functional chunks later.
5260 splitting in smaller functional chunks later.
5257
5261
5258 * Cleaned up (done, I think) output of @whos. Better column
5262 * Cleaned up (done, I think) output of @whos. Better column
5259 formatting, and now shows str(var) for as much as it can, which is
5263 formatting, and now shows str(var) for as much as it can, which is
5260 typically what one gets with a 'print var'.
5264 typically what one gets with a 'print var'.
5261
5265
5262 2001-12-04 Fernando Perez <fperez@colorado.edu>
5266 2001-12-04 Fernando Perez <fperez@colorado.edu>
5263
5267
5264 * Fixed namespace problems. Now builtin/IPyhton/user names get
5268 * Fixed namespace problems. Now builtin/IPyhton/user names get
5265 properly reported in their namespace. Internal namespace handling
5269 properly reported in their namespace. Internal namespace handling
5266 is finally getting decent (not perfect yet, but much better than
5270 is finally getting decent (not perfect yet, but much better than
5267 the ad-hoc mess we had).
5271 the ad-hoc mess we had).
5268
5272
5269 * Removed -exit option. If people just want to run a python
5273 * Removed -exit option. If people just want to run a python
5270 script, that's what the normal interpreter is for. Less
5274 script, that's what the normal interpreter is for. Less
5271 unnecessary options, less chances for bugs.
5275 unnecessary options, less chances for bugs.
5272
5276
5273 * Added a crash handler which generates a complete post-mortem if
5277 * Added a crash handler which generates a complete post-mortem if
5274 IPython crashes. This will help a lot in tracking bugs down the
5278 IPython crashes. This will help a lot in tracking bugs down the
5275 road.
5279 road.
5276
5280
5277 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5281 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5278 which were boud to functions being reassigned would bypass the
5282 which were boud to functions being reassigned would bypass the
5279 logger, breaking the sync of _il with the prompt counter. This
5283 logger, breaking the sync of _il with the prompt counter. This
5280 would then crash IPython later when a new line was logged.
5284 would then crash IPython later when a new line was logged.
5281
5285
5282 2001-12-02 Fernando Perez <fperez@colorado.edu>
5286 2001-12-02 Fernando Perez <fperez@colorado.edu>
5283
5287
5284 * Made IPython a package. This means people don't have to clutter
5288 * Made IPython a package. This means people don't have to clutter
5285 their sys.path with yet another directory. Changed the INSTALL
5289 their sys.path with yet another directory. Changed the INSTALL
5286 file accordingly.
5290 file accordingly.
5287
5291
5288 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5292 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5289 sorts its output (so @who shows it sorted) and @whos formats the
5293 sorts its output (so @who shows it sorted) and @whos formats the
5290 table according to the width of the first column. Nicer, easier to
5294 table according to the width of the first column. Nicer, easier to
5291 read. Todo: write a generic table_format() which takes a list of
5295 read. Todo: write a generic table_format() which takes a list of
5292 lists and prints it nicely formatted, with optional row/column
5296 lists and prints it nicely formatted, with optional row/column
5293 separators and proper padding and justification.
5297 separators and proper padding and justification.
5294
5298
5295 * Released 0.1.20
5299 * Released 0.1.20
5296
5300
5297 * Fixed bug in @log which would reverse the inputcache list (a
5301 * Fixed bug in @log which would reverse the inputcache list (a
5298 copy operation was missing).
5302 copy operation was missing).
5299
5303
5300 * Code cleanup. @config was changed to use page(). Better, since
5304 * Code cleanup. @config was changed to use page(). Better, since
5301 its output is always quite long.
5305 its output is always quite long.
5302
5306
5303 * Itpl is back as a dependency. I was having too many problems
5307 * Itpl is back as a dependency. I was having too many problems
5304 getting the parametric aliases to work reliably, and it's just
5308 getting the parametric aliases to work reliably, and it's just
5305 easier to code weird string operations with it than playing %()s
5309 easier to code weird string operations with it than playing %()s
5306 games. It's only ~6k, so I don't think it's too big a deal.
5310 games. It's only ~6k, so I don't think it's too big a deal.
5307
5311
5308 * Found (and fixed) a very nasty bug with history. !lines weren't
5312 * Found (and fixed) a very nasty bug with history. !lines weren't
5309 getting cached, and the out of sync caches would crash
5313 getting cached, and the out of sync caches would crash
5310 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5314 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5311 division of labor a bit better. Bug fixed, cleaner structure.
5315 division of labor a bit better. Bug fixed, cleaner structure.
5312
5316
5313 2001-12-01 Fernando Perez <fperez@colorado.edu>
5317 2001-12-01 Fernando Perez <fperez@colorado.edu>
5314
5318
5315 * Released 0.1.19
5319 * Released 0.1.19
5316
5320
5317 * Added option -n to @hist to prevent line number printing. Much
5321 * Added option -n to @hist to prevent line number printing. Much
5318 easier to copy/paste code this way.
5322 easier to copy/paste code this way.
5319
5323
5320 * Created global _il to hold the input list. Allows easy
5324 * Created global _il to hold the input list. Allows easy
5321 re-execution of blocks of code by slicing it (inspired by Janko's
5325 re-execution of blocks of code by slicing it (inspired by Janko's
5322 comment on 'macros').
5326 comment on 'macros').
5323
5327
5324 * Small fixes and doc updates.
5328 * Small fixes and doc updates.
5325
5329
5326 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5330 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5327 much too fragile with automagic. Handles properly multi-line
5331 much too fragile with automagic. Handles properly multi-line
5328 statements and takes parameters.
5332 statements and takes parameters.
5329
5333
5330 2001-11-30 Fernando Perez <fperez@colorado.edu>
5334 2001-11-30 Fernando Perez <fperez@colorado.edu>
5331
5335
5332 * Version 0.1.18 released.
5336 * Version 0.1.18 released.
5333
5337
5334 * Fixed nasty namespace bug in initial module imports.
5338 * Fixed nasty namespace bug in initial module imports.
5335
5339
5336 * Added copyright/license notes to all code files (except
5340 * Added copyright/license notes to all code files (except
5337 DPyGetOpt). For the time being, LGPL. That could change.
5341 DPyGetOpt). For the time being, LGPL. That could change.
5338
5342
5339 * Rewrote a much nicer README, updated INSTALL, cleaned up
5343 * Rewrote a much nicer README, updated INSTALL, cleaned up
5340 ipythonrc-* samples.
5344 ipythonrc-* samples.
5341
5345
5342 * Overall code/documentation cleanup. Basically ready for
5346 * Overall code/documentation cleanup. Basically ready for
5343 release. Only remaining thing: licence decision (LGPL?).
5347 release. Only remaining thing: licence decision (LGPL?).
5344
5348
5345 * Converted load_config to a class, ConfigLoader. Now recursion
5349 * Converted load_config to a class, ConfigLoader. Now recursion
5346 control is better organized. Doesn't include the same file twice.
5350 control is better organized. Doesn't include the same file twice.
5347
5351
5348 2001-11-29 Fernando Perez <fperez@colorado.edu>
5352 2001-11-29 Fernando Perez <fperez@colorado.edu>
5349
5353
5350 * Got input history working. Changed output history variables from
5354 * Got input history working. Changed output history variables from
5351 _p to _o so that _i is for input and _o for output. Just cleaner
5355 _p to _o so that _i is for input and _o for output. Just cleaner
5352 convention.
5356 convention.
5353
5357
5354 * Implemented parametric aliases. This pretty much allows the
5358 * Implemented parametric aliases. This pretty much allows the
5355 alias system to offer full-blown shell convenience, I think.
5359 alias system to offer full-blown shell convenience, I think.
5356
5360
5357 * Version 0.1.17 released, 0.1.18 opened.
5361 * Version 0.1.17 released, 0.1.18 opened.
5358
5362
5359 * dot_ipython/ipythonrc (alias): added documentation.
5363 * dot_ipython/ipythonrc (alias): added documentation.
5360 (xcolor): Fixed small bug (xcolors -> xcolor)
5364 (xcolor): Fixed small bug (xcolors -> xcolor)
5361
5365
5362 * Changed the alias system. Now alias is a magic command to define
5366 * Changed the alias system. Now alias is a magic command to define
5363 aliases just like the shell. Rationale: the builtin magics should
5367 aliases just like the shell. Rationale: the builtin magics should
5364 be there for things deeply connected to IPython's
5368 be there for things deeply connected to IPython's
5365 architecture. And this is a much lighter system for what I think
5369 architecture. And this is a much lighter system for what I think
5366 is the really important feature: allowing users to define quickly
5370 is the really important feature: allowing users to define quickly
5367 magics that will do shell things for them, so they can customize
5371 magics that will do shell things for them, so they can customize
5368 IPython easily to match their work habits. If someone is really
5372 IPython easily to match their work habits. If someone is really
5369 desperate to have another name for a builtin alias, they can
5373 desperate to have another name for a builtin alias, they can
5370 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5374 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5371 works.
5375 works.
5372
5376
5373 2001-11-28 Fernando Perez <fperez@colorado.edu>
5377 2001-11-28 Fernando Perez <fperez@colorado.edu>
5374
5378
5375 * Changed @file so that it opens the source file at the proper
5379 * Changed @file so that it opens the source file at the proper
5376 line. Since it uses less, if your EDITOR environment is
5380 line. Since it uses less, if your EDITOR environment is
5377 configured, typing v will immediately open your editor of choice
5381 configured, typing v will immediately open your editor of choice
5378 right at the line where the object is defined. Not as quick as
5382 right at the line where the object is defined. Not as quick as
5379 having a direct @edit command, but for all intents and purposes it
5383 having a direct @edit command, but for all intents and purposes it
5380 works. And I don't have to worry about writing @edit to deal with
5384 works. And I don't have to worry about writing @edit to deal with
5381 all the editors, less does that.
5385 all the editors, less does that.
5382
5386
5383 * Version 0.1.16 released, 0.1.17 opened.
5387 * Version 0.1.16 released, 0.1.17 opened.
5384
5388
5385 * Fixed some nasty bugs in the page/page_dumb combo that could
5389 * Fixed some nasty bugs in the page/page_dumb combo that could
5386 crash IPython.
5390 crash IPython.
5387
5391
5388 2001-11-27 Fernando Perez <fperez@colorado.edu>
5392 2001-11-27 Fernando Perez <fperez@colorado.edu>
5389
5393
5390 * Version 0.1.15 released, 0.1.16 opened.
5394 * Version 0.1.15 released, 0.1.16 opened.
5391
5395
5392 * Finally got ? and ?? to work for undefined things: now it's
5396 * Finally got ? and ?? to work for undefined things: now it's
5393 possible to type {}.get? and get information about the get method
5397 possible to type {}.get? and get information about the get method
5394 of dicts, or os.path? even if only os is defined (so technically
5398 of dicts, or os.path? even if only os is defined (so technically
5395 os.path isn't). Works at any level. For example, after import os,
5399 os.path isn't). Works at any level. For example, after import os,
5396 os?, os.path?, os.path.abspath? all work. This is great, took some
5400 os?, os.path?, os.path.abspath? all work. This is great, took some
5397 work in _ofind.
5401 work in _ofind.
5398
5402
5399 * Fixed more bugs with logging. The sanest way to do it was to add
5403 * Fixed more bugs with logging. The sanest way to do it was to add
5400 to @log a 'mode' parameter. Killed two in one shot (this mode
5404 to @log a 'mode' parameter. Killed two in one shot (this mode
5401 option was a request of Janko's). I think it's finally clean
5405 option was a request of Janko's). I think it's finally clean
5402 (famous last words).
5406 (famous last words).
5403
5407
5404 * Added a page_dumb() pager which does a decent job of paging on
5408 * Added a page_dumb() pager which does a decent job of paging on
5405 screen, if better things (like less) aren't available. One less
5409 screen, if better things (like less) aren't available. One less
5406 unix dependency (someday maybe somebody will port this to
5410 unix dependency (someday maybe somebody will port this to
5407 windows).
5411 windows).
5408
5412
5409 * Fixed problem in magic_log: would lock of logging out if log
5413 * Fixed problem in magic_log: would lock of logging out if log
5410 creation failed (because it would still think it had succeeded).
5414 creation failed (because it would still think it had succeeded).
5411
5415
5412 * Improved the page() function using curses to auto-detect screen
5416 * Improved the page() function using curses to auto-detect screen
5413 size. Now it can make a much better decision on whether to print
5417 size. Now it can make a much better decision on whether to print
5414 or page a string. Option screen_length was modified: a value 0
5418 or page a string. Option screen_length was modified: a value 0
5415 means auto-detect, and that's the default now.
5419 means auto-detect, and that's the default now.
5416
5420
5417 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5421 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5418 go out. I'll test it for a few days, then talk to Janko about
5422 go out. I'll test it for a few days, then talk to Janko about
5419 licences and announce it.
5423 licences and announce it.
5420
5424
5421 * Fixed the length of the auto-generated ---> prompt which appears
5425 * Fixed the length of the auto-generated ---> prompt which appears
5422 for auto-parens and auto-quotes. Getting this right isn't trivial,
5426 for auto-parens and auto-quotes. Getting this right isn't trivial,
5423 with all the color escapes, different prompt types and optional
5427 with all the color escapes, different prompt types and optional
5424 separators. But it seems to be working in all the combinations.
5428 separators. But it seems to be working in all the combinations.
5425
5429
5426 2001-11-26 Fernando Perez <fperez@colorado.edu>
5430 2001-11-26 Fernando Perez <fperez@colorado.edu>
5427
5431
5428 * Wrote a regexp filter to get option types from the option names
5432 * Wrote a regexp filter to get option types from the option names
5429 string. This eliminates the need to manually keep two duplicate
5433 string. This eliminates the need to manually keep two duplicate
5430 lists.
5434 lists.
5431
5435
5432 * Removed the unneeded check_option_names. Now options are handled
5436 * Removed the unneeded check_option_names. Now options are handled
5433 in a much saner manner and it's easy to visually check that things
5437 in a much saner manner and it's easy to visually check that things
5434 are ok.
5438 are ok.
5435
5439
5436 * Updated version numbers on all files I modified to carry a
5440 * Updated version numbers on all files I modified to carry a
5437 notice so Janko and Nathan have clear version markers.
5441 notice so Janko and Nathan have clear version markers.
5438
5442
5439 * Updated docstring for ultraTB with my changes. I should send
5443 * Updated docstring for ultraTB with my changes. I should send
5440 this to Nathan.
5444 this to Nathan.
5441
5445
5442 * Lots of small fixes. Ran everything through pychecker again.
5446 * Lots of small fixes. Ran everything through pychecker again.
5443
5447
5444 * Made loading of deep_reload an cmd line option. If it's not too
5448 * Made loading of deep_reload an cmd line option. If it's not too
5445 kosher, now people can just disable it. With -nodeep_reload it's
5449 kosher, now people can just disable it. With -nodeep_reload it's
5446 still available as dreload(), it just won't overwrite reload().
5450 still available as dreload(), it just won't overwrite reload().
5447
5451
5448 * Moved many options to the no| form (-opt and -noopt
5452 * Moved many options to the no| form (-opt and -noopt
5449 accepted). Cleaner.
5453 accepted). Cleaner.
5450
5454
5451 * Changed magic_log so that if called with no parameters, it uses
5455 * Changed magic_log so that if called with no parameters, it uses
5452 'rotate' mode. That way auto-generated logs aren't automatically
5456 'rotate' mode. That way auto-generated logs aren't automatically
5453 over-written. For normal logs, now a backup is made if it exists
5457 over-written. For normal logs, now a backup is made if it exists
5454 (only 1 level of backups). A new 'backup' mode was added to the
5458 (only 1 level of backups). A new 'backup' mode was added to the
5455 Logger class to support this. This was a request by Janko.
5459 Logger class to support this. This was a request by Janko.
5456
5460
5457 * Added @logoff/@logon to stop/restart an active log.
5461 * Added @logoff/@logon to stop/restart an active log.
5458
5462
5459 * Fixed a lot of bugs in log saving/replay. It was pretty
5463 * Fixed a lot of bugs in log saving/replay. It was pretty
5460 broken. Now special lines (!@,/) appear properly in the command
5464 broken. Now special lines (!@,/) appear properly in the command
5461 history after a log replay.
5465 history after a log replay.
5462
5466
5463 * Tried and failed to implement full session saving via pickle. My
5467 * Tried and failed to implement full session saving via pickle. My
5464 idea was to pickle __main__.__dict__, but modules can't be
5468 idea was to pickle __main__.__dict__, but modules can't be
5465 pickled. This would be a better alternative to replaying logs, but
5469 pickled. This would be a better alternative to replaying logs, but
5466 seems quite tricky to get to work. Changed -session to be called
5470 seems quite tricky to get to work. Changed -session to be called
5467 -logplay, which more accurately reflects what it does. And if we
5471 -logplay, which more accurately reflects what it does. And if we
5468 ever get real session saving working, -session is now available.
5472 ever get real session saving working, -session is now available.
5469
5473
5470 * Implemented color schemes for prompts also. As for tracebacks,
5474 * Implemented color schemes for prompts also. As for tracebacks,
5471 currently only NoColor and Linux are supported. But now the
5475 currently only NoColor and Linux are supported. But now the
5472 infrastructure is in place, based on a generic ColorScheme
5476 infrastructure is in place, based on a generic ColorScheme
5473 class. So writing and activating new schemes both for the prompts
5477 class. So writing and activating new schemes both for the prompts
5474 and the tracebacks should be straightforward.
5478 and the tracebacks should be straightforward.
5475
5479
5476 * Version 0.1.13 released, 0.1.14 opened.
5480 * Version 0.1.13 released, 0.1.14 opened.
5477
5481
5478 * Changed handling of options for output cache. Now counter is
5482 * Changed handling of options for output cache. Now counter is
5479 hardwired starting at 1 and one specifies the maximum number of
5483 hardwired starting at 1 and one specifies the maximum number of
5480 entries *in the outcache* (not the max prompt counter). This is
5484 entries *in the outcache* (not the max prompt counter). This is
5481 much better, since many statements won't increase the cache
5485 much better, since many statements won't increase the cache
5482 count. It also eliminated some confusing options, now there's only
5486 count. It also eliminated some confusing options, now there's only
5483 one: cache_size.
5487 one: cache_size.
5484
5488
5485 * Added 'alias' magic function and magic_alias option in the
5489 * Added 'alias' magic function and magic_alias option in the
5486 ipythonrc file. Now the user can easily define whatever names he
5490 ipythonrc file. Now the user can easily define whatever names he
5487 wants for the magic functions without having to play weird
5491 wants for the magic functions without having to play weird
5488 namespace games. This gives IPython a real shell-like feel.
5492 namespace games. This gives IPython a real shell-like feel.
5489
5493
5490 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5494 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5491 @ or not).
5495 @ or not).
5492
5496
5493 This was one of the last remaining 'visible' bugs (that I know
5497 This was one of the last remaining 'visible' bugs (that I know
5494 of). I think if I can clean up the session loading so it works
5498 of). I think if I can clean up the session loading so it works
5495 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5499 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5496 about licensing).
5500 about licensing).
5497
5501
5498 2001-11-25 Fernando Perez <fperez@colorado.edu>
5502 2001-11-25 Fernando Perez <fperez@colorado.edu>
5499
5503
5500 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5504 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5501 there's a cleaner distinction between what ? and ?? show.
5505 there's a cleaner distinction between what ? and ?? show.
5502
5506
5503 * Added screen_length option. Now the user can define his own
5507 * Added screen_length option. Now the user can define his own
5504 screen size for page() operations.
5508 screen size for page() operations.
5505
5509
5506 * Implemented magic shell-like functions with automatic code
5510 * Implemented magic shell-like functions with automatic code
5507 generation. Now adding another function is just a matter of adding
5511 generation. Now adding another function is just a matter of adding
5508 an entry to a dict, and the function is dynamically generated at
5512 an entry to a dict, and the function is dynamically generated at
5509 run-time. Python has some really cool features!
5513 run-time. Python has some really cool features!
5510
5514
5511 * Renamed many options to cleanup conventions a little. Now all
5515 * Renamed many options to cleanup conventions a little. Now all
5512 are lowercase, and only underscores where needed. Also in the code
5516 are lowercase, and only underscores where needed. Also in the code
5513 option name tables are clearer.
5517 option name tables are clearer.
5514
5518
5515 * Changed prompts a little. Now input is 'In [n]:' instead of
5519 * Changed prompts a little. Now input is 'In [n]:' instead of
5516 'In[n]:='. This allows it the numbers to be aligned with the
5520 'In[n]:='. This allows it the numbers to be aligned with the
5517 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5521 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5518 Python (it was a Mathematica thing). The '...' continuation prompt
5522 Python (it was a Mathematica thing). The '...' continuation prompt
5519 was also changed a little to align better.
5523 was also changed a little to align better.
5520
5524
5521 * Fixed bug when flushing output cache. Not all _p<n> variables
5525 * Fixed bug when flushing output cache. Not all _p<n> variables
5522 exist, so their deletion needs to be wrapped in a try:
5526 exist, so their deletion needs to be wrapped in a try:
5523
5527
5524 * Figured out how to properly use inspect.formatargspec() (it
5528 * Figured out how to properly use inspect.formatargspec() (it
5525 requires the args preceded by *). So I removed all the code from
5529 requires the args preceded by *). So I removed all the code from
5526 _get_pdef in Magic, which was just replicating that.
5530 _get_pdef in Magic, which was just replicating that.
5527
5531
5528 * Added test to prefilter to allow redefining magic function names
5532 * Added test to prefilter to allow redefining magic function names
5529 as variables. This is ok, since the @ form is always available,
5533 as variables. This is ok, since the @ form is always available,
5530 but whe should allow the user to define a variable called 'ls' if
5534 but whe should allow the user to define a variable called 'ls' if
5531 he needs it.
5535 he needs it.
5532
5536
5533 * Moved the ToDo information from README into a separate ToDo.
5537 * Moved the ToDo information from README into a separate ToDo.
5534
5538
5535 * General code cleanup and small bugfixes. I think it's close to a
5539 * General code cleanup and small bugfixes. I think it's close to a
5536 state where it can be released, obviously with a big 'beta'
5540 state where it can be released, obviously with a big 'beta'
5537 warning on it.
5541 warning on it.
5538
5542
5539 * Got the magic function split to work. Now all magics are defined
5543 * Got the magic function split to work. Now all magics are defined
5540 in a separate class. It just organizes things a bit, and now
5544 in a separate class. It just organizes things a bit, and now
5541 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5545 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5542 was too long).
5546 was too long).
5543
5547
5544 * Changed @clear to @reset to avoid potential confusions with
5548 * Changed @clear to @reset to avoid potential confusions with
5545 the shell command clear. Also renamed @cl to @clear, which does
5549 the shell command clear. Also renamed @cl to @clear, which does
5546 exactly what people expect it to from their shell experience.
5550 exactly what people expect it to from their shell experience.
5547
5551
5548 Added a check to the @reset command (since it's so
5552 Added a check to the @reset command (since it's so
5549 destructive, it's probably a good idea to ask for confirmation).
5553 destructive, it's probably a good idea to ask for confirmation).
5550 But now reset only works for full namespace resetting. Since the
5554 But now reset only works for full namespace resetting. Since the
5551 del keyword is already there for deleting a few specific
5555 del keyword is already there for deleting a few specific
5552 variables, I don't see the point of having a redundant magic
5556 variables, I don't see the point of having a redundant magic
5553 function for the same task.
5557 function for the same task.
5554
5558
5555 2001-11-24 Fernando Perez <fperez@colorado.edu>
5559 2001-11-24 Fernando Perez <fperez@colorado.edu>
5556
5560
5557 * Updated the builtin docs (esp. the ? ones).
5561 * Updated the builtin docs (esp. the ? ones).
5558
5562
5559 * Ran all the code through pychecker. Not terribly impressed with
5563 * Ran all the code through pychecker. Not terribly impressed with
5560 it: lots of spurious warnings and didn't really find anything of
5564 it: lots of spurious warnings and didn't really find anything of
5561 substance (just a few modules being imported and not used).
5565 substance (just a few modules being imported and not used).
5562
5566
5563 * Implemented the new ultraTB functionality into IPython. New
5567 * Implemented the new ultraTB functionality into IPython. New
5564 option: xcolors. This chooses color scheme. xmode now only selects
5568 option: xcolors. This chooses color scheme. xmode now only selects
5565 between Plain and Verbose. Better orthogonality.
5569 between Plain and Verbose. Better orthogonality.
5566
5570
5567 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5571 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5568 mode and color scheme for the exception handlers. Now it's
5572 mode and color scheme for the exception handlers. Now it's
5569 possible to have the verbose traceback with no coloring.
5573 possible to have the verbose traceback with no coloring.
5570
5574
5571 2001-11-23 Fernando Perez <fperez@colorado.edu>
5575 2001-11-23 Fernando Perez <fperez@colorado.edu>
5572
5576
5573 * Version 0.1.12 released, 0.1.13 opened.
5577 * Version 0.1.12 released, 0.1.13 opened.
5574
5578
5575 * Removed option to set auto-quote and auto-paren escapes by
5579 * Removed option to set auto-quote and auto-paren escapes by
5576 user. The chances of breaking valid syntax are just too high. If
5580 user. The chances of breaking valid syntax are just too high. If
5577 someone *really* wants, they can always dig into the code.
5581 someone *really* wants, they can always dig into the code.
5578
5582
5579 * Made prompt separators configurable.
5583 * Made prompt separators configurable.
5580
5584
5581 2001-11-22 Fernando Perez <fperez@colorado.edu>
5585 2001-11-22 Fernando Perez <fperez@colorado.edu>
5582
5586
5583 * Small bugfixes in many places.
5587 * Small bugfixes in many places.
5584
5588
5585 * Removed the MyCompleter class from ipplib. It seemed redundant
5589 * Removed the MyCompleter class from ipplib. It seemed redundant
5586 with the C-p,C-n history search functionality. Less code to
5590 with the C-p,C-n history search functionality. Less code to
5587 maintain.
5591 maintain.
5588
5592
5589 * Moved all the original ipython.py code into ipythonlib.py. Right
5593 * Moved all the original ipython.py code into ipythonlib.py. Right
5590 now it's just one big dump into a function called make_IPython, so
5594 now it's just one big dump into a function called make_IPython, so
5591 no real modularity has been gained. But at least it makes the
5595 no real modularity has been gained. But at least it makes the
5592 wrapper script tiny, and since ipythonlib is a module, it gets
5596 wrapper script tiny, and since ipythonlib is a module, it gets
5593 compiled and startup is much faster.
5597 compiled and startup is much faster.
5594
5598
5595 This is a reasobably 'deep' change, so we should test it for a
5599 This is a reasobably 'deep' change, so we should test it for a
5596 while without messing too much more with the code.
5600 while without messing too much more with the code.
5597
5601
5598 2001-11-21 Fernando Perez <fperez@colorado.edu>
5602 2001-11-21 Fernando Perez <fperez@colorado.edu>
5599
5603
5600 * Version 0.1.11 released, 0.1.12 opened for further work.
5604 * Version 0.1.11 released, 0.1.12 opened for further work.
5601
5605
5602 * Removed dependency on Itpl. It was only needed in one place. It
5606 * Removed dependency on Itpl. It was only needed in one place. It
5603 would be nice if this became part of python, though. It makes life
5607 would be nice if this became part of python, though. It makes life
5604 *a lot* easier in some cases.
5608 *a lot* easier in some cases.
5605
5609
5606 * Simplified the prefilter code a bit. Now all handlers are
5610 * Simplified the prefilter code a bit. Now all handlers are
5607 expected to explicitly return a value (at least a blank string).
5611 expected to explicitly return a value (at least a blank string).
5608
5612
5609 * Heavy edits in ipplib. Removed the help system altogether. Now
5613 * Heavy edits in ipplib. Removed the help system altogether. Now
5610 obj?/?? is used for inspecting objects, a magic @doc prints
5614 obj?/?? is used for inspecting objects, a magic @doc prints
5611 docstrings, and full-blown Python help is accessed via the 'help'
5615 docstrings, and full-blown Python help is accessed via the 'help'
5612 keyword. This cleans up a lot of code (less to maintain) and does
5616 keyword. This cleans up a lot of code (less to maintain) and does
5613 the job. Since 'help' is now a standard Python component, might as
5617 the job. Since 'help' is now a standard Python component, might as
5614 well use it and remove duplicate functionality.
5618 well use it and remove duplicate functionality.
5615
5619
5616 Also removed the option to use ipplib as a standalone program. By
5620 Also removed the option to use ipplib as a standalone program. By
5617 now it's too dependent on other parts of IPython to function alone.
5621 now it's too dependent on other parts of IPython to function alone.
5618
5622
5619 * Fixed bug in genutils.pager. It would crash if the pager was
5623 * Fixed bug in genutils.pager. It would crash if the pager was
5620 exited immediately after opening (broken pipe).
5624 exited immediately after opening (broken pipe).
5621
5625
5622 * Trimmed down the VerboseTB reporting a little. The header is
5626 * Trimmed down the VerboseTB reporting a little. The header is
5623 much shorter now and the repeated exception arguments at the end
5627 much shorter now and the repeated exception arguments at the end
5624 have been removed. For interactive use the old header seemed a bit
5628 have been removed. For interactive use the old header seemed a bit
5625 excessive.
5629 excessive.
5626
5630
5627 * Fixed small bug in output of @whos for variables with multi-word
5631 * Fixed small bug in output of @whos for variables with multi-word
5628 types (only first word was displayed).
5632 types (only first word was displayed).
5629
5633
5630 2001-11-17 Fernando Perez <fperez@colorado.edu>
5634 2001-11-17 Fernando Perez <fperez@colorado.edu>
5631
5635
5632 * Version 0.1.10 released, 0.1.11 opened for further work.
5636 * Version 0.1.10 released, 0.1.11 opened for further work.
5633
5637
5634 * Modified dirs and friends. dirs now *returns* the stack (not
5638 * Modified dirs and friends. dirs now *returns* the stack (not
5635 prints), so one can manipulate it as a variable. Convenient to
5639 prints), so one can manipulate it as a variable. Convenient to
5636 travel along many directories.
5640 travel along many directories.
5637
5641
5638 * Fixed bug in magic_pdef: would only work with functions with
5642 * Fixed bug in magic_pdef: would only work with functions with
5639 arguments with default values.
5643 arguments with default values.
5640
5644
5641 2001-11-14 Fernando Perez <fperez@colorado.edu>
5645 2001-11-14 Fernando Perez <fperez@colorado.edu>
5642
5646
5643 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5647 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5644 example with IPython. Various other minor fixes and cleanups.
5648 example with IPython. Various other minor fixes and cleanups.
5645
5649
5646 * Version 0.1.9 released, 0.1.10 opened for further work.
5650 * Version 0.1.9 released, 0.1.10 opened for further work.
5647
5651
5648 * Added sys.path to the list of directories searched in the
5652 * Added sys.path to the list of directories searched in the
5649 execfile= option. It used to be the current directory and the
5653 execfile= option. It used to be the current directory and the
5650 user's IPYTHONDIR only.
5654 user's IPYTHONDIR only.
5651
5655
5652 2001-11-13 Fernando Perez <fperez@colorado.edu>
5656 2001-11-13 Fernando Perez <fperez@colorado.edu>
5653
5657
5654 * Reinstated the raw_input/prefilter separation that Janko had
5658 * Reinstated the raw_input/prefilter separation that Janko had
5655 initially. This gives a more convenient setup for extending the
5659 initially. This gives a more convenient setup for extending the
5656 pre-processor from the outside: raw_input always gets a string,
5660 pre-processor from the outside: raw_input always gets a string,
5657 and prefilter has to process it. We can then redefine prefilter
5661 and prefilter has to process it. We can then redefine prefilter
5658 from the outside and implement extensions for special
5662 from the outside and implement extensions for special
5659 purposes.
5663 purposes.
5660
5664
5661 Today I got one for inputting PhysicalQuantity objects
5665 Today I got one for inputting PhysicalQuantity objects
5662 (from Scientific) without needing any function calls at
5666 (from Scientific) without needing any function calls at
5663 all. Extremely convenient, and it's all done as a user-level
5667 all. Extremely convenient, and it's all done as a user-level
5664 extension (no IPython code was touched). Now instead of:
5668 extension (no IPython code was touched). Now instead of:
5665 a = PhysicalQuantity(4.2,'m/s**2')
5669 a = PhysicalQuantity(4.2,'m/s**2')
5666 one can simply say
5670 one can simply say
5667 a = 4.2 m/s**2
5671 a = 4.2 m/s**2
5668 or even
5672 or even
5669 a = 4.2 m/s^2
5673 a = 4.2 m/s^2
5670
5674
5671 I use this, but it's also a proof of concept: IPython really is
5675 I use this, but it's also a proof of concept: IPython really is
5672 fully user-extensible, even at the level of the parsing of the
5676 fully user-extensible, even at the level of the parsing of the
5673 command line. It's not trivial, but it's perfectly doable.
5677 command line. It's not trivial, but it's perfectly doable.
5674
5678
5675 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5679 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5676 the problem of modules being loaded in the inverse order in which
5680 the problem of modules being loaded in the inverse order in which
5677 they were defined in
5681 they were defined in
5678
5682
5679 * Version 0.1.8 released, 0.1.9 opened for further work.
5683 * Version 0.1.8 released, 0.1.9 opened for further work.
5680
5684
5681 * Added magics pdef, source and file. They respectively show the
5685 * Added magics pdef, source and file. They respectively show the
5682 definition line ('prototype' in C), source code and full python
5686 definition line ('prototype' in C), source code and full python
5683 file for any callable object. The object inspector oinfo uses
5687 file for any callable object. The object inspector oinfo uses
5684 these to show the same information.
5688 these to show the same information.
5685
5689
5686 * Version 0.1.7 released, 0.1.8 opened for further work.
5690 * Version 0.1.7 released, 0.1.8 opened for further work.
5687
5691
5688 * Separated all the magic functions into a class called Magic. The
5692 * Separated all the magic functions into a class called Magic. The
5689 InteractiveShell class was becoming too big for Xemacs to handle
5693 InteractiveShell class was becoming too big for Xemacs to handle
5690 (de-indenting a line would lock it up for 10 seconds while it
5694 (de-indenting a line would lock it up for 10 seconds while it
5691 backtracked on the whole class!)
5695 backtracked on the whole class!)
5692
5696
5693 FIXME: didn't work. It can be done, but right now namespaces are
5697 FIXME: didn't work. It can be done, but right now namespaces are
5694 all messed up. Do it later (reverted it for now, so at least
5698 all messed up. Do it later (reverted it for now, so at least
5695 everything works as before).
5699 everything works as before).
5696
5700
5697 * Got the object introspection system (magic_oinfo) working! I
5701 * Got the object introspection system (magic_oinfo) working! I
5698 think this is pretty much ready for release to Janko, so he can
5702 think this is pretty much ready for release to Janko, so he can
5699 test it for a while and then announce it. Pretty much 100% of what
5703 test it for a while and then announce it. Pretty much 100% of what
5700 I wanted for the 'phase 1' release is ready. Happy, tired.
5704 I wanted for the 'phase 1' release is ready. Happy, tired.
5701
5705
5702 2001-11-12 Fernando Perez <fperez@colorado.edu>
5706 2001-11-12 Fernando Perez <fperez@colorado.edu>
5703
5707
5704 * Version 0.1.6 released, 0.1.7 opened for further work.
5708 * Version 0.1.6 released, 0.1.7 opened for further work.
5705
5709
5706 * Fixed bug in printing: it used to test for truth before
5710 * Fixed bug in printing: it used to test for truth before
5707 printing, so 0 wouldn't print. Now checks for None.
5711 printing, so 0 wouldn't print. Now checks for None.
5708
5712
5709 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5713 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5710 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5714 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5711 reaches by hand into the outputcache. Think of a better way to do
5715 reaches by hand into the outputcache. Think of a better way to do
5712 this later.
5716 this later.
5713
5717
5714 * Various small fixes thanks to Nathan's comments.
5718 * Various small fixes thanks to Nathan's comments.
5715
5719
5716 * Changed magic_pprint to magic_Pprint. This way it doesn't
5720 * Changed magic_pprint to magic_Pprint. This way it doesn't
5717 collide with pprint() and the name is consistent with the command
5721 collide with pprint() and the name is consistent with the command
5718 line option.
5722 line option.
5719
5723
5720 * Changed prompt counter behavior to be fully like
5724 * Changed prompt counter behavior to be fully like
5721 Mathematica's. That is, even input that doesn't return a result
5725 Mathematica's. That is, even input that doesn't return a result
5722 raises the prompt counter. The old behavior was kind of confusing
5726 raises the prompt counter. The old behavior was kind of confusing
5723 (getting the same prompt number several times if the operation
5727 (getting the same prompt number several times if the operation
5724 didn't return a result).
5728 didn't return a result).
5725
5729
5726 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5730 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5727
5731
5728 * Fixed -Classic mode (wasn't working anymore).
5732 * Fixed -Classic mode (wasn't working anymore).
5729
5733
5730 * Added colored prompts using Nathan's new code. Colors are
5734 * Added colored prompts using Nathan's new code. Colors are
5731 currently hardwired, they can be user-configurable. For
5735 currently hardwired, they can be user-configurable. For
5732 developers, they can be chosen in file ipythonlib.py, at the
5736 developers, they can be chosen in file ipythonlib.py, at the
5733 beginning of the CachedOutput class def.
5737 beginning of the CachedOutput class def.
5734
5738
5735 2001-11-11 Fernando Perez <fperez@colorado.edu>
5739 2001-11-11 Fernando Perez <fperez@colorado.edu>
5736
5740
5737 * Version 0.1.5 released, 0.1.6 opened for further work.
5741 * Version 0.1.5 released, 0.1.6 opened for further work.
5738
5742
5739 * Changed magic_env to *return* the environment as a dict (not to
5743 * Changed magic_env to *return* the environment as a dict (not to
5740 print it). This way it prints, but it can also be processed.
5744 print it). This way it prints, but it can also be processed.
5741
5745
5742 * Added Verbose exception reporting to interactive
5746 * Added Verbose exception reporting to interactive
5743 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5747 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5744 traceback. Had to make some changes to the ultraTB file. This is
5748 traceback. Had to make some changes to the ultraTB file. This is
5745 probably the last 'big' thing in my mental todo list. This ties
5749 probably the last 'big' thing in my mental todo list. This ties
5746 in with the next entry:
5750 in with the next entry:
5747
5751
5748 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5752 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5749 has to specify is Plain, Color or Verbose for all exception
5753 has to specify is Plain, Color or Verbose for all exception
5750 handling.
5754 handling.
5751
5755
5752 * Removed ShellServices option. All this can really be done via
5756 * Removed ShellServices option. All this can really be done via
5753 the magic system. It's easier to extend, cleaner and has automatic
5757 the magic system. It's easier to extend, cleaner and has automatic
5754 namespace protection and documentation.
5758 namespace protection and documentation.
5755
5759
5756 2001-11-09 Fernando Perez <fperez@colorado.edu>
5760 2001-11-09 Fernando Perez <fperez@colorado.edu>
5757
5761
5758 * Fixed bug in output cache flushing (missing parameter to
5762 * Fixed bug in output cache flushing (missing parameter to
5759 __init__). Other small bugs fixed (found using pychecker).
5763 __init__). Other small bugs fixed (found using pychecker).
5760
5764
5761 * Version 0.1.4 opened for bugfixing.
5765 * Version 0.1.4 opened for bugfixing.
5762
5766
5763 2001-11-07 Fernando Perez <fperez@colorado.edu>
5767 2001-11-07 Fernando Perez <fperez@colorado.edu>
5764
5768
5765 * Version 0.1.3 released, mainly because of the raw_input bug.
5769 * Version 0.1.3 released, mainly because of the raw_input bug.
5766
5770
5767 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5771 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5768 and when testing for whether things were callable, a call could
5772 and when testing for whether things were callable, a call could
5769 actually be made to certain functions. They would get called again
5773 actually be made to certain functions. They would get called again
5770 once 'really' executed, with a resulting double call. A disaster
5774 once 'really' executed, with a resulting double call. A disaster
5771 in many cases (list.reverse() would never work!).
5775 in many cases (list.reverse() would never work!).
5772
5776
5773 * Removed prefilter() function, moved its code to raw_input (which
5777 * Removed prefilter() function, moved its code to raw_input (which
5774 after all was just a near-empty caller for prefilter). This saves
5778 after all was just a near-empty caller for prefilter). This saves
5775 a function call on every prompt, and simplifies the class a tiny bit.
5779 a function call on every prompt, and simplifies the class a tiny bit.
5776
5780
5777 * Fix _ip to __ip name in magic example file.
5781 * Fix _ip to __ip name in magic example file.
5778
5782
5779 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5783 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5780 work with non-gnu versions of tar.
5784 work with non-gnu versions of tar.
5781
5785
5782 2001-11-06 Fernando Perez <fperez@colorado.edu>
5786 2001-11-06 Fernando Perez <fperez@colorado.edu>
5783
5787
5784 * Version 0.1.2. Just to keep track of the recent changes.
5788 * Version 0.1.2. Just to keep track of the recent changes.
5785
5789
5786 * Fixed nasty bug in output prompt routine. It used to check 'if
5790 * Fixed nasty bug in output prompt routine. It used to check 'if
5787 arg != None...'. Problem is, this fails if arg implements a
5791 arg != None...'. Problem is, this fails if arg implements a
5788 special comparison (__cmp__) which disallows comparing to
5792 special comparison (__cmp__) which disallows comparing to
5789 None. Found it when trying to use the PhysicalQuantity module from
5793 None. Found it when trying to use the PhysicalQuantity module from
5790 ScientificPython.
5794 ScientificPython.
5791
5795
5792 2001-11-05 Fernando Perez <fperez@colorado.edu>
5796 2001-11-05 Fernando Perez <fperez@colorado.edu>
5793
5797
5794 * Also added dirs. Now the pushd/popd/dirs family functions
5798 * Also added dirs. Now the pushd/popd/dirs family functions
5795 basically like the shell, with the added convenience of going home
5799 basically like the shell, with the added convenience of going home
5796 when called with no args.
5800 when called with no args.
5797
5801
5798 * pushd/popd slightly modified to mimic shell behavior more
5802 * pushd/popd slightly modified to mimic shell behavior more
5799 closely.
5803 closely.
5800
5804
5801 * Added env,pushd,popd from ShellServices as magic functions. I
5805 * Added env,pushd,popd from ShellServices as magic functions. I
5802 think the cleanest will be to port all desired functions from
5806 think the cleanest will be to port all desired functions from
5803 ShellServices as magics and remove ShellServices altogether. This
5807 ShellServices as magics and remove ShellServices altogether. This
5804 will provide a single, clean way of adding functionality
5808 will provide a single, clean way of adding functionality
5805 (shell-type or otherwise) to IP.
5809 (shell-type or otherwise) to IP.
5806
5810
5807 2001-11-04 Fernando Perez <fperez@colorado.edu>
5811 2001-11-04 Fernando Perez <fperez@colorado.edu>
5808
5812
5809 * Added .ipython/ directory to sys.path. This way users can keep
5813 * Added .ipython/ directory to sys.path. This way users can keep
5810 customizations there and access them via import.
5814 customizations there and access them via import.
5811
5815
5812 2001-11-03 Fernando Perez <fperez@colorado.edu>
5816 2001-11-03 Fernando Perez <fperez@colorado.edu>
5813
5817
5814 * Opened version 0.1.1 for new changes.
5818 * Opened version 0.1.1 for new changes.
5815
5819
5816 * Changed version number to 0.1.0: first 'public' release, sent to
5820 * Changed version number to 0.1.0: first 'public' release, sent to
5817 Nathan and Janko.
5821 Nathan and Janko.
5818
5822
5819 * Lots of small fixes and tweaks.
5823 * Lots of small fixes and tweaks.
5820
5824
5821 * Minor changes to whos format. Now strings are shown, snipped if
5825 * Minor changes to whos format. Now strings are shown, snipped if
5822 too long.
5826 too long.
5823
5827
5824 * Changed ShellServices to work on __main__ so they show up in @who
5828 * Changed ShellServices to work on __main__ so they show up in @who
5825
5829
5826 * Help also works with ? at the end of a line:
5830 * Help also works with ? at the end of a line:
5827 ?sin and sin?
5831 ?sin and sin?
5828 both produce the same effect. This is nice, as often I use the
5832 both produce the same effect. This is nice, as often I use the
5829 tab-complete to find the name of a method, but I used to then have
5833 tab-complete to find the name of a method, but I used to then have
5830 to go to the beginning of the line to put a ? if I wanted more
5834 to go to the beginning of the line to put a ? if I wanted more
5831 info. Now I can just add the ? and hit return. Convenient.
5835 info. Now I can just add the ? and hit return. Convenient.
5832
5836
5833 2001-11-02 Fernando Perez <fperez@colorado.edu>
5837 2001-11-02 Fernando Perez <fperez@colorado.edu>
5834
5838
5835 * Python version check (>=2.1) added.
5839 * Python version check (>=2.1) added.
5836
5840
5837 * Added LazyPython documentation. At this point the docs are quite
5841 * Added LazyPython documentation. At this point the docs are quite
5838 a mess. A cleanup is in order.
5842 a mess. A cleanup is in order.
5839
5843
5840 * Auto-installer created. For some bizarre reason, the zipfiles
5844 * Auto-installer created. For some bizarre reason, the zipfiles
5841 module isn't working on my system. So I made a tar version
5845 module isn't working on my system. So I made a tar version
5842 (hopefully the command line options in various systems won't kill
5846 (hopefully the command line options in various systems won't kill
5843 me).
5847 me).
5844
5848
5845 * Fixes to Struct in genutils. Now all dictionary-like methods are
5849 * Fixes to Struct in genutils. Now all dictionary-like methods are
5846 protected (reasonably).
5850 protected (reasonably).
5847
5851
5848 * Added pager function to genutils and changed ? to print usage
5852 * Added pager function to genutils and changed ? to print usage
5849 note through it (it was too long).
5853 note through it (it was too long).
5850
5854
5851 * Added the LazyPython functionality. Works great! I changed the
5855 * Added the LazyPython functionality. Works great! I changed the
5852 auto-quote escape to ';', it's on home row and next to '. But
5856 auto-quote escape to ';', it's on home row and next to '. But
5853 both auto-quote and auto-paren (still /) escapes are command-line
5857 both auto-quote and auto-paren (still /) escapes are command-line
5854 parameters.
5858 parameters.
5855
5859
5856
5860
5857 2001-11-01 Fernando Perez <fperez@colorado.edu>
5861 2001-11-01 Fernando Perez <fperez@colorado.edu>
5858
5862
5859 * Version changed to 0.0.7. Fairly large change: configuration now
5863 * Version changed to 0.0.7. Fairly large change: configuration now
5860 is all stored in a directory, by default .ipython. There, all
5864 is all stored in a directory, by default .ipython. There, all
5861 config files have normal looking names (not .names)
5865 config files have normal looking names (not .names)
5862
5866
5863 * Version 0.0.6 Released first to Lucas and Archie as a test
5867 * Version 0.0.6 Released first to Lucas and Archie as a test
5864 run. Since it's the first 'semi-public' release, change version to
5868 run. Since it's the first 'semi-public' release, change version to
5865 > 0.0.6 for any changes now.
5869 > 0.0.6 for any changes now.
5866
5870
5867 * Stuff I had put in the ipplib.py changelog:
5871 * Stuff I had put in the ipplib.py changelog:
5868
5872
5869 Changes to InteractiveShell:
5873 Changes to InteractiveShell:
5870
5874
5871 - Made the usage message a parameter.
5875 - Made the usage message a parameter.
5872
5876
5873 - Require the name of the shell variable to be given. It's a bit
5877 - Require the name of the shell variable to be given. It's a bit
5874 of a hack, but allows the name 'shell' not to be hardwired in the
5878 of a hack, but allows the name 'shell' not to be hardwired in the
5875 magic (@) handler, which is problematic b/c it requires
5879 magic (@) handler, which is problematic b/c it requires
5876 polluting the global namespace with 'shell'. This in turn is
5880 polluting the global namespace with 'shell'. This in turn is
5877 fragile: if a user redefines a variable called shell, things
5881 fragile: if a user redefines a variable called shell, things
5878 break.
5882 break.
5879
5883
5880 - magic @: all functions available through @ need to be defined
5884 - magic @: all functions available through @ need to be defined
5881 as magic_<name>, even though they can be called simply as
5885 as magic_<name>, even though they can be called simply as
5882 @<name>. This allows the special command @magic to gather
5886 @<name>. This allows the special command @magic to gather
5883 information automatically about all existing magic functions,
5887 information automatically about all existing magic functions,
5884 even if they are run-time user extensions, by parsing the shell
5888 even if they are run-time user extensions, by parsing the shell
5885 instance __dict__ looking for special magic_ names.
5889 instance __dict__ looking for special magic_ names.
5886
5890
5887 - mainloop: added *two* local namespace parameters. This allows
5891 - mainloop: added *two* local namespace parameters. This allows
5888 the class to differentiate between parameters which were there
5892 the class to differentiate between parameters which were there
5889 before and after command line initialization was processed. This
5893 before and after command line initialization was processed. This
5890 way, later @who can show things loaded at startup by the
5894 way, later @who can show things loaded at startup by the
5891 user. This trick was necessary to make session saving/reloading
5895 user. This trick was necessary to make session saving/reloading
5892 really work: ideally after saving/exiting/reloading a session,
5896 really work: ideally after saving/exiting/reloading a session,
5893 *everything* should look the same, including the output of @who. I
5897 *everything* should look the same, including the output of @who. I
5894 was only able to make this work with this double namespace
5898 was only able to make this work with this double namespace
5895 trick.
5899 trick.
5896
5900
5897 - added a header to the logfile which allows (almost) full
5901 - added a header to the logfile which allows (almost) full
5898 session restoring.
5902 session restoring.
5899
5903
5900 - prepend lines beginning with @ or !, with a and log
5904 - prepend lines beginning with @ or !, with a and log
5901 them. Why? !lines: may be useful to know what you did @lines:
5905 them. Why? !lines: may be useful to know what you did @lines:
5902 they may affect session state. So when restoring a session, at
5906 they may affect session state. So when restoring a session, at
5903 least inform the user of their presence. I couldn't quite get
5907 least inform the user of their presence. I couldn't quite get
5904 them to properly re-execute, but at least the user is warned.
5908 them to properly re-execute, but at least the user is warned.
5905
5909
5906 * Started ChangeLog.
5910 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now