##// END OF EJS Templates
- Close #52, patch by Stefan.
fperez -
Show More
@@ -1,2596 +1,2596 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 2197 2007-04-02 07:36:55Z fperez $
9 $Id: iplib.py 2201 2007-04-03 05:59:01Z fperez $
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 # 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,
464 # and it allows interpolation of variables in the user's namespace.
464 # and it allows interpolation of variables in the user's namespace.
465 self.system = lambda cmd: \
465 self.system = lambda cmd: \
466 shell(self.var_expand(cmd,depth=2),
466 shell(self.var_expand(cmd,depth=2),
467 header=self.rc.system_header,
467 header=self.rc.system_header,
468 verbose=self.rc.system_verbose)
468 verbose=self.rc.system_verbose)
469
469
470 # These are for getoutput and getoutputerror:
470 # These are for getoutput and getoutputerror:
471 self.getoutput = lambda cmd: \
471 self.getoutput = lambda cmd: \
472 getoutput(self.var_expand(cmd,depth=2),
472 getoutput(self.var_expand(cmd,depth=2),
473 header=self.rc.system_header,
473 header=self.rc.system_header,
474 verbose=self.rc.system_verbose)
474 verbose=self.rc.system_verbose)
475
475
476 self.getoutputerror = lambda cmd: \
476 self.getoutputerror = lambda cmd: \
477 getoutputerror(self.var_expand(cmd,depth=2),
477 getoutputerror(self.var_expand(cmd,depth=2),
478 header=self.rc.system_header,
478 header=self.rc.system_header,
479 verbose=self.rc.system_verbose)
479 verbose=self.rc.system_verbose)
480
480
481 # RegExp for splitting line contents into pre-char//first
481 # RegExp for splitting line contents into pre-char//first
482 # word-method//rest. For clarity, each group in on one line.
482 # word-method//rest. For clarity, each group in on one line.
483
483
484 # WARNING: update the regexp if the above escapes are changed, as they
484 # WARNING: update the regexp if the above escapes are changed, as they
485 # are hardwired in.
485 # are hardwired in.
486
486
487 # Don't get carried away with trying to make the autocalling catch too
487 # Don't get carried away with trying to make the autocalling catch too
488 # much: it's better to be conservative rather than to trigger hidden
488 # much: it's better to be conservative rather than to trigger hidden
489 # evals() somewhere and end up causing side effects.
489 # evals() somewhere and end up causing side effects.
490 self.line_split = re.compile(r'^(\s*[,;/]?\s*)'
490 self.line_split = re.compile(r'^(\s*[,;/]?\s*)'
491 r'([\?\w\.]+\w*\s*)'
491 r'([\?\w\.]+\w*\s*)'
492 r'(\(?.*$)')
492 r'(\(?.*$)')
493
493
494 self.shell_line_split = re.compile(r'^(\s*)'
494 self.shell_line_split = re.compile(r'^(\s*)'
495 r'(\S*\s*)'
495 r'(\S*\s*)'
496 r'(\(?.*$)')
496 r'(\(?.*$)')
497
497
498
498
499 # A simpler regexp used as a fallback if the above doesn't work. This
499 # A simpler regexp used as a fallback if the above doesn't work. This
500 # one is more conservative in how it partitions the input. This code
500 # one is more conservative in how it partitions the input. This code
501 # can probably be cleaned up to do everything with just one regexp, but
501 # can probably be cleaned up to do everything with just one regexp, but
502 # I'm afraid of breaking something; do it once the unit tests are in
502 # I'm afraid of breaking something; do it once the unit tests are in
503 # place.
503 # place.
504 self.line_split_fallback = re.compile(r'^(\s*)'
504 self.line_split_fallback = re.compile(r'^(\s*)'
505 r'([%\!\?\w\.]*)'
505 r'([%\!\?\w\.]*)'
506 r'(.*)')
506 r'(.*)')
507
507
508 # Original re, keep around for a while in case changes break something
508 # Original re, keep around for a while in case changes break something
509 #self.line_split = re.compile(r'(^[\s*!\?%,/]?)'
509 #self.line_split = re.compile(r'(^[\s*!\?%,/]?)'
510 # r'(\s*[\?\w\.]+\w*\s*)'
510 # r'(\s*[\?\w\.]+\w*\s*)'
511 # r'(\(?.*$)')
511 # r'(\(?.*$)')
512
512
513 # RegExp to identify potential function names
513 # RegExp to identify potential function names
514 self.re_fun_name = re.compile(r'[a-zA-Z_]([a-zA-Z0-9_.]*) *$')
514 self.re_fun_name = re.compile(r'[a-zA-Z_]([a-zA-Z0-9_.]*) *$')
515
515
516 # RegExp to exclude strings with this start from autocalling. In
516 # RegExp to exclude strings with this start from autocalling. In
517 # particular, all binary operators should be excluded, so that if foo
517 # particular, all binary operators should be excluded, so that if foo
518 # is callable, foo OP bar doesn't become foo(OP bar), which is
518 # is callable, foo OP bar doesn't become foo(OP bar), which is
519 # invalid. The characters '!=()' don't need to be checked for, as the
519 # invalid. The characters '!=()' don't need to be checked for, as the
520 # _prefilter routine explicitely does so, to catch direct calls and
520 # _prefilter routine explicitely does so, to catch direct calls and
521 # rebindings of existing names.
521 # rebindings of existing names.
522
522
523 # Warning: the '-' HAS TO BE AT THE END of the first group, otherwise
523 # Warning: the '-' HAS TO BE AT THE END of the first group, otherwise
524 # it affects the rest of the group in square brackets.
524 # it affects the rest of the group in square brackets.
525 self.re_exclude_auto = re.compile(r'^[<>,&^\|\*/\+-]'
525 self.re_exclude_auto = re.compile(r'^[<>,&^\|\*/\+-]'
526 '|^is |^not |^in |^and |^or ')
526 '|^is |^not |^in |^and |^or ')
527
527
528 # try to catch also methods for stuff in lists/tuples/dicts: off
528 # try to catch also methods for stuff in lists/tuples/dicts: off
529 # (experimental). For this to work, the line_split regexp would need
529 # (experimental). For this to work, the line_split regexp would need
530 # to be modified so it wouldn't break things at '['. That line is
530 # to be modified so it wouldn't break things at '['. That line is
531 # nasty enough that I shouldn't change it until I can test it _well_.
531 # nasty enough that I shouldn't change it until I can test it _well_.
532 #self.re_fun_name = re.compile (r'[a-zA-Z_]([a-zA-Z0-9_.\[\]]*) ?$')
532 #self.re_fun_name = re.compile (r'[a-zA-Z_]([a-zA-Z0-9_.\[\]]*) ?$')
533
533
534 # keep track of where we started running (mainly for crash post-mortem)
534 # keep track of where we started running (mainly for crash post-mortem)
535 self.starting_dir = os.getcwd()
535 self.starting_dir = os.getcwd()
536
536
537 # Various switches which can be set
537 # Various switches which can be set
538 self.CACHELENGTH = 5000 # this is cheap, it's just text
538 self.CACHELENGTH = 5000 # this is cheap, it's just text
539 self.BANNER = "Python %(version)s on %(platform)s\n" % sys.__dict__
539 self.BANNER = "Python %(version)s on %(platform)s\n" % sys.__dict__
540 self.banner2 = banner2
540 self.banner2 = banner2
541
541
542 # TraceBack handlers:
542 # TraceBack handlers:
543
543
544 # Syntax error handler.
544 # Syntax error handler.
545 self.SyntaxTB = SyntaxTB(color_scheme='NoColor')
545 self.SyntaxTB = SyntaxTB(color_scheme='NoColor')
546
546
547 # The interactive one is initialized with an offset, meaning we always
547 # The interactive one is initialized with an offset, meaning we always
548 # want to remove the topmost item in the traceback, which is our own
548 # want to remove the topmost item in the traceback, which is our own
549 # internal code. Valid modes: ['Plain','Context','Verbose']
549 # internal code. Valid modes: ['Plain','Context','Verbose']
550 self.InteractiveTB = ultraTB.AutoFormattedTB(mode = 'Plain',
550 self.InteractiveTB = ultraTB.AutoFormattedTB(mode = 'Plain',
551 color_scheme='NoColor',
551 color_scheme='NoColor',
552 tb_offset = 1)
552 tb_offset = 1)
553
553
554 # IPython itself shouldn't crash. This will produce a detailed
554 # IPython itself shouldn't crash. This will produce a detailed
555 # post-mortem if it does. But we only install the crash handler for
555 # post-mortem if it does. But we only install the crash handler for
556 # non-threaded shells, the threaded ones use a normal verbose reporter
556 # non-threaded shells, the threaded ones use a normal verbose reporter
557 # and lose the crash handler. This is because exceptions in the main
557 # and lose the crash handler. This is because exceptions in the main
558 # thread (such as in GUI code) propagate directly to sys.excepthook,
558 # thread (such as in GUI code) propagate directly to sys.excepthook,
559 # and there's no point in printing crash dumps for every user exception.
559 # and there's no point in printing crash dumps for every user exception.
560 if self.isthreaded:
560 if self.isthreaded:
561 ipCrashHandler = ultraTB.FormattedTB()
561 ipCrashHandler = ultraTB.FormattedTB()
562 else:
562 else:
563 from IPython import CrashHandler
563 from IPython import CrashHandler
564 ipCrashHandler = CrashHandler.IPythonCrashHandler(self)
564 ipCrashHandler = CrashHandler.IPythonCrashHandler(self)
565 self.set_crash_handler(ipCrashHandler)
565 self.set_crash_handler(ipCrashHandler)
566
566
567 # and add any custom exception handlers the user may have specified
567 # and add any custom exception handlers the user may have specified
568 self.set_custom_exc(*custom_exceptions)
568 self.set_custom_exc(*custom_exceptions)
569
569
570 # indentation management
570 # indentation management
571 self.autoindent = False
571 self.autoindent = False
572 self.indent_current_nsp = 0
572 self.indent_current_nsp = 0
573
573
574 # Make some aliases automatically
574 # Make some aliases automatically
575 # Prepare list of shell aliases to auto-define
575 # Prepare list of shell aliases to auto-define
576 if os.name == 'posix':
576 if os.name == 'posix':
577 auto_alias = ('mkdir mkdir', 'rmdir rmdir',
577 auto_alias = ('mkdir mkdir', 'rmdir rmdir',
578 'mv mv -i','rm rm -i','cp cp -i',
578 'mv mv -i','rm rm -i','cp cp -i',
579 'cat cat','less less','clear clear',
579 'cat cat','less less','clear clear',
580 # a better ls
580 # a better ls
581 'ls ls -F',
581 'ls ls -F',
582 # long ls
582 # long ls
583 'll ls -lF')
583 'll ls -lF')
584 # Extra ls aliases with color, which need special treatment on BSD
584 # Extra ls aliases with color, which need special treatment on BSD
585 # variants
585 # variants
586 ls_extra = ( # color ls
586 ls_extra = ( # color ls
587 'lc ls -F -o --color',
587 'lc ls -F -o --color',
588 # ls normal files only
588 # ls normal files only
589 'lf ls -F -o --color %l | grep ^-',
589 'lf ls -F -o --color %l | grep ^-',
590 # ls symbolic links
590 # ls symbolic links
591 'lk ls -F -o --color %l | grep ^l',
591 'lk ls -F -o --color %l | grep ^l',
592 # directories or links to directories,
592 # directories or links to directories,
593 'ldir ls -F -o --color %l | grep /$',
593 'ldir ls -F -o --color %l | grep /$',
594 # things which are executable
594 # things which are executable
595 'lx ls -F -o --color %l | grep ^-..x',
595 'lx ls -F -o --color %l | grep ^-..x',
596 )
596 )
597 # The BSDs don't ship GNU ls, so they don't understand the
597 # The BSDs don't ship GNU ls, so they don't understand the
598 # --color switch out of the box
598 # --color switch out of the box
599 if 'bsd' in sys.platform:
599 if 'bsd' in sys.platform:
600 ls_extra = ( # ls normal files only
600 ls_extra = ( # ls normal files only
601 'lf ls -lF | grep ^-',
601 'lf ls -lF | grep ^-',
602 # ls symbolic links
602 # ls symbolic links
603 'lk ls -lF | grep ^l',
603 'lk ls -lF | grep ^l',
604 # directories or links to directories,
604 # directories or links to directories,
605 'ldir ls -lF | grep /$',
605 'ldir ls -lF | grep /$',
606 # things which are executable
606 # things which are executable
607 'lx ls -lF | grep ^-..x',
607 'lx ls -lF | grep ^-..x',
608 )
608 )
609 auto_alias = auto_alias + ls_extra
609 auto_alias = auto_alias + ls_extra
610 elif os.name in ['nt','dos']:
610 elif os.name in ['nt','dos']:
611 auto_alias = ('dir dir /on', 'ls dir /on',
611 auto_alias = ('dir dir /on', 'ls dir /on',
612 'ddir dir /ad /on', 'ldir dir /ad /on',
612 'ddir dir /ad /on', 'ldir dir /ad /on',
613 'mkdir mkdir','rmdir rmdir','echo echo',
613 'mkdir mkdir','rmdir rmdir','echo echo',
614 'ren ren','cls cls','copy copy')
614 'ren ren','cls cls','copy copy')
615 else:
615 else:
616 auto_alias = ()
616 auto_alias = ()
617 self.auto_alias = [s.split(None,1) for s in auto_alias]
617 self.auto_alias = [s.split(None,1) for s in auto_alias]
618 # Call the actual (public) initializer
618 # Call the actual (public) initializer
619 self.init_auto_alias()
619 self.init_auto_alias()
620
620
621 # Produce a public API instance
621 # Produce a public API instance
622 self.api = IPython.ipapi.IPApi(self)
622 self.api = IPython.ipapi.IPApi(self)
623
623
624 # track which builtins we add, so we can clean up later
624 # track which builtins we add, so we can clean up later
625 self.builtins_added = {}
625 self.builtins_added = {}
626 # This method will add the necessary builtins for operation, but
626 # This method will add the necessary builtins for operation, but
627 # tracking what it did via the builtins_added dict.
627 # tracking what it did via the builtins_added dict.
628 self.add_builtins()
628 self.add_builtins()
629
629
630 # end __init__
630 # end __init__
631
631
632 def var_expand(self,cmd,depth=0):
632 def var_expand(self,cmd,depth=0):
633 """Expand python variables in a string.
633 """Expand python variables in a string.
634
634
635 The depth argument indicates how many frames above the caller should
635 The depth argument indicates how many frames above the caller should
636 be walked to look for the local namespace where to expand variables.
636 be walked to look for the local namespace where to expand variables.
637
637
638 The global namespace for expansion is always the user's interactive
638 The global namespace for expansion is always the user's interactive
639 namespace.
639 namespace.
640 """
640 """
641
641
642 return str(ItplNS(cmd.replace('#','\#'),
642 return str(ItplNS(cmd.replace('#','\#'),
643 self.user_ns, # globals
643 self.user_ns, # globals
644 # Skip our own frame in searching for locals:
644 # Skip our own frame in searching for locals:
645 sys._getframe(depth+1).f_locals # locals
645 sys._getframe(depth+1).f_locals # locals
646 ))
646 ))
647
647
648 def pre_config_initialization(self):
648 def pre_config_initialization(self):
649 """Pre-configuration init method
649 """Pre-configuration init method
650
650
651 This is called before the configuration files are processed to
651 This is called before the configuration files are processed to
652 prepare the services the config files might need.
652 prepare the services the config files might need.
653
653
654 self.rc already has reasonable default values at this point.
654 self.rc already has reasonable default values at this point.
655 """
655 """
656 rc = self.rc
656 rc = self.rc
657
657
658 self.db = pickleshare.PickleShareDB(rc.ipythondir + "/db")
658 self.db = pickleshare.PickleShareDB(rc.ipythondir + "/db")
659
659
660 def post_config_initialization(self):
660 def post_config_initialization(self):
661 """Post configuration init method
661 """Post configuration init method
662
662
663 This is called after the configuration files have been processed to
663 This is called after the configuration files have been processed to
664 'finalize' the initialization."""
664 'finalize' the initialization."""
665
665
666 rc = self.rc
666 rc = self.rc
667
667
668 # Object inspector
668 # Object inspector
669 self.inspector = OInspect.Inspector(OInspect.InspectColors,
669 self.inspector = OInspect.Inspector(OInspect.InspectColors,
670 PyColorize.ANSICodeColors,
670 PyColorize.ANSICodeColors,
671 'NoColor',
671 'NoColor',
672 rc.object_info_string_level)
672 rc.object_info_string_level)
673
673
674 # Load readline proper
674 # Load readline proper
675 if rc.readline:
675 if rc.readline:
676 self.init_readline()
676 self.init_readline()
677
677
678 # local shortcut, this is used a LOT
678 # local shortcut, this is used a LOT
679 self.log = self.logger.log
679 self.log = self.logger.log
680
680
681 # Initialize cache, set in/out prompts and printing system
681 # Initialize cache, set in/out prompts and printing system
682 self.outputcache = CachedOutput(self,
682 self.outputcache = CachedOutput(self,
683 rc.cache_size,
683 rc.cache_size,
684 rc.pprint,
684 rc.pprint,
685 input_sep = rc.separate_in,
685 input_sep = rc.separate_in,
686 output_sep = rc.separate_out,
686 output_sep = rc.separate_out,
687 output_sep2 = rc.separate_out2,
687 output_sep2 = rc.separate_out2,
688 ps1 = rc.prompt_in1,
688 ps1 = rc.prompt_in1,
689 ps2 = rc.prompt_in2,
689 ps2 = rc.prompt_in2,
690 ps_out = rc.prompt_out,
690 ps_out = rc.prompt_out,
691 pad_left = rc.prompts_pad_left)
691 pad_left = rc.prompts_pad_left)
692
692
693 # user may have over-ridden the default print hook:
693 # user may have over-ridden the default print hook:
694 try:
694 try:
695 self.outputcache.__class__.display = self.hooks.display
695 self.outputcache.__class__.display = self.hooks.display
696 except AttributeError:
696 except AttributeError:
697 pass
697 pass
698
698
699 # I don't like assigning globally to sys, because it means when
699 # I don't like assigning globally to sys, because it means when
700 # embedding instances, each embedded instance overrides the previous
700 # embedding instances, each embedded instance overrides the previous
701 # choice. But sys.displayhook seems to be called internally by exec,
701 # choice. But sys.displayhook seems to be called internally by exec,
702 # so I don't see a way around it. We first save the original and then
702 # so I don't see a way around it. We first save the original and then
703 # overwrite it.
703 # overwrite it.
704 self.sys_displayhook = sys.displayhook
704 self.sys_displayhook = sys.displayhook
705 sys.displayhook = self.outputcache
705 sys.displayhook = self.outputcache
706
706
707 # Set user colors (don't do it in the constructor above so that it
707 # Set user colors (don't do it in the constructor above so that it
708 # doesn't crash if colors option is invalid)
708 # doesn't crash if colors option is invalid)
709 self.magic_colors(rc.colors)
709 self.magic_colors(rc.colors)
710
710
711 # Set calling of pdb on exceptions
711 # Set calling of pdb on exceptions
712 self.call_pdb = rc.pdb
712 self.call_pdb = rc.pdb
713
713
714 # Load user aliases
714 # Load user aliases
715 for alias in rc.alias:
715 for alias in rc.alias:
716 self.magic_alias(alias)
716 self.magic_alias(alias)
717 self.hooks.late_startup_hook()
717 self.hooks.late_startup_hook()
718
718
719 batchrun = False
719 batchrun = False
720 for batchfile in [path(arg) for arg in self.rc.args
720 for batchfile in [path(arg) for arg in self.rc.args
721 if arg.lower().endswith('.ipy')]:
721 if arg.lower().endswith('.ipy')]:
722 if not batchfile.isfile():
722 if not batchfile.isfile():
723 print "No such batch file:", batchfile
723 print "No such batch file:", batchfile
724 continue
724 continue
725 self.api.runlines(batchfile.text())
725 self.api.runlines(batchfile.text())
726 batchrun = True
726 batchrun = True
727 if batchrun:
727 if batchrun:
728 self.exit_now = True
728 self.exit_now = True
729
729
730 def add_builtins(self):
730 def add_builtins(self):
731 """Store ipython references into the builtin namespace.
731 """Store ipython references into the builtin namespace.
732
732
733 Some parts of ipython operate via builtins injected here, which hold a
733 Some parts of ipython operate via builtins injected here, which hold a
734 reference to IPython itself."""
734 reference to IPython itself."""
735
735
736 # TODO: deprecate all except _ip; 'jobs' should be installed
736 # TODO: deprecate all except _ip; 'jobs' should be installed
737 # by an extension and the rest are under _ip, ipalias is redundant
737 # by an extension and the rest are under _ip, ipalias is redundant
738 builtins_new = dict(__IPYTHON__ = self,
738 builtins_new = dict(__IPYTHON__ = self,
739 ip_set_hook = self.set_hook,
739 ip_set_hook = self.set_hook,
740 jobs = self.jobs,
740 jobs = self.jobs,
741 ipmagic = wrap_deprecated(self.ipmagic,'_ip.magic()'),
741 ipmagic = wrap_deprecated(self.ipmagic,'_ip.magic()'),
742 ipalias = wrap_deprecated(self.ipalias),
742 ipalias = wrap_deprecated(self.ipalias),
743 ipsystem = wrap_deprecated(self.ipsystem,'_ip.system()'),
743 ipsystem = wrap_deprecated(self.ipsystem,'_ip.system()'),
744 _ip = self.api
744 _ip = self.api
745 )
745 )
746 for biname,bival in builtins_new.items():
746 for biname,bival in builtins_new.items():
747 try:
747 try:
748 # store the orignal value so we can restore it
748 # store the orignal value so we can restore it
749 self.builtins_added[biname] = __builtin__.__dict__[biname]
749 self.builtins_added[biname] = __builtin__.__dict__[biname]
750 except KeyError:
750 except KeyError:
751 # or mark that it wasn't defined, and we'll just delete it at
751 # or mark that it wasn't defined, and we'll just delete it at
752 # cleanup
752 # cleanup
753 self.builtins_added[biname] = Undefined
753 self.builtins_added[biname] = Undefined
754 __builtin__.__dict__[biname] = bival
754 __builtin__.__dict__[biname] = bival
755
755
756 # Keep in the builtins a flag for when IPython is active. We set it
756 # Keep in the builtins a flag for when IPython is active. We set it
757 # with setdefault so that multiple nested IPythons don't clobber one
757 # with setdefault so that multiple nested IPythons don't clobber one
758 # another. Each will increase its value by one upon being activated,
758 # another. Each will increase its value by one upon being activated,
759 # which also gives us a way to determine the nesting level.
759 # which also gives us a way to determine the nesting level.
760 __builtin__.__dict__.setdefault('__IPYTHON__active',0)
760 __builtin__.__dict__.setdefault('__IPYTHON__active',0)
761
761
762 def clean_builtins(self):
762 def clean_builtins(self):
763 """Remove any builtins which might have been added by add_builtins, or
763 """Remove any builtins which might have been added by add_builtins, or
764 restore overwritten ones to their previous values."""
764 restore overwritten ones to their previous values."""
765 for biname,bival in self.builtins_added.items():
765 for biname,bival in self.builtins_added.items():
766 if bival is Undefined:
766 if bival is Undefined:
767 del __builtin__.__dict__[biname]
767 del __builtin__.__dict__[biname]
768 else:
768 else:
769 __builtin__.__dict__[biname] = bival
769 __builtin__.__dict__[biname] = bival
770 self.builtins_added.clear()
770 self.builtins_added.clear()
771
771
772 def set_hook(self,name,hook, priority = 50, str_key = None, re_key = None):
772 def set_hook(self,name,hook, priority = 50, str_key = None, re_key = None):
773 """set_hook(name,hook) -> sets an internal IPython hook.
773 """set_hook(name,hook) -> sets an internal IPython hook.
774
774
775 IPython exposes some of its internal API as user-modifiable hooks. By
775 IPython exposes some of its internal API as user-modifiable hooks. By
776 adding your function to one of these hooks, you can modify IPython's
776 adding your function to one of these hooks, you can modify IPython's
777 behavior to call at runtime your own routines."""
777 behavior to call at runtime your own routines."""
778
778
779 # At some point in the future, this should validate the hook before it
779 # At some point in the future, this should validate the hook before it
780 # accepts it. Probably at least check that the hook takes the number
780 # accepts it. Probably at least check that the hook takes the number
781 # of args it's supposed to.
781 # of args it's supposed to.
782
782
783 f = new.instancemethod(hook,self,self.__class__)
783 f = new.instancemethod(hook,self,self.__class__)
784
784
785 # check if the hook is for strdispatcher first
785 # check if the hook is for strdispatcher first
786 if str_key is not None:
786 if str_key is not None:
787 sdp = self.strdispatchers.get(name, StrDispatch())
787 sdp = self.strdispatchers.get(name, StrDispatch())
788 sdp.add_s(str_key, f, priority )
788 sdp.add_s(str_key, f, priority )
789 self.strdispatchers[name] = sdp
789 self.strdispatchers[name] = sdp
790 return
790 return
791 if re_key is not None:
791 if re_key is not None:
792 sdp = self.strdispatchers.get(name, StrDispatch())
792 sdp = self.strdispatchers.get(name, StrDispatch())
793 sdp.add_re(re.compile(re_key), f, priority )
793 sdp.add_re(re.compile(re_key), f, priority )
794 self.strdispatchers[name] = sdp
794 self.strdispatchers[name] = sdp
795 return
795 return
796
796
797 dp = getattr(self.hooks, name, None)
797 dp = getattr(self.hooks, name, None)
798 if name not in IPython.hooks.__all__:
798 if name not in IPython.hooks.__all__:
799 print "Warning! Hook '%s' is not one of %s" % (name, IPython.hooks.__all__ )
799 print "Warning! Hook '%s' is not one of %s" % (name, IPython.hooks.__all__ )
800 if not dp:
800 if not dp:
801 dp = IPython.hooks.CommandChainDispatcher()
801 dp = IPython.hooks.CommandChainDispatcher()
802
802
803 try:
803 try:
804 dp.add(f,priority)
804 dp.add(f,priority)
805 except AttributeError:
805 except AttributeError:
806 # it was not commandchain, plain old func - replace
806 # it was not commandchain, plain old func - replace
807 dp = f
807 dp = f
808
808
809 setattr(self.hooks,name, dp)
809 setattr(self.hooks,name, dp)
810
810
811
811
812 #setattr(self.hooks,name,new.instancemethod(hook,self,self.__class__))
812 #setattr(self.hooks,name,new.instancemethod(hook,self,self.__class__))
813
813
814 def set_crash_handler(self,crashHandler):
814 def set_crash_handler(self,crashHandler):
815 """Set the IPython crash handler.
815 """Set the IPython crash handler.
816
816
817 This must be a callable with a signature suitable for use as
817 This must be a callable with a signature suitable for use as
818 sys.excepthook."""
818 sys.excepthook."""
819
819
820 # Install the given crash handler as the Python exception hook
820 # Install the given crash handler as the Python exception hook
821 sys.excepthook = crashHandler
821 sys.excepthook = crashHandler
822
822
823 # The instance will store a pointer to this, so that runtime code
823 # The instance will store a pointer to this, so that runtime code
824 # (such as magics) can access it. This is because during the
824 # (such as magics) can access it. This is because during the
825 # read-eval loop, it gets temporarily overwritten (to deal with GUI
825 # read-eval loop, it gets temporarily overwritten (to deal with GUI
826 # frameworks).
826 # frameworks).
827 self.sys_excepthook = sys.excepthook
827 self.sys_excepthook = sys.excepthook
828
828
829
829
830 def set_custom_exc(self,exc_tuple,handler):
830 def set_custom_exc(self,exc_tuple,handler):
831 """set_custom_exc(exc_tuple,handler)
831 """set_custom_exc(exc_tuple,handler)
832
832
833 Set a custom exception handler, which will be called if any of the
833 Set a custom exception handler, which will be called if any of the
834 exceptions in exc_tuple occur in the mainloop (specifically, in the
834 exceptions in exc_tuple occur in the mainloop (specifically, in the
835 runcode() method.
835 runcode() method.
836
836
837 Inputs:
837 Inputs:
838
838
839 - exc_tuple: a *tuple* of valid exceptions to call the defined
839 - exc_tuple: a *tuple* of valid exceptions to call the defined
840 handler for. It is very important that you use a tuple, and NOT A
840 handler for. It is very important that you use a tuple, and NOT A
841 LIST here, because of the way Python's except statement works. If
841 LIST here, because of the way Python's except statement works. If
842 you only want to trap a single exception, use a singleton tuple:
842 you only want to trap a single exception, use a singleton tuple:
843
843
844 exc_tuple == (MyCustomException,)
844 exc_tuple == (MyCustomException,)
845
845
846 - handler: this must be defined as a function with the following
846 - handler: this must be defined as a function with the following
847 basic interface: def my_handler(self,etype,value,tb).
847 basic interface: def my_handler(self,etype,value,tb).
848
848
849 This will be made into an instance method (via new.instancemethod)
849 This will be made into an instance method (via new.instancemethod)
850 of IPython itself, and it will be called if any of the exceptions
850 of IPython itself, and it will be called if any of the exceptions
851 listed in the exc_tuple are caught. If the handler is None, an
851 listed in the exc_tuple are caught. If the handler is None, an
852 internal basic one is used, which just prints basic info.
852 internal basic one is used, which just prints basic info.
853
853
854 WARNING: by putting in your own exception handler into IPython's main
854 WARNING: by putting in your own exception handler into IPython's main
855 execution loop, you run a very good chance of nasty crashes. This
855 execution loop, you run a very good chance of nasty crashes. This
856 facility should only be used if you really know what you are doing."""
856 facility should only be used if you really know what you are doing."""
857
857
858 assert type(exc_tuple)==type(()) , \
858 assert type(exc_tuple)==type(()) , \
859 "The custom exceptions must be given AS A TUPLE."
859 "The custom exceptions must be given AS A TUPLE."
860
860
861 def dummy_handler(self,etype,value,tb):
861 def dummy_handler(self,etype,value,tb):
862 print '*** Simple custom exception handler ***'
862 print '*** Simple custom exception handler ***'
863 print 'Exception type :',etype
863 print 'Exception type :',etype
864 print 'Exception value:',value
864 print 'Exception value:',value
865 print 'Traceback :',tb
865 print 'Traceback :',tb
866 print 'Source code :','\n'.join(self.buffer)
866 print 'Source code :','\n'.join(self.buffer)
867
867
868 if handler is None: handler = dummy_handler
868 if handler is None: handler = dummy_handler
869
869
870 self.CustomTB = new.instancemethod(handler,self,self.__class__)
870 self.CustomTB = new.instancemethod(handler,self,self.__class__)
871 self.custom_exceptions = exc_tuple
871 self.custom_exceptions = exc_tuple
872
872
873 def set_custom_completer(self,completer,pos=0):
873 def set_custom_completer(self,completer,pos=0):
874 """set_custom_completer(completer,pos=0)
874 """set_custom_completer(completer,pos=0)
875
875
876 Adds a new custom completer function.
876 Adds a new custom completer function.
877
877
878 The position argument (defaults to 0) is the index in the completers
878 The position argument (defaults to 0) is the index in the completers
879 list where you want the completer to be inserted."""
879 list where you want the completer to be inserted."""
880
880
881 newcomp = new.instancemethod(completer,self.Completer,
881 newcomp = new.instancemethod(completer,self.Completer,
882 self.Completer.__class__)
882 self.Completer.__class__)
883 self.Completer.matchers.insert(pos,newcomp)
883 self.Completer.matchers.insert(pos,newcomp)
884
884
885 def _get_call_pdb(self):
885 def _get_call_pdb(self):
886 return self._call_pdb
886 return self._call_pdb
887
887
888 def _set_call_pdb(self,val):
888 def _set_call_pdb(self,val):
889
889
890 if val not in (0,1,False,True):
890 if val not in (0,1,False,True):
891 raise ValueError,'new call_pdb value must be boolean'
891 raise ValueError,'new call_pdb value must be boolean'
892
892
893 # store value in instance
893 # store value in instance
894 self._call_pdb = val
894 self._call_pdb = val
895
895
896 # notify the actual exception handlers
896 # notify the actual exception handlers
897 self.InteractiveTB.call_pdb = val
897 self.InteractiveTB.call_pdb = val
898 if self.isthreaded:
898 if self.isthreaded:
899 try:
899 try:
900 self.sys_excepthook.call_pdb = val
900 self.sys_excepthook.call_pdb = val
901 except:
901 except:
902 warn('Failed to activate pdb for threaded exception handler')
902 warn('Failed to activate pdb for threaded exception handler')
903
903
904 call_pdb = property(_get_call_pdb,_set_call_pdb,None,
904 call_pdb = property(_get_call_pdb,_set_call_pdb,None,
905 'Control auto-activation of pdb at exceptions')
905 'Control auto-activation of pdb at exceptions')
906
906
907
907
908 # These special functions get installed in the builtin namespace, to
908 # These special functions get installed in the builtin namespace, to
909 # provide programmatic (pure python) access to magics, aliases and system
909 # provide programmatic (pure python) access to magics, aliases and system
910 # calls. This is important for logging, user scripting, and more.
910 # calls. This is important for logging, user scripting, and more.
911
911
912 # We are basically exposing, via normal python functions, the three
912 # We are basically exposing, via normal python functions, the three
913 # mechanisms in which ipython offers special call modes (magics for
913 # mechanisms in which ipython offers special call modes (magics for
914 # internal control, aliases for direct system access via pre-selected
914 # internal control, aliases for direct system access via pre-selected
915 # names, and !cmd for calling arbitrary system commands).
915 # names, and !cmd for calling arbitrary system commands).
916
916
917 def ipmagic(self,arg_s):
917 def ipmagic(self,arg_s):
918 """Call a magic function by name.
918 """Call a magic function by name.
919
919
920 Input: a string containing the name of the magic function to call and any
920 Input: a string containing the name of the magic function to call and any
921 additional arguments to be passed to the magic.
921 additional arguments to be passed to the magic.
922
922
923 ipmagic('name -opt foo bar') is equivalent to typing at the ipython
923 ipmagic('name -opt foo bar') is equivalent to typing at the ipython
924 prompt:
924 prompt:
925
925
926 In[1]: %name -opt foo bar
926 In[1]: %name -opt foo bar
927
927
928 To call a magic without arguments, simply use ipmagic('name').
928 To call a magic without arguments, simply use ipmagic('name').
929
929
930 This provides a proper Python function to call IPython's magics in any
930 This provides a proper Python function to call IPython's magics in any
931 valid Python code you can type at the interpreter, including loops and
931 valid Python code you can type at the interpreter, including loops and
932 compound statements. It is added by IPython to the Python builtin
932 compound statements. It is added by IPython to the Python builtin
933 namespace upon initialization."""
933 namespace upon initialization."""
934
934
935 args = arg_s.split(' ',1)
935 args = arg_s.split(' ',1)
936 magic_name = args[0]
936 magic_name = args[0]
937 magic_name = magic_name.lstrip(self.ESC_MAGIC)
937 magic_name = magic_name.lstrip(self.ESC_MAGIC)
938
938
939 try:
939 try:
940 magic_args = args[1]
940 magic_args = args[1]
941 except IndexError:
941 except IndexError:
942 magic_args = ''
942 magic_args = ''
943 fn = getattr(self,'magic_'+magic_name,None)
943 fn = getattr(self,'magic_'+magic_name,None)
944 if fn is None:
944 if fn is None:
945 error("Magic function `%s` not found." % magic_name)
945 error("Magic function `%s` not found." % magic_name)
946 else:
946 else:
947 magic_args = self.var_expand(magic_args,1)
947 magic_args = self.var_expand(magic_args,1)
948 return fn(magic_args)
948 return fn(magic_args)
949
949
950 def ipalias(self,arg_s):
950 def ipalias(self,arg_s):
951 """Call an alias by name.
951 """Call an alias by name.
952
952
953 Input: a string containing the name of the alias to call and any
953 Input: a string containing the name of the alias to call and any
954 additional arguments to be passed to the magic.
954 additional arguments to be passed to the magic.
955
955
956 ipalias('name -opt foo bar') is equivalent to typing at the ipython
956 ipalias('name -opt foo bar') is equivalent to typing at the ipython
957 prompt:
957 prompt:
958
958
959 In[1]: name -opt foo bar
959 In[1]: name -opt foo bar
960
960
961 To call an alias without arguments, simply use ipalias('name').
961 To call an alias without arguments, simply use ipalias('name').
962
962
963 This provides a proper Python function to call IPython's aliases in any
963 This provides a proper Python function to call IPython's aliases in any
964 valid Python code you can type at the interpreter, including loops and
964 valid Python code you can type at the interpreter, including loops and
965 compound statements. It is added by IPython to the Python builtin
965 compound statements. It is added by IPython to the Python builtin
966 namespace upon initialization."""
966 namespace upon initialization."""
967
967
968 args = arg_s.split(' ',1)
968 args = arg_s.split(' ',1)
969 alias_name = args[0]
969 alias_name = args[0]
970 try:
970 try:
971 alias_args = args[1]
971 alias_args = args[1]
972 except IndexError:
972 except IndexError:
973 alias_args = ''
973 alias_args = ''
974 if alias_name in self.alias_table:
974 if alias_name in self.alias_table:
975 self.call_alias(alias_name,alias_args)
975 self.call_alias(alias_name,alias_args)
976 else:
976 else:
977 error("Alias `%s` not found." % alias_name)
977 error("Alias `%s` not found." % alias_name)
978
978
979 def ipsystem(self,arg_s):
979 def ipsystem(self,arg_s):
980 """Make a system call, using IPython."""
980 """Make a system call, using IPython."""
981
981
982 self.system(arg_s)
982 self.system(arg_s)
983
983
984 def complete(self,text):
984 def complete(self,text):
985 """Return a sorted list of all possible completions on text.
985 """Return a sorted list of all possible completions on text.
986
986
987 Inputs:
987 Inputs:
988
988
989 - text: a string of text to be completed on.
989 - text: a string of text to be completed on.
990
990
991 This is a wrapper around the completion mechanism, similar to what
991 This is a wrapper around the completion mechanism, similar to what
992 readline does at the command line when the TAB key is hit. By
992 readline does at the command line when the TAB key is hit. By
993 exposing it as a method, it can be used by other non-readline
993 exposing it as a method, it can be used by other non-readline
994 environments (such as GUIs) for text completion.
994 environments (such as GUIs) for text completion.
995
995
996 Simple usage example:
996 Simple usage example:
997
997
998 In [1]: x = 'hello'
998 In [1]: x = 'hello'
999
999
1000 In [2]: __IP.complete('x.l')
1000 In [2]: __IP.complete('x.l')
1001 Out[2]: ['x.ljust', 'x.lower', 'x.lstrip']"""
1001 Out[2]: ['x.ljust', 'x.lower', 'x.lstrip']"""
1002
1002
1003 complete = self.Completer.complete
1003 complete = self.Completer.complete
1004 state = 0
1004 state = 0
1005 # use a dict so we get unique keys, since ipyhton's multiple
1005 # use a dict so we get unique keys, since ipyhton's multiple
1006 # completers can return duplicates. When we make 2.4 a requirement,
1006 # completers can return duplicates. When we make 2.4 a requirement,
1007 # start using sets instead, which are faster.
1007 # start using sets instead, which are faster.
1008 comps = {}
1008 comps = {}
1009 while True:
1009 while True:
1010 newcomp = complete(text,state,line_buffer=text)
1010 newcomp = complete(text,state,line_buffer=text)
1011 if newcomp is None:
1011 if newcomp is None:
1012 break
1012 break
1013 comps[newcomp] = 1
1013 comps[newcomp] = 1
1014 state += 1
1014 state += 1
1015 outcomps = comps.keys()
1015 outcomps = comps.keys()
1016 outcomps.sort()
1016 outcomps.sort()
1017 return outcomps
1017 return outcomps
1018
1018
1019 def set_completer_frame(self, frame=None):
1019 def set_completer_frame(self, frame=None):
1020 if frame:
1020 if frame:
1021 self.Completer.namespace = frame.f_locals
1021 self.Completer.namespace = frame.f_locals
1022 self.Completer.global_namespace = frame.f_globals
1022 self.Completer.global_namespace = frame.f_globals
1023 else:
1023 else:
1024 self.Completer.namespace = self.user_ns
1024 self.Completer.namespace = self.user_ns
1025 self.Completer.global_namespace = self.user_global_ns
1025 self.Completer.global_namespace = self.user_global_ns
1026
1026
1027 def init_auto_alias(self):
1027 def init_auto_alias(self):
1028 """Define some aliases automatically.
1028 """Define some aliases automatically.
1029
1029
1030 These are ALL parameter-less aliases"""
1030 These are ALL parameter-less aliases"""
1031
1031
1032 for alias,cmd in self.auto_alias:
1032 for alias,cmd in self.auto_alias:
1033 self.alias_table[alias] = (0,cmd)
1033 self.alias_table[alias] = (0,cmd)
1034
1034
1035 def alias_table_validate(self,verbose=0):
1035 def alias_table_validate(self,verbose=0):
1036 """Update information about the alias table.
1036 """Update information about the alias table.
1037
1037
1038 In particular, make sure no Python keywords/builtins are in it."""
1038 In particular, make sure no Python keywords/builtins are in it."""
1039
1039
1040 no_alias = self.no_alias
1040 no_alias = self.no_alias
1041 for k in self.alias_table.keys():
1041 for k in self.alias_table.keys():
1042 if k in no_alias:
1042 if k in no_alias:
1043 del self.alias_table[k]
1043 del self.alias_table[k]
1044 if verbose:
1044 if verbose:
1045 print ("Deleting alias <%s>, it's a Python "
1045 print ("Deleting alias <%s>, it's a Python "
1046 "keyword or builtin." % k)
1046 "keyword or builtin." % k)
1047
1047
1048 def set_autoindent(self,value=None):
1048 def set_autoindent(self,value=None):
1049 """Set the autoindent flag, checking for readline support.
1049 """Set the autoindent flag, checking for readline support.
1050
1050
1051 If called with no arguments, it acts as a toggle."""
1051 If called with no arguments, it acts as a toggle."""
1052
1052
1053 if not self.has_readline:
1053 if not self.has_readline:
1054 if os.name == 'posix':
1054 if os.name == 'posix':
1055 warn("The auto-indent feature requires the readline library")
1055 warn("The auto-indent feature requires the readline library")
1056 self.autoindent = 0
1056 self.autoindent = 0
1057 return
1057 return
1058 if value is None:
1058 if value is None:
1059 self.autoindent = not self.autoindent
1059 self.autoindent = not self.autoindent
1060 else:
1060 else:
1061 self.autoindent = value
1061 self.autoindent = value
1062
1062
1063 def rc_set_toggle(self,rc_field,value=None):
1063 def rc_set_toggle(self,rc_field,value=None):
1064 """Set or toggle a field in IPython's rc config. structure.
1064 """Set or toggle a field in IPython's rc config. structure.
1065
1065
1066 If called with no arguments, it acts as a toggle.
1066 If called with no arguments, it acts as a toggle.
1067
1067
1068 If called with a non-existent field, the resulting AttributeError
1068 If called with a non-existent field, the resulting AttributeError
1069 exception will propagate out."""
1069 exception will propagate out."""
1070
1070
1071 rc_val = getattr(self.rc,rc_field)
1071 rc_val = getattr(self.rc,rc_field)
1072 if value is None:
1072 if value is None:
1073 value = not rc_val
1073 value = not rc_val
1074 setattr(self.rc,rc_field,value)
1074 setattr(self.rc,rc_field,value)
1075
1075
1076 def user_setup(self,ipythondir,rc_suffix,mode='install'):
1076 def user_setup(self,ipythondir,rc_suffix,mode='install'):
1077 """Install the user configuration directory.
1077 """Install the user configuration directory.
1078
1078
1079 Can be called when running for the first time or to upgrade the user's
1079 Can be called when running for the first time or to upgrade the user's
1080 .ipython/ directory with the mode parameter. Valid modes are 'install'
1080 .ipython/ directory with the mode parameter. Valid modes are 'install'
1081 and 'upgrade'."""
1081 and 'upgrade'."""
1082
1082
1083 def wait():
1083 def wait():
1084 try:
1084 try:
1085 raw_input("Please press <RETURN> to start IPython.")
1085 raw_input("Please press <RETURN> to start IPython.")
1086 except EOFError:
1086 except EOFError:
1087 print >> Term.cout
1087 print >> Term.cout
1088 print '*'*70
1088 print '*'*70
1089
1089
1090 cwd = os.getcwd() # remember where we started
1090 cwd = os.getcwd() # remember where we started
1091 glb = glob.glob
1091 glb = glob.glob
1092 print '*'*70
1092 print '*'*70
1093 if mode == 'install':
1093 if mode == 'install':
1094 print \
1094 print \
1095 """Welcome to IPython. I will try to create a personal configuration directory
1095 """Welcome to IPython. I will try to create a personal configuration directory
1096 where you can customize many aspects of IPython's functionality in:\n"""
1096 where you can customize many aspects of IPython's functionality in:\n"""
1097 else:
1097 else:
1098 print 'I am going to upgrade your configuration in:'
1098 print 'I am going to upgrade your configuration in:'
1099
1099
1100 print ipythondir
1100 print ipythondir
1101
1101
1102 rcdirend = os.path.join('IPython','UserConfig')
1102 rcdirend = os.path.join('IPython','UserConfig')
1103 cfg = lambda d: os.path.join(d,rcdirend)
1103 cfg = lambda d: os.path.join(d,rcdirend)
1104 try:
1104 try:
1105 rcdir = filter(os.path.isdir,map(cfg,sys.path))[0]
1105 rcdir = filter(os.path.isdir,map(cfg,sys.path))[0]
1106 except IOError:
1106 except IOError:
1107 warning = """
1107 warning = """
1108 Installation error. IPython's directory was not found.
1108 Installation error. IPython's directory was not found.
1109
1109
1110 Check the following:
1110 Check the following:
1111
1111
1112 The ipython/IPython directory should be in a directory belonging to your
1112 The ipython/IPython directory should be in a directory belonging to your
1113 PYTHONPATH environment variable (that is, it should be in a directory
1113 PYTHONPATH environment variable (that is, it should be in a directory
1114 belonging to sys.path). You can copy it explicitly there or just link to it.
1114 belonging to sys.path). You can copy it explicitly there or just link to it.
1115
1115
1116 IPython will proceed with builtin defaults.
1116 IPython will proceed with builtin defaults.
1117 """
1117 """
1118 warn(warning)
1118 warn(warning)
1119 wait()
1119 wait()
1120 return
1120 return
1121
1121
1122 if mode == 'install':
1122 if mode == 'install':
1123 try:
1123 try:
1124 shutil.copytree(rcdir,ipythondir)
1124 shutil.copytree(rcdir,ipythondir)
1125 os.chdir(ipythondir)
1125 os.chdir(ipythondir)
1126 rc_files = glb("ipythonrc*")
1126 rc_files = glb("ipythonrc*")
1127 for rc_file in rc_files:
1127 for rc_file in rc_files:
1128 os.rename(rc_file,rc_file+rc_suffix)
1128 os.rename(rc_file,rc_file+rc_suffix)
1129 except:
1129 except:
1130 warning = """
1130 warning = """
1131
1131
1132 There was a problem with the installation:
1132 There was a problem with the installation:
1133 %s
1133 %s
1134 Try to correct it or contact the developers if you think it's a bug.
1134 Try to correct it or contact the developers if you think it's a bug.
1135 IPython will proceed with builtin defaults.""" % sys.exc_info()[1]
1135 IPython will proceed with builtin defaults.""" % sys.exc_info()[1]
1136 warn(warning)
1136 warn(warning)
1137 wait()
1137 wait()
1138 return
1138 return
1139
1139
1140 elif mode == 'upgrade':
1140 elif mode == 'upgrade':
1141 try:
1141 try:
1142 os.chdir(ipythondir)
1142 os.chdir(ipythondir)
1143 except:
1143 except:
1144 print """
1144 print """
1145 Can not upgrade: changing to directory %s failed. Details:
1145 Can not upgrade: changing to directory %s failed. Details:
1146 %s
1146 %s
1147 """ % (ipythondir,sys.exc_info()[1])
1147 """ % (ipythondir,sys.exc_info()[1])
1148 wait()
1148 wait()
1149 return
1149 return
1150 else:
1150 else:
1151 sources = glb(os.path.join(rcdir,'[A-Za-z]*'))
1151 sources = glb(os.path.join(rcdir,'[A-Za-z]*'))
1152 for new_full_path in sources:
1152 for new_full_path in sources:
1153 new_filename = os.path.basename(new_full_path)
1153 new_filename = os.path.basename(new_full_path)
1154 if new_filename.startswith('ipythonrc'):
1154 if new_filename.startswith('ipythonrc'):
1155 new_filename = new_filename + rc_suffix
1155 new_filename = new_filename + rc_suffix
1156 # The config directory should only contain files, skip any
1156 # The config directory should only contain files, skip any
1157 # directories which may be there (like CVS)
1157 # directories which may be there (like CVS)
1158 if os.path.isdir(new_full_path):
1158 if os.path.isdir(new_full_path):
1159 continue
1159 continue
1160 if os.path.exists(new_filename):
1160 if os.path.exists(new_filename):
1161 old_file = new_filename+'.old'
1161 old_file = new_filename+'.old'
1162 if os.path.exists(old_file):
1162 if os.path.exists(old_file):
1163 os.remove(old_file)
1163 os.remove(old_file)
1164 os.rename(new_filename,old_file)
1164 os.rename(new_filename,old_file)
1165 shutil.copy(new_full_path,new_filename)
1165 shutil.copy(new_full_path,new_filename)
1166 else:
1166 else:
1167 raise ValueError,'unrecognized mode for install:',`mode`
1167 raise ValueError,'unrecognized mode for install:',`mode`
1168
1168
1169 # Fix line-endings to those native to each platform in the config
1169 # Fix line-endings to those native to each platform in the config
1170 # directory.
1170 # directory.
1171 try:
1171 try:
1172 os.chdir(ipythondir)
1172 os.chdir(ipythondir)
1173 except:
1173 except:
1174 print """
1174 print """
1175 Problem: changing to directory %s failed.
1175 Problem: changing to directory %s failed.
1176 Details:
1176 Details:
1177 %s
1177 %s
1178
1178
1179 Some configuration files may have incorrect line endings. This should not
1179 Some configuration files may have incorrect line endings. This should not
1180 cause any problems during execution. """ % (ipythondir,sys.exc_info()[1])
1180 cause any problems during execution. """ % (ipythondir,sys.exc_info()[1])
1181 wait()
1181 wait()
1182 else:
1182 else:
1183 for fname in glb('ipythonrc*'):
1183 for fname in glb('ipythonrc*'):
1184 try:
1184 try:
1185 native_line_ends(fname,backup=0)
1185 native_line_ends(fname,backup=0)
1186 except IOError:
1186 except IOError:
1187 pass
1187 pass
1188
1188
1189 if mode == 'install':
1189 if mode == 'install':
1190 print """
1190 print """
1191 Successful installation!
1191 Successful installation!
1192
1192
1193 Please read the sections 'Initial Configuration' and 'Quick Tips' in the
1193 Please read the sections 'Initial Configuration' and 'Quick Tips' in the
1194 IPython manual (there are both HTML and PDF versions supplied with the
1194 IPython manual (there are both HTML and PDF versions supplied with the
1195 distribution) to make sure that your system environment is properly configured
1195 distribution) to make sure that your system environment is properly configured
1196 to take advantage of IPython's features.
1196 to take advantage of IPython's features.
1197
1197
1198 Important note: the configuration system has changed! The old system is
1198 Important note: the configuration system has changed! The old system is
1199 still in place, but its setting may be partly overridden by the settings in
1199 still in place, but its setting may be partly overridden by the settings in
1200 "~/.ipython/ipy_user_conf.py" config file. Please take a look at the file
1200 "~/.ipython/ipy_user_conf.py" config file. Please take a look at the file
1201 if some of the new settings bother you.
1201 if some of the new settings bother you.
1202
1202
1203 """
1203 """
1204 else:
1204 else:
1205 print """
1205 print """
1206 Successful upgrade!
1206 Successful upgrade!
1207
1207
1208 All files in your directory:
1208 All files in your directory:
1209 %(ipythondir)s
1209 %(ipythondir)s
1210 which would have been overwritten by the upgrade were backed up with a .old
1210 which would have been overwritten by the upgrade were backed up with a .old
1211 extension. If you had made particular customizations in those files you may
1211 extension. If you had made particular customizations in those files you may
1212 want to merge them back into the new files.""" % locals()
1212 want to merge them back into the new files.""" % locals()
1213 wait()
1213 wait()
1214 os.chdir(cwd)
1214 os.chdir(cwd)
1215 # end user_setup()
1215 # end user_setup()
1216
1216
1217 def atexit_operations(self):
1217 def atexit_operations(self):
1218 """This will be executed at the time of exit.
1218 """This will be executed at the time of exit.
1219
1219
1220 Saving of persistent data should be performed here. """
1220 Saving of persistent data should be performed here. """
1221
1221
1222 #print '*** IPython exit cleanup ***' # dbg
1222 #print '*** IPython exit cleanup ***' # dbg
1223 # input history
1223 # input history
1224 self.savehist()
1224 self.savehist()
1225
1225
1226 # Cleanup all tempfiles left around
1226 # Cleanup all tempfiles left around
1227 for tfile in self.tempfiles:
1227 for tfile in self.tempfiles:
1228 try:
1228 try:
1229 os.unlink(tfile)
1229 os.unlink(tfile)
1230 except OSError:
1230 except OSError:
1231 pass
1231 pass
1232
1232
1233 # save the "persistent data" catch-all dictionary
1233 # save the "persistent data" catch-all dictionary
1234 self.hooks.shutdown_hook()
1234 self.hooks.shutdown_hook()
1235
1235
1236 def savehist(self):
1236 def savehist(self):
1237 """Save input history to a file (via readline library)."""
1237 """Save input history to a file (via readline library)."""
1238 try:
1238 try:
1239 self.readline.write_history_file(self.histfile)
1239 self.readline.write_history_file(self.histfile)
1240 except:
1240 except:
1241 print 'Unable to save IPython command history to file: ' + \
1241 print 'Unable to save IPython command history to file: ' + \
1242 `self.histfile`
1242 `self.histfile`
1243
1243
1244 def history_saving_wrapper(self, func):
1244 def history_saving_wrapper(self, func):
1245 """ Wrap func for readline history saving
1245 """ Wrap func for readline history saving
1246
1246
1247 Convert func into callable that saves & restores
1247 Convert func into callable that saves & restores
1248 history around the call """
1248 history around the call """
1249
1249
1250 if not self.has_readline:
1250 if not self.has_readline:
1251 return func
1251 return func
1252
1252
1253 def wrapper():
1253 def wrapper():
1254 self.savehist()
1254 self.savehist()
1255 try:
1255 try:
1256 func()
1256 func()
1257 finally:
1257 finally:
1258 readline.read_history_file(self.histfile)
1258 readline.read_history_file(self.histfile)
1259 return wrapper
1259 return wrapper
1260
1260
1261
1261
1262 def pre_readline(self):
1262 def pre_readline(self):
1263 """readline hook to be used at the start of each line.
1263 """readline hook to be used at the start of each line.
1264
1264
1265 Currently it handles auto-indent only."""
1265 Currently it handles auto-indent only."""
1266
1266
1267 #debugx('self.indent_current_nsp','pre_readline:')
1267 #debugx('self.indent_current_nsp','pre_readline:')
1268 self.readline.insert_text(self.indent_current_str())
1268 self.readline.insert_text(self.indent_current_str())
1269
1269
1270 def init_readline(self):
1270 def init_readline(self):
1271 """Command history completion/saving/reloading."""
1271 """Command history completion/saving/reloading."""
1272
1272
1273 import IPython.rlineimpl as readline
1273 import IPython.rlineimpl as readline
1274 if not readline.have_readline:
1274 if not readline.have_readline:
1275 self.has_readline = 0
1275 self.has_readline = 0
1276 self.readline = None
1276 self.readline = None
1277 # no point in bugging windows users with this every time:
1277 # no point in bugging windows users with this every time:
1278 warn('Readline services not available on this platform.')
1278 warn('Readline services not available on this platform.')
1279 else:
1279 else:
1280 sys.modules['readline'] = readline
1280 sys.modules['readline'] = readline
1281 import atexit
1281 import atexit
1282 from IPython.completer import IPCompleter
1282 from IPython.completer import IPCompleter
1283 self.Completer = IPCompleter(self,
1283 self.Completer = IPCompleter(self,
1284 self.user_ns,
1284 self.user_ns,
1285 self.user_global_ns,
1285 self.user_global_ns,
1286 self.rc.readline_omit__names,
1286 self.rc.readline_omit__names,
1287 self.alias_table)
1287 self.alias_table)
1288 sdisp = self.strdispatchers.get('complete_command', StrDispatch())
1288 sdisp = self.strdispatchers.get('complete_command', StrDispatch())
1289 self.strdispatchers['complete_command'] = sdisp
1289 self.strdispatchers['complete_command'] = sdisp
1290 self.Completer.custom_completers = sdisp
1290 self.Completer.custom_completers = sdisp
1291 # Platform-specific configuration
1291 # Platform-specific configuration
1292 if os.name == 'nt':
1292 if os.name == 'nt':
1293 self.readline_startup_hook = readline.set_pre_input_hook
1293 self.readline_startup_hook = readline.set_pre_input_hook
1294 else:
1294 else:
1295 self.readline_startup_hook = readline.set_startup_hook
1295 self.readline_startup_hook = readline.set_startup_hook
1296
1296
1297 # Load user's initrc file (readline config)
1297 # Load user's initrc file (readline config)
1298 inputrc_name = os.environ.get('INPUTRC')
1298 inputrc_name = os.environ.get('INPUTRC')
1299 if inputrc_name is None:
1299 if inputrc_name is None:
1300 home_dir = get_home_dir()
1300 home_dir = get_home_dir()
1301 if home_dir is not None:
1301 if home_dir is not None:
1302 inputrc_name = os.path.join(home_dir,'.inputrc')
1302 inputrc_name = os.path.join(home_dir,'.inputrc')
1303 if os.path.isfile(inputrc_name):
1303 if os.path.isfile(inputrc_name):
1304 try:
1304 try:
1305 readline.read_init_file(inputrc_name)
1305 readline.read_init_file(inputrc_name)
1306 except:
1306 except:
1307 warn('Problems reading readline initialization file <%s>'
1307 warn('Problems reading readline initialization file <%s>'
1308 % inputrc_name)
1308 % inputrc_name)
1309
1309
1310 self.has_readline = 1
1310 self.has_readline = 1
1311 self.readline = readline
1311 self.readline = readline
1312 # save this in sys so embedded copies can restore it properly
1312 # save this in sys so embedded copies can restore it properly
1313 sys.ipcompleter = self.Completer.complete
1313 sys.ipcompleter = self.Completer.complete
1314 readline.set_completer(self.Completer.complete)
1314 readline.set_completer(self.Completer.complete)
1315
1315
1316 # Configure readline according to user's prefs
1316 # Configure readline according to user's prefs
1317 for rlcommand in self.rc.readline_parse_and_bind:
1317 for rlcommand in self.rc.readline_parse_and_bind:
1318 readline.parse_and_bind(rlcommand)
1318 readline.parse_and_bind(rlcommand)
1319
1319
1320 # remove some chars from the delimiters list
1320 # remove some chars from the delimiters list
1321 delims = readline.get_completer_delims()
1321 delims = readline.get_completer_delims()
1322 delims = delims.translate(string._idmap,
1322 delims = delims.translate(string._idmap,
1323 self.rc.readline_remove_delims)
1323 self.rc.readline_remove_delims)
1324 readline.set_completer_delims(delims)
1324 readline.set_completer_delims(delims)
1325 # otherwise we end up with a monster history after a while:
1325 # otherwise we end up with a monster history after a while:
1326 readline.set_history_length(1000)
1326 readline.set_history_length(1000)
1327 try:
1327 try:
1328 #print '*** Reading readline history' # dbg
1328 #print '*** Reading readline history' # dbg
1329 readline.read_history_file(self.histfile)
1329 readline.read_history_file(self.histfile)
1330 except IOError:
1330 except IOError:
1331 pass # It doesn't exist yet.
1331 pass # It doesn't exist yet.
1332
1332
1333 atexit.register(self.atexit_operations)
1333 atexit.register(self.atexit_operations)
1334 del atexit
1334 del atexit
1335
1335
1336 # Configure auto-indent for all platforms
1336 # Configure auto-indent for all platforms
1337 self.set_autoindent(self.rc.autoindent)
1337 self.set_autoindent(self.rc.autoindent)
1338
1338
1339 def ask_yes_no(self,prompt,default=True):
1339 def ask_yes_no(self,prompt,default=True):
1340 if self.rc.quiet:
1340 if self.rc.quiet:
1341 return True
1341 return True
1342 return ask_yes_no(prompt,default)
1342 return ask_yes_no(prompt,default)
1343
1343
1344 def _should_recompile(self,e):
1344 def _should_recompile(self,e):
1345 """Utility routine for edit_syntax_error"""
1345 """Utility routine for edit_syntax_error"""
1346
1346
1347 if e.filename in ('<ipython console>','<input>','<string>',
1347 if e.filename in ('<ipython console>','<input>','<string>',
1348 '<console>','<BackgroundJob compilation>',
1348 '<console>','<BackgroundJob compilation>',
1349 None):
1349 None):
1350
1350
1351 return False
1351 return False
1352 try:
1352 try:
1353 if (self.rc.autoedit_syntax and
1353 if (self.rc.autoedit_syntax and
1354 not self.ask_yes_no('Return to editor to correct syntax error? '
1354 not self.ask_yes_no('Return to editor to correct syntax error? '
1355 '[Y/n] ','y')):
1355 '[Y/n] ','y')):
1356 return False
1356 return False
1357 except EOFError:
1357 except EOFError:
1358 return False
1358 return False
1359
1359
1360 def int0(x):
1360 def int0(x):
1361 try:
1361 try:
1362 return int(x)
1362 return int(x)
1363 except TypeError:
1363 except TypeError:
1364 return 0
1364 return 0
1365 # always pass integer line and offset values to editor hook
1365 # always pass integer line and offset values to editor hook
1366 self.hooks.fix_error_editor(e.filename,
1366 self.hooks.fix_error_editor(e.filename,
1367 int0(e.lineno),int0(e.offset),e.msg)
1367 int0(e.lineno),int0(e.offset),e.msg)
1368 return True
1368 return True
1369
1369
1370 def edit_syntax_error(self):
1370 def edit_syntax_error(self):
1371 """The bottom half of the syntax error handler called in the main loop.
1371 """The bottom half of the syntax error handler called in the main loop.
1372
1372
1373 Loop until syntax error is fixed or user cancels.
1373 Loop until syntax error is fixed or user cancels.
1374 """
1374 """
1375
1375
1376 while self.SyntaxTB.last_syntax_error:
1376 while self.SyntaxTB.last_syntax_error:
1377 # copy and clear last_syntax_error
1377 # copy and clear last_syntax_error
1378 err = self.SyntaxTB.clear_err_state()
1378 err = self.SyntaxTB.clear_err_state()
1379 if not self._should_recompile(err):
1379 if not self._should_recompile(err):
1380 return
1380 return
1381 try:
1381 try:
1382 # may set last_syntax_error again if a SyntaxError is raised
1382 # may set last_syntax_error again if a SyntaxError is raised
1383 self.safe_execfile(err.filename,self.user_ns)
1383 self.safe_execfile(err.filename,self.user_ns)
1384 except:
1384 except:
1385 self.showtraceback()
1385 self.showtraceback()
1386 else:
1386 else:
1387 try:
1387 try:
1388 f = file(err.filename)
1388 f = file(err.filename)
1389 try:
1389 try:
1390 sys.displayhook(f.read())
1390 sys.displayhook(f.read())
1391 finally:
1391 finally:
1392 f.close()
1392 f.close()
1393 except:
1393 except:
1394 self.showtraceback()
1394 self.showtraceback()
1395
1395
1396 def showsyntaxerror(self, filename=None):
1396 def showsyntaxerror(self, filename=None):
1397 """Display the syntax error that just occurred.
1397 """Display the syntax error that just occurred.
1398
1398
1399 This doesn't display a stack trace because there isn't one.
1399 This doesn't display a stack trace because there isn't one.
1400
1400
1401 If a filename is given, it is stuffed in the exception instead
1401 If a filename is given, it is stuffed in the exception instead
1402 of what was there before (because Python's parser always uses
1402 of what was there before (because Python's parser always uses
1403 "<string>" when reading from a string).
1403 "<string>" when reading from a string).
1404 """
1404 """
1405 etype, value, last_traceback = sys.exc_info()
1405 etype, value, last_traceback = sys.exc_info()
1406
1406
1407 # See note about these variables in showtraceback() below
1407 # See note about these variables in showtraceback() below
1408 sys.last_type = etype
1408 sys.last_type = etype
1409 sys.last_value = value
1409 sys.last_value = value
1410 sys.last_traceback = last_traceback
1410 sys.last_traceback = last_traceback
1411
1411
1412 if filename and etype is SyntaxError:
1412 if filename and etype is SyntaxError:
1413 # Work hard to stuff the correct filename in the exception
1413 # Work hard to stuff the correct filename in the exception
1414 try:
1414 try:
1415 msg, (dummy_filename, lineno, offset, line) = value
1415 msg, (dummy_filename, lineno, offset, line) = value
1416 except:
1416 except:
1417 # Not the format we expect; leave it alone
1417 # Not the format we expect; leave it alone
1418 pass
1418 pass
1419 else:
1419 else:
1420 # Stuff in the right filename
1420 # Stuff in the right filename
1421 try:
1421 try:
1422 # Assume SyntaxError is a class exception
1422 # Assume SyntaxError is a class exception
1423 value = SyntaxError(msg, (filename, lineno, offset, line))
1423 value = SyntaxError(msg, (filename, lineno, offset, line))
1424 except:
1424 except:
1425 # If that failed, assume SyntaxError is a string
1425 # If that failed, assume SyntaxError is a string
1426 value = msg, (filename, lineno, offset, line)
1426 value = msg, (filename, lineno, offset, line)
1427 self.SyntaxTB(etype,value,[])
1427 self.SyntaxTB(etype,value,[])
1428
1428
1429 def debugger(self,force=False):
1429 def debugger(self,force=False):
1430 """Call the pydb/pdb debugger.
1430 """Call the pydb/pdb debugger.
1431
1431
1432 Keywords:
1432 Keywords:
1433
1433
1434 - force(False): by default, this routine checks the instance call_pdb
1434 - force(False): by default, this routine checks the instance call_pdb
1435 flag and does not actually invoke the debugger if the flag is false.
1435 flag and does not actually invoke the debugger if the flag is false.
1436 The 'force' option forces the debugger to activate even if the flag
1436 The 'force' option forces the debugger to activate even if the flag
1437 is false.
1437 is false.
1438 """
1438 """
1439
1439
1440 if not (force or self.call_pdb):
1440 if not (force or self.call_pdb):
1441 return
1441 return
1442
1442
1443 if not hasattr(sys,'last_traceback'):
1443 if not hasattr(sys,'last_traceback'):
1444 error('No traceback has been produced, nothing to debug.')
1444 error('No traceback has been produced, nothing to debug.')
1445 return
1445 return
1446
1446
1447 have_pydb = False
1447 have_pydb = False
1448 # use pydb if available
1448 # use pydb if available
1449 try:
1449 try:
1450 from pydb import pm
1450 from pydb import pm
1451 have_pydb = True
1451 have_pydb = True
1452 except ImportError:
1452 except ImportError:
1453 pass
1453 pass
1454 if not have_pydb:
1454 if not have_pydb:
1455 # fallback to our internal debugger
1455 # fallback to our internal debugger
1456 pm = lambda : self.InteractiveTB.debugger(force=True)
1456 pm = lambda : self.InteractiveTB.debugger(force=True)
1457 self.history_saving_wrapper(pm)()
1457 self.history_saving_wrapper(pm)()
1458
1458
1459 def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None):
1459 def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None):
1460 """Display the exception that just occurred.
1460 """Display the exception that just occurred.
1461
1461
1462 If nothing is known about the exception, this is the method which
1462 If nothing is known about the exception, this is the method which
1463 should be used throughout the code for presenting user tracebacks,
1463 should be used throughout the code for presenting user tracebacks,
1464 rather than directly invoking the InteractiveTB object.
1464 rather than directly invoking the InteractiveTB object.
1465
1465
1466 A specific showsyntaxerror() also exists, but this method can take
1466 A specific showsyntaxerror() also exists, but this method can take
1467 care of calling it if needed, so unless you are explicitly catching a
1467 care of calling it if needed, so unless you are explicitly catching a
1468 SyntaxError exception, don't try to analyze the stack manually and
1468 SyntaxError exception, don't try to analyze the stack manually and
1469 simply call this method."""
1469 simply call this method."""
1470
1470
1471 # Though this won't be called by syntax errors in the input line,
1471 # Though this won't be called by syntax errors in the input line,
1472 # there may be SyntaxError cases whith imported code.
1472 # there may be SyntaxError cases whith imported code.
1473 if exc_tuple is None:
1473 if exc_tuple is None:
1474 etype, value, tb = sys.exc_info()
1474 etype, value, tb = sys.exc_info()
1475 else:
1475 else:
1476 etype, value, tb = exc_tuple
1476 etype, value, tb = exc_tuple
1477
1477
1478 if etype is SyntaxError:
1478 if etype is SyntaxError:
1479 self.showsyntaxerror(filename)
1479 self.showsyntaxerror(filename)
1480 else:
1480 else:
1481 # WARNING: these variables are somewhat deprecated and not
1481 # WARNING: these variables are somewhat deprecated and not
1482 # necessarily safe to use in a threaded environment, but tools
1482 # necessarily safe to use in a threaded environment, but tools
1483 # like pdb depend on their existence, so let's set them. If we
1483 # like pdb depend on their existence, so let's set them. If we
1484 # find problems in the field, we'll need to revisit their use.
1484 # find problems in the field, we'll need to revisit their use.
1485 sys.last_type = etype
1485 sys.last_type = etype
1486 sys.last_value = value
1486 sys.last_value = value
1487 sys.last_traceback = tb
1487 sys.last_traceback = tb
1488
1488
1489 if etype in self.custom_exceptions:
1489 if etype in self.custom_exceptions:
1490 self.CustomTB(etype,value,tb)
1490 self.CustomTB(etype,value,tb)
1491 else:
1491 else:
1492 self.InteractiveTB(etype,value,tb,tb_offset=tb_offset)
1492 self.InteractiveTB(etype,value,tb,tb_offset=tb_offset)
1493 if self.InteractiveTB.call_pdb and self.has_readline:
1493 if self.InteractiveTB.call_pdb and self.has_readline:
1494 # pdb mucks up readline, fix it back
1494 # pdb mucks up readline, fix it back
1495 self.readline.set_completer(self.Completer.complete)
1495 self.readline.set_completer(self.Completer.complete)
1496
1496
1497 def mainloop(self,banner=None):
1497 def mainloop(self,banner=None):
1498 """Creates the local namespace and starts the mainloop.
1498 """Creates the local namespace and starts the mainloop.
1499
1499
1500 If an optional banner argument is given, it will override the
1500 If an optional banner argument is given, it will override the
1501 internally created default banner."""
1501 internally created default banner."""
1502
1502
1503 if self.rc.c: # Emulate Python's -c option
1503 if self.rc.c: # Emulate Python's -c option
1504 self.exec_init_cmd()
1504 self.exec_init_cmd()
1505 if banner is None:
1505 if banner is None:
1506 if not self.rc.banner:
1506 if not self.rc.banner:
1507 banner = ''
1507 banner = ''
1508 # banner is string? Use it directly!
1508 # banner is string? Use it directly!
1509 elif isinstance(self.rc.banner,basestring):
1509 elif isinstance(self.rc.banner,basestring):
1510 banner = self.rc.banner
1510 banner = self.rc.banner
1511 else:
1511 else:
1512 banner = self.BANNER+self.banner2
1512 banner = self.BANNER+self.banner2
1513
1513
1514 self.interact(banner)
1514 self.interact(banner)
1515
1515
1516 def exec_init_cmd(self):
1516 def exec_init_cmd(self):
1517 """Execute a command given at the command line.
1517 """Execute a command given at the command line.
1518
1518
1519 This emulates Python's -c option."""
1519 This emulates Python's -c option."""
1520
1520
1521 #sys.argv = ['-c']
1521 #sys.argv = ['-c']
1522 self.push(self.rc.c)
1522 self.push(self.rc.c)
1523
1523
1524 def embed_mainloop(self,header='',local_ns=None,global_ns=None,stack_depth=0):
1524 def embed_mainloop(self,header='',local_ns=None,global_ns=None,stack_depth=0):
1525 """Embeds IPython into a running python program.
1525 """Embeds IPython into a running python program.
1526
1526
1527 Input:
1527 Input:
1528
1528
1529 - header: An optional header message can be specified.
1529 - header: An optional header message can be specified.
1530
1530
1531 - local_ns, global_ns: working namespaces. If given as None, the
1531 - local_ns, global_ns: working namespaces. If given as None, the
1532 IPython-initialized one is updated with __main__.__dict__, so that
1532 IPython-initialized one is updated with __main__.__dict__, so that
1533 program variables become visible but user-specific configuration
1533 program variables become visible but user-specific configuration
1534 remains possible.
1534 remains possible.
1535
1535
1536 - stack_depth: specifies how many levels in the stack to go to
1536 - stack_depth: specifies how many levels in the stack to go to
1537 looking for namespaces (when local_ns and global_ns are None). This
1537 looking for namespaces (when local_ns and global_ns are None). This
1538 allows an intermediate caller to make sure that this function gets
1538 allows an intermediate caller to make sure that this function gets
1539 the namespace from the intended level in the stack. By default (0)
1539 the namespace from the intended level in the stack. By default (0)
1540 it will get its locals and globals from the immediate caller.
1540 it will get its locals and globals from the immediate caller.
1541
1541
1542 Warning: it's possible to use this in a program which is being run by
1542 Warning: it's possible to use this in a program which is being run by
1543 IPython itself (via %run), but some funny things will happen (a few
1543 IPython itself (via %run), but some funny things will happen (a few
1544 globals get overwritten). In the future this will be cleaned up, as
1544 globals get overwritten). In the future this will be cleaned up, as
1545 there is no fundamental reason why it can't work perfectly."""
1545 there is no fundamental reason why it can't work perfectly."""
1546
1546
1547 # Get locals and globals from caller
1547 # Get locals and globals from caller
1548 if local_ns is None or global_ns is None:
1548 if local_ns is None or global_ns is None:
1549 call_frame = sys._getframe(stack_depth).f_back
1549 call_frame = sys._getframe(stack_depth).f_back
1550
1550
1551 if local_ns is None:
1551 if local_ns is None:
1552 local_ns = call_frame.f_locals
1552 local_ns = call_frame.f_locals
1553 if global_ns is None:
1553 if global_ns is None:
1554 global_ns = call_frame.f_globals
1554 global_ns = call_frame.f_globals
1555
1555
1556 # Update namespaces and fire up interpreter
1556 # Update namespaces and fire up interpreter
1557
1557
1558 # The global one is easy, we can just throw it in
1558 # The global one is easy, we can just throw it in
1559 self.user_global_ns = global_ns
1559 self.user_global_ns = global_ns
1560
1560
1561 # but the user/local one is tricky: ipython needs it to store internal
1561 # but the user/local one is tricky: ipython needs it to store internal
1562 # data, but we also need the locals. We'll copy locals in the user
1562 # data, but we also need the locals. We'll copy locals in the user
1563 # one, but will track what got copied so we can delete them at exit.
1563 # one, but will track what got copied so we can delete them at exit.
1564 # This is so that a later embedded call doesn't see locals from a
1564 # This is so that a later embedded call doesn't see locals from a
1565 # previous call (which most likely existed in a separate scope).
1565 # previous call (which most likely existed in a separate scope).
1566 local_varnames = local_ns.keys()
1566 local_varnames = local_ns.keys()
1567 self.user_ns.update(local_ns)
1567 self.user_ns.update(local_ns)
1568
1568
1569 # Patch for global embedding to make sure that things don't overwrite
1569 # Patch for global embedding to make sure that things don't overwrite
1570 # user globals accidentally. Thanks to Richard <rxe@renre-europe.com>
1570 # user globals accidentally. Thanks to Richard <rxe@renre-europe.com>
1571 # FIXME. Test this a bit more carefully (the if.. is new)
1571 # FIXME. Test this a bit more carefully (the if.. is new)
1572 if local_ns is None and global_ns is None:
1572 if local_ns is None and global_ns is None:
1573 self.user_global_ns.update(__main__.__dict__)
1573 self.user_global_ns.update(__main__.__dict__)
1574
1574
1575 # make sure the tab-completer has the correct frame information, so it
1575 # make sure the tab-completer has the correct frame information, so it
1576 # actually completes using the frame's locals/globals
1576 # actually completes using the frame's locals/globals
1577 self.set_completer_frame()
1577 self.set_completer_frame()
1578
1578
1579 # before activating the interactive mode, we need to make sure that
1579 # before activating the interactive mode, we need to make sure that
1580 # all names in the builtin namespace needed by ipython point to
1580 # all names in the builtin namespace needed by ipython point to
1581 # ourselves, and not to other instances.
1581 # ourselves, and not to other instances.
1582 self.add_builtins()
1582 self.add_builtins()
1583
1583
1584 self.interact(header)
1584 self.interact(header)
1585
1585
1586 # now, purge out the user namespace from anything we might have added
1586 # now, purge out the user namespace from anything we might have added
1587 # from the caller's local namespace
1587 # from the caller's local namespace
1588 delvar = self.user_ns.pop
1588 delvar = self.user_ns.pop
1589 for var in local_varnames:
1589 for var in local_varnames:
1590 delvar(var,None)
1590 delvar(var,None)
1591 # and clean builtins we may have overridden
1591 # and clean builtins we may have overridden
1592 self.clean_builtins()
1592 self.clean_builtins()
1593
1593
1594 def interact(self, banner=None):
1594 def interact(self, banner=None):
1595 """Closely emulate the interactive Python console.
1595 """Closely emulate the interactive Python console.
1596
1596
1597 The optional banner argument specify the banner to print
1597 The optional banner argument specify the banner to print
1598 before the first interaction; by default it prints a banner
1598 before the first interaction; by default it prints a banner
1599 similar to the one printed by the real Python interpreter,
1599 similar to the one printed by the real Python interpreter,
1600 followed by the current class name in parentheses (so as not
1600 followed by the current class name in parentheses (so as not
1601 to confuse this with the real interpreter -- since it's so
1601 to confuse this with the real interpreter -- since it's so
1602 close!).
1602 close!).
1603
1603
1604 """
1604 """
1605
1605
1606 if self.exit_now:
1606 if self.exit_now:
1607 # batch run -> do not interact
1607 # batch run -> do not interact
1608 return
1608 return
1609 cprt = 'Type "copyright", "credits" or "license" for more information.'
1609 cprt = 'Type "copyright", "credits" or "license" for more information.'
1610 if banner is None:
1610 if banner is None:
1611 self.write("Python %s on %s\n%s\n(%s)\n" %
1611 self.write("Python %s on %s\n%s\n(%s)\n" %
1612 (sys.version, sys.platform, cprt,
1612 (sys.version, sys.platform, cprt,
1613 self.__class__.__name__))
1613 self.__class__.__name__))
1614 else:
1614 else:
1615 self.write(banner)
1615 self.write(banner)
1616
1616
1617 more = 0
1617 more = 0
1618
1618
1619 # Mark activity in the builtins
1619 # Mark activity in the builtins
1620 __builtin__.__dict__['__IPYTHON__active'] += 1
1620 __builtin__.__dict__['__IPYTHON__active'] += 1
1621
1621
1622 # exit_now is set by a call to %Exit or %Quit
1622 # exit_now is set by a call to %Exit or %Quit
1623 while not self.exit_now:
1623 while not self.exit_now:
1624 if more:
1624 if more:
1625 prompt = self.hooks.generate_prompt(True)
1625 prompt = self.hooks.generate_prompt(True)
1626 if self.autoindent:
1626 if self.autoindent:
1627 self.readline_startup_hook(self.pre_readline)
1627 self.readline_startup_hook(self.pre_readline)
1628 else:
1628 else:
1629 prompt = self.hooks.generate_prompt(False)
1629 prompt = self.hooks.generate_prompt(False)
1630 try:
1630 try:
1631 line = self.raw_input(prompt,more)
1631 line = self.raw_input(prompt,more)
1632 if self.exit_now:
1632 if self.exit_now:
1633 # quick exit on sys.std[in|out] close
1633 # quick exit on sys.std[in|out] close
1634 break
1634 break
1635 if self.autoindent:
1635 if self.autoindent:
1636 self.readline_startup_hook(None)
1636 self.readline_startup_hook(None)
1637 except KeyboardInterrupt:
1637 except KeyboardInterrupt:
1638 self.write('\nKeyboardInterrupt\n')
1638 self.write('\nKeyboardInterrupt\n')
1639 self.resetbuffer()
1639 self.resetbuffer()
1640 # keep cache in sync with the prompt counter:
1640 # keep cache in sync with the prompt counter:
1641 self.outputcache.prompt_count -= 1
1641 self.outputcache.prompt_count -= 1
1642
1642
1643 if self.autoindent:
1643 if self.autoindent:
1644 self.indent_current_nsp = 0
1644 self.indent_current_nsp = 0
1645 more = 0
1645 more = 0
1646 except EOFError:
1646 except EOFError:
1647 if self.autoindent:
1647 if self.autoindent:
1648 self.readline_startup_hook(None)
1648 self.readline_startup_hook(None)
1649 self.write('\n')
1649 self.write('\n')
1650 self.exit()
1650 self.exit()
1651 except bdb.BdbQuit:
1651 except bdb.BdbQuit:
1652 warn('The Python debugger has exited with a BdbQuit exception.\n'
1652 warn('The Python debugger has exited with a BdbQuit exception.\n'
1653 'Because of how pdb handles the stack, it is impossible\n'
1653 'Because of how pdb handles the stack, it is impossible\n'
1654 'for IPython to properly format this particular exception.\n'
1654 'for IPython to properly format this particular exception.\n'
1655 'IPython will resume normal operation.')
1655 'IPython will resume normal operation.')
1656 except:
1656 except:
1657 # exceptions here are VERY RARE, but they can be triggered
1657 # exceptions here are VERY RARE, but they can be triggered
1658 # asynchronously by signal handlers, for example.
1658 # asynchronously by signal handlers, for example.
1659 self.showtraceback()
1659 self.showtraceback()
1660 else:
1660 else:
1661 more = self.push(line)
1661 more = self.push(line)
1662 if (self.SyntaxTB.last_syntax_error and
1662 if (self.SyntaxTB.last_syntax_error and
1663 self.rc.autoedit_syntax):
1663 self.rc.autoedit_syntax):
1664 self.edit_syntax_error()
1664 self.edit_syntax_error()
1665
1665
1666 # We are off again...
1666 # We are off again...
1667 __builtin__.__dict__['__IPYTHON__active'] -= 1
1667 __builtin__.__dict__['__IPYTHON__active'] -= 1
1668
1668
1669 def excepthook(self, etype, value, tb):
1669 def excepthook(self, etype, value, tb):
1670 """One more defense for GUI apps that call sys.excepthook.
1670 """One more defense for GUI apps that call sys.excepthook.
1671
1671
1672 GUI frameworks like wxPython trap exceptions and call
1672 GUI frameworks like wxPython trap exceptions and call
1673 sys.excepthook themselves. I guess this is a feature that
1673 sys.excepthook themselves. I guess this is a feature that
1674 enables them to keep running after exceptions that would
1674 enables them to keep running after exceptions that would
1675 otherwise kill their mainloop. This is a bother for IPython
1675 otherwise kill their mainloop. This is a bother for IPython
1676 which excepts to catch all of the program exceptions with a try:
1676 which excepts to catch all of the program exceptions with a try:
1677 except: statement.
1677 except: statement.
1678
1678
1679 Normally, IPython sets sys.excepthook to a CrashHandler instance, so if
1679 Normally, IPython sets sys.excepthook to a CrashHandler instance, so if
1680 any app directly invokes sys.excepthook, it will look to the user like
1680 any app directly invokes sys.excepthook, it will look to the user like
1681 IPython crashed. In order to work around this, we can disable the
1681 IPython crashed. In order to work around this, we can disable the
1682 CrashHandler and replace it with this excepthook instead, which prints a
1682 CrashHandler and replace it with this excepthook instead, which prints a
1683 regular traceback using our InteractiveTB. In this fashion, apps which
1683 regular traceback using our InteractiveTB. In this fashion, apps which
1684 call sys.excepthook will generate a regular-looking exception from
1684 call sys.excepthook will generate a regular-looking exception from
1685 IPython, and the CrashHandler will only be triggered by real IPython
1685 IPython, and the CrashHandler will only be triggered by real IPython
1686 crashes.
1686 crashes.
1687
1687
1688 This hook should be used sparingly, only in places which are not likely
1688 This hook should be used sparingly, only in places which are not likely
1689 to be true IPython errors.
1689 to be true IPython errors.
1690 """
1690 """
1691 self.showtraceback((etype,value,tb),tb_offset=0)
1691 self.showtraceback((etype,value,tb),tb_offset=0)
1692
1692
1693 def expand_aliases(self,fn,rest):
1693 def expand_aliases(self,fn,rest):
1694 """ Expand multiple levels of aliases:
1694 """ Expand multiple levels of aliases:
1695
1695
1696 if:
1696 if:
1697
1697
1698 alias foo bar /tmp
1698 alias foo bar /tmp
1699 alias baz foo
1699 alias baz foo
1700
1700
1701 then:
1701 then:
1702
1702
1703 baz huhhahhei -> bar /tmp huhhahhei
1703 baz huhhahhei -> bar /tmp huhhahhei
1704
1704
1705 """
1705 """
1706 line = fn + " " + rest
1706 line = fn + " " + rest
1707
1707
1708 done = Set()
1708 done = Set()
1709 while 1:
1709 while 1:
1710 pre,fn,rest = self.split_user_input(line, pattern = self.shell_line_split)
1710 pre,fn,rest = self.split_user_input(line, pattern = self.shell_line_split)
1711 # print "!",fn,"!",rest # dbg
1711 # print "!",fn,"!",rest # dbg
1712 if fn in self.alias_table:
1712 if fn in self.alias_table:
1713 if fn in done:
1713 if fn in done:
1714 warn("Cyclic alias definition, repeated '%s'" % fn)
1714 warn("Cyclic alias definition, repeated '%s'" % fn)
1715 return ""
1715 return ""
1716 done.add(fn)
1716 done.add(fn)
1717
1717
1718 l2 = self.transform_alias(fn,rest)
1718 l2 = self.transform_alias(fn,rest)
1719 # dir -> dir
1719 # dir -> dir
1720 # print "alias",line, "->",l2 #dbg
1720 # print "alias",line, "->",l2 #dbg
1721 if l2 == line:
1721 if l2 == line:
1722 break
1722 break
1723 # ls -> ls -F should not recurse forever
1723 # ls -> ls -F should not recurse forever
1724 if l2.split(None,1)[0] == line.split(None,1)[0]:
1724 if l2.split(None,1)[0] == line.split(None,1)[0]:
1725 line = l2
1725 line = l2
1726 break
1726 break
1727
1727
1728 line=l2
1728 line=l2
1729
1729
1730
1730
1731 # print "al expand to",line #dbg
1731 # print "al expand to",line #dbg
1732 else:
1732 else:
1733 break
1733 break
1734
1734
1735 return line
1735 return line
1736
1736
1737 def transform_alias(self, alias,rest=''):
1737 def transform_alias(self, alias,rest=''):
1738 """ Transform alias to system command string.
1738 """ Transform alias to system command string.
1739 """
1739 """
1740 nargs,cmd = self.alias_table[alias]
1740 nargs,cmd = self.alias_table[alias]
1741 if ' ' in cmd and os.path.isfile(cmd):
1741 if ' ' in cmd and os.path.isfile(cmd):
1742 cmd = '"%s"' % cmd
1742 cmd = '"%s"' % cmd
1743
1743
1744 # Expand the %l special to be the user's input line
1744 # Expand the %l special to be the user's input line
1745 if cmd.find('%l') >= 0:
1745 if cmd.find('%l') >= 0:
1746 cmd = cmd.replace('%l',rest)
1746 cmd = cmd.replace('%l',rest)
1747 rest = ''
1747 rest = ''
1748 if nargs==0:
1748 if nargs==0:
1749 # Simple, argument-less aliases
1749 # Simple, argument-less aliases
1750 cmd = '%s %s' % (cmd,rest)
1750 cmd = '%s %s' % (cmd,rest)
1751 else:
1751 else:
1752 # Handle aliases with positional arguments
1752 # Handle aliases with positional arguments
1753 args = rest.split(None,nargs)
1753 args = rest.split(None,nargs)
1754 if len(args)< nargs:
1754 if len(args)< nargs:
1755 error('Alias <%s> requires %s arguments, %s given.' %
1755 error('Alias <%s> requires %s arguments, %s given.' %
1756 (alias,nargs,len(args)))
1756 (alias,nargs,len(args)))
1757 return None
1757 return None
1758 cmd = '%s %s' % (cmd % tuple(args[:nargs]),' '.join(args[nargs:]))
1758 cmd = '%s %s' % (cmd % tuple(args[:nargs]),' '.join(args[nargs:]))
1759 # Now call the macro, evaluating in the user's namespace
1759 # Now call the macro, evaluating in the user's namespace
1760 #print 'new command: <%r>' % cmd # dbg
1760 #print 'new command: <%r>' % cmd # dbg
1761 return cmd
1761 return cmd
1762
1762
1763 def call_alias(self,alias,rest=''):
1763 def call_alias(self,alias,rest=''):
1764 """Call an alias given its name and the rest of the line.
1764 """Call an alias given its name and the rest of the line.
1765
1765
1766 This is only used to provide backwards compatibility for users of
1766 This is only used to provide backwards compatibility for users of
1767 ipalias(), use of which is not recommended for anymore."""
1767 ipalias(), use of which is not recommended for anymore."""
1768
1768
1769 # Now call the macro, evaluating in the user's namespace
1769 # Now call the macro, evaluating in the user's namespace
1770 cmd = self.transform_alias(alias, rest)
1770 cmd = self.transform_alias(alias, rest)
1771 try:
1771 try:
1772 self.system(cmd)
1772 self.system(cmd)
1773 except:
1773 except:
1774 self.showtraceback()
1774 self.showtraceback()
1775
1775
1776 def indent_current_str(self):
1776 def indent_current_str(self):
1777 """return the current level of indentation as a string"""
1777 """return the current level of indentation as a string"""
1778 return self.indent_current_nsp * ' '
1778 return self.indent_current_nsp * ' '
1779
1779
1780 def autoindent_update(self,line):
1780 def autoindent_update(self,line):
1781 """Keep track of the indent level."""
1781 """Keep track of the indent level."""
1782
1782
1783 #debugx('line')
1783 #debugx('line')
1784 #debugx('self.indent_current_nsp')
1784 #debugx('self.indent_current_nsp')
1785 if self.autoindent:
1785 if self.autoindent:
1786 if line:
1786 if line:
1787 inisp = num_ini_spaces(line)
1787 inisp = num_ini_spaces(line)
1788 if inisp < self.indent_current_nsp:
1788 if inisp < self.indent_current_nsp:
1789 self.indent_current_nsp = inisp
1789 self.indent_current_nsp = inisp
1790
1790
1791 if line[-1] == ':':
1791 if line[-1] == ':':
1792 self.indent_current_nsp += 4
1792 self.indent_current_nsp += 4
1793 elif dedent_re.match(line):
1793 elif dedent_re.match(line):
1794 self.indent_current_nsp -= 4
1794 self.indent_current_nsp -= 4
1795 else:
1795 else:
1796 self.indent_current_nsp = 0
1796 self.indent_current_nsp = 0
1797
1797
1798 def runlines(self,lines):
1798 def runlines(self,lines):
1799 """Run a string of one or more lines of source.
1799 """Run a string of one or more lines of source.
1800
1800
1801 This method is capable of running a string containing multiple source
1801 This method is capable of running a string containing multiple source
1802 lines, as if they had been entered at the IPython prompt. Since it
1802 lines, as if they had been entered at the IPython prompt. Since it
1803 exposes IPython's processing machinery, the given strings can contain
1803 exposes IPython's processing machinery, the given strings can contain
1804 magic calls (%magic), special shell access (!cmd), etc."""
1804 magic calls (%magic), special shell access (!cmd), etc."""
1805
1805
1806 # We must start with a clean buffer, in case this is run from an
1806 # We must start with a clean buffer, in case this is run from an
1807 # interactive IPython session (via a magic, for example).
1807 # interactive IPython session (via a magic, for example).
1808 self.resetbuffer()
1808 self.resetbuffer()
1809 lines = lines.split('\n')
1809 lines = lines.split('\n')
1810 more = 0
1810 more = 0
1811 for line in lines:
1811 for line in lines:
1812 # skip blank lines so we don't mess up the prompt counter, but do
1812 # skip blank lines so we don't mess up the prompt counter, but do
1813 # NOT skip even a blank line if we are in a code block (more is
1813 # NOT skip even a blank line if we are in a code block (more is
1814 # true)
1814 # true)
1815 if line or more:
1815 if line or more:
1816 more = self.push(self.prefilter(line,more))
1816 more = self.push(self.prefilter(line,more))
1817 # IPython's runsource returns None if there was an error
1817 # IPython's runsource returns None if there was an error
1818 # compiling the code. This allows us to stop processing right
1818 # compiling the code. This allows us to stop processing right
1819 # away, so the user gets the error message at the right place.
1819 # away, so the user gets the error message at the right place.
1820 if more is None:
1820 if more is None:
1821 break
1821 break
1822 # final newline in case the input didn't have it, so that the code
1822 # final newline in case the input didn't have it, so that the code
1823 # actually does get executed
1823 # actually does get executed
1824 if more:
1824 if more:
1825 self.push('\n')
1825 self.push('\n')
1826
1826
1827 def runsource(self, source, filename='<input>', symbol='single'):
1827 def runsource(self, source, filename='<input>', symbol='single'):
1828 """Compile and run some source in the interpreter.
1828 """Compile and run some source in the interpreter.
1829
1829
1830 Arguments are as for compile_command().
1830 Arguments are as for compile_command().
1831
1831
1832 One several things can happen:
1832 One several things can happen:
1833
1833
1834 1) The input is incorrect; compile_command() raised an
1834 1) The input is incorrect; compile_command() raised an
1835 exception (SyntaxError or OverflowError). A syntax traceback
1835 exception (SyntaxError or OverflowError). A syntax traceback
1836 will be printed by calling the showsyntaxerror() method.
1836 will be printed by calling the showsyntaxerror() method.
1837
1837
1838 2) The input is incomplete, and more input is required;
1838 2) The input is incomplete, and more input is required;
1839 compile_command() returned None. Nothing happens.
1839 compile_command() returned None. Nothing happens.
1840
1840
1841 3) The input is complete; compile_command() returned a code
1841 3) The input is complete; compile_command() returned a code
1842 object. The code is executed by calling self.runcode() (which
1842 object. The code is executed by calling self.runcode() (which
1843 also handles run-time exceptions, except for SystemExit).
1843 also handles run-time exceptions, except for SystemExit).
1844
1844
1845 The return value is:
1845 The return value is:
1846
1846
1847 - True in case 2
1847 - True in case 2
1848
1848
1849 - False in the other cases, unless an exception is raised, where
1849 - False in the other cases, unless an exception is raised, where
1850 None is returned instead. This can be used by external callers to
1850 None is returned instead. This can be used by external callers to
1851 know whether to continue feeding input or not.
1851 know whether to continue feeding input or not.
1852
1852
1853 The return value can be used to decide whether to use sys.ps1 or
1853 The return value can be used to decide whether to use sys.ps1 or
1854 sys.ps2 to prompt the next line."""
1854 sys.ps2 to prompt the next line."""
1855
1855
1856 # if the source code has leading blanks, add 'if 1:\n' to it
1856 # if the source code has leading blanks, add 'if 1:\n' to it
1857 # this allows execution of indented pasted code. It is tempting
1857 # this allows execution of indented pasted code. It is tempting
1858 # to add '\n' at the end of source to run commands like ' a=1'
1858 # to add '\n' at the end of source to run commands like ' a=1'
1859 # directly, but this fails for more complicated scenarios
1859 # directly, but this fails for more complicated scenarios
1860 if source[:1] in [' ', '\t']:
1860 if source[:1] in [' ', '\t']:
1861 source = 'if 1:\n%s' % source
1861 source = 'if 1:\n%s' % source
1862
1862
1863 try:
1863 try:
1864 code = self.compile(source,filename,symbol)
1864 code = self.compile(source,filename,symbol)
1865 except (OverflowError, SyntaxError, ValueError):
1865 except (OverflowError, SyntaxError, ValueError):
1866 # Case 1
1866 # Case 1
1867 self.showsyntaxerror(filename)
1867 self.showsyntaxerror(filename)
1868 return None
1868 return None
1869
1869
1870 if code is None:
1870 if code is None:
1871 # Case 2
1871 # Case 2
1872 return True
1872 return True
1873
1873
1874 # Case 3
1874 # Case 3
1875 # We store the code object so that threaded shells and
1875 # We store the code object so that threaded shells and
1876 # custom exception handlers can access all this info if needed.
1876 # custom exception handlers can access all this info if needed.
1877 # The source corresponding to this can be obtained from the
1877 # The source corresponding to this can be obtained from the
1878 # buffer attribute as '\n'.join(self.buffer).
1878 # buffer attribute as '\n'.join(self.buffer).
1879 self.code_to_run = code
1879 self.code_to_run = code
1880 # now actually execute the code object
1880 # now actually execute the code object
1881 if self.runcode(code) == 0:
1881 if self.runcode(code) == 0:
1882 return False
1882 return False
1883 else:
1883 else:
1884 return None
1884 return None
1885
1885
1886 def runcode(self,code_obj):
1886 def runcode(self,code_obj):
1887 """Execute a code object.
1887 """Execute a code object.
1888
1888
1889 When an exception occurs, self.showtraceback() is called to display a
1889 When an exception occurs, self.showtraceback() is called to display a
1890 traceback.
1890 traceback.
1891
1891
1892 Return value: a flag indicating whether the code to be run completed
1892 Return value: a flag indicating whether the code to be run completed
1893 successfully:
1893 successfully:
1894
1894
1895 - 0: successful execution.
1895 - 0: successful execution.
1896 - 1: an error occurred.
1896 - 1: an error occurred.
1897 """
1897 """
1898
1898
1899 # Set our own excepthook in case the user code tries to call it
1899 # Set our own excepthook in case the user code tries to call it
1900 # directly, so that the IPython crash handler doesn't get triggered
1900 # directly, so that the IPython crash handler doesn't get triggered
1901 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
1901 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
1902
1902
1903 # we save the original sys.excepthook in the instance, in case config
1903 # we save the original sys.excepthook in the instance, in case config
1904 # code (such as magics) needs access to it.
1904 # code (such as magics) needs access to it.
1905 self.sys_excepthook = old_excepthook
1905 self.sys_excepthook = old_excepthook
1906 outflag = 1 # happens in more places, so it's easier as default
1906 outflag = 1 # happens in more places, so it's easier as default
1907 try:
1907 try:
1908 try:
1908 try:
1909 # Embedded instances require separate global/local namespaces
1909 # Embedded instances require separate global/local namespaces
1910 # so they can see both the surrounding (local) namespace and
1910 # so they can see both the surrounding (local) namespace and
1911 # the module-level globals when called inside another function.
1911 # the module-level globals when called inside another function.
1912 if self.embedded:
1912 if self.embedded:
1913 exec code_obj in self.user_global_ns, self.user_ns
1913 exec code_obj in self.user_global_ns, self.user_ns
1914 # Normal (non-embedded) instances should only have a single
1914 # Normal (non-embedded) instances should only have a single
1915 # namespace for user code execution, otherwise functions won't
1915 # namespace for user code execution, otherwise functions won't
1916 # see interactive top-level globals.
1916 # see interactive top-level globals.
1917 else:
1917 else:
1918 exec code_obj in self.user_ns
1918 exec code_obj in self.user_ns
1919 finally:
1919 finally:
1920 # Reset our crash handler in place
1920 # Reset our crash handler in place
1921 sys.excepthook = old_excepthook
1921 sys.excepthook = old_excepthook
1922 except SystemExit:
1922 except SystemExit:
1923 self.resetbuffer()
1923 self.resetbuffer()
1924 self.showtraceback()
1924 self.showtraceback()
1925 warn("Type %exit or %quit to exit IPython "
1925 warn("Type %exit or %quit to exit IPython "
1926 "(%Exit or %Quit do so unconditionally).",level=1)
1926 "(%Exit or %Quit do so unconditionally).",level=1)
1927 except self.custom_exceptions:
1927 except self.custom_exceptions:
1928 etype,value,tb = sys.exc_info()
1928 etype,value,tb = sys.exc_info()
1929 self.CustomTB(etype,value,tb)
1929 self.CustomTB(etype,value,tb)
1930 except:
1930 except:
1931 self.showtraceback()
1931 self.showtraceback()
1932 else:
1932 else:
1933 outflag = 0
1933 outflag = 0
1934 if softspace(sys.stdout, 0):
1934 if softspace(sys.stdout, 0):
1935 print
1935 print
1936 # Flush out code object which has been run (and source)
1936 # Flush out code object which has been run (and source)
1937 self.code_to_run = None
1937 self.code_to_run = None
1938 return outflag
1938 return outflag
1939
1939
1940 def push(self, line):
1940 def push(self, line):
1941 """Push a line to the interpreter.
1941 """Push a line to the interpreter.
1942
1942
1943 The line should not have a trailing newline; it may have
1943 The line should not have a trailing newline; it may have
1944 internal newlines. The line is appended to a buffer and the
1944 internal newlines. The line is appended to a buffer and the
1945 interpreter's runsource() method is called with the
1945 interpreter's runsource() method is called with the
1946 concatenated contents of the buffer as source. If this
1946 concatenated contents of the buffer as source. If this
1947 indicates that the command was executed or invalid, the buffer
1947 indicates that the command was executed or invalid, the buffer
1948 is reset; otherwise, the command is incomplete, and the buffer
1948 is reset; otherwise, the command is incomplete, and the buffer
1949 is left as it was after the line was appended. The return
1949 is left as it was after the line was appended. The return
1950 value is 1 if more input is required, 0 if the line was dealt
1950 value is 1 if more input is required, 0 if the line was dealt
1951 with in some way (this is the same as runsource()).
1951 with in some way (this is the same as runsource()).
1952 """
1952 """
1953
1953
1954 # autoindent management should be done here, and not in the
1954 # autoindent management should be done here, and not in the
1955 # interactive loop, since that one is only seen by keyboard input. We
1955 # interactive loop, since that one is only seen by keyboard input. We
1956 # need this done correctly even for code run via runlines (which uses
1956 # need this done correctly even for code run via runlines (which uses
1957 # push).
1957 # push).
1958
1958
1959 #print 'push line: <%s>' % line # dbg
1959 #print 'push line: <%s>' % line # dbg
1960 for subline in line.splitlines():
1960 for subline in line.splitlines():
1961 self.autoindent_update(subline)
1961 self.autoindent_update(subline)
1962 self.buffer.append(line)
1962 self.buffer.append(line)
1963 more = self.runsource('\n'.join(self.buffer), self.filename)
1963 more = self.runsource('\n'.join(self.buffer), self.filename)
1964 if not more:
1964 if not more:
1965 self.resetbuffer()
1965 self.resetbuffer()
1966 return more
1966 return more
1967
1967
1968 def resetbuffer(self):
1968 def resetbuffer(self):
1969 """Reset the input buffer."""
1969 """Reset the input buffer."""
1970 self.buffer[:] = []
1970 self.buffer[:] = []
1971
1971
1972 def raw_input(self,prompt='',continue_prompt=False):
1972 def raw_input(self,prompt='',continue_prompt=False):
1973 """Write a prompt and read a line.
1973 """Write a prompt and read a line.
1974
1974
1975 The returned line does not include the trailing newline.
1975 The returned line does not include the trailing newline.
1976 When the user enters the EOF key sequence, EOFError is raised.
1976 When the user enters the EOF key sequence, EOFError is raised.
1977
1977
1978 Optional inputs:
1978 Optional inputs:
1979
1979
1980 - prompt(''): a string to be printed to prompt the user.
1980 - prompt(''): a string to be printed to prompt the user.
1981
1981
1982 - continue_prompt(False): whether this line is the first one or a
1982 - continue_prompt(False): whether this line is the first one or a
1983 continuation in a sequence of inputs.
1983 continuation in a sequence of inputs.
1984 """
1984 """
1985
1985
1986 try:
1986 try:
1987 line = raw_input_original(prompt).decode(sys.stdin.encoding)
1987 line = raw_input_original(prompt).decode(sys.stdin.encoding)
1988 #line = raw_input_original(prompt)
1988 #line = raw_input_original(prompt)
1989 except ValueError:
1989 except ValueError:
1990 warn("\n********\nYou or a %run:ed script called sys.stdin.close() or sys.stdout.close()!\nExiting IPython!")
1990 warn("\n********\nYou or a %run:ed script called sys.stdin.close() or sys.stdout.close()!\nExiting IPython!")
1991 self.exit_now = True
1991 self.exit_now = True
1992 return ""
1992 return ""
1993
1993
1994
1994
1995 # Try to be reasonably smart about not re-indenting pasted input more
1995 # Try to be reasonably smart about not re-indenting pasted input more
1996 # than necessary. We do this by trimming out the auto-indent initial
1996 # than necessary. We do this by trimming out the auto-indent initial
1997 # spaces, if the user's actual input started itself with whitespace.
1997 # spaces, if the user's actual input started itself with whitespace.
1998 #debugx('self.buffer[-1]')
1998 #debugx('self.buffer[-1]')
1999
1999
2000 if self.autoindent:
2000 if self.autoindent:
2001 if num_ini_spaces(line) > self.indent_current_nsp:
2001 if num_ini_spaces(line) > self.indent_current_nsp:
2002 line = line[self.indent_current_nsp:]
2002 line = line[self.indent_current_nsp:]
2003 self.indent_current_nsp = 0
2003 self.indent_current_nsp = 0
2004
2004
2005 # store the unfiltered input before the user has any chance to modify
2005 # store the unfiltered input before the user has any chance to modify
2006 # it.
2006 # it.
2007 if line.strip():
2007 if line.strip():
2008 if continue_prompt:
2008 if continue_prompt:
2009 self.input_hist_raw[-1] += '%s\n' % line
2009 self.input_hist_raw[-1] += '%s\n' % line
2010 if self.has_readline: # and some config option is set?
2010 if self.has_readline: # and some config option is set?
2011 try:
2011 try:
2012 histlen = self.readline.get_current_history_length()
2012 histlen = self.readline.get_current_history_length()
2013 newhist = self.input_hist_raw[-1].rstrip()
2013 newhist = self.input_hist_raw[-1].rstrip()
2014 self.readline.remove_history_item(histlen-1)
2014 self.readline.remove_history_item(histlen-1)
2015 self.readline.replace_history_item(histlen-2,newhist)
2015 self.readline.replace_history_item(histlen-2,newhist)
2016 except AttributeError:
2016 except AttributeError:
2017 pass # re{move,place}_history_item are new in 2.4.
2017 pass # re{move,place}_history_item are new in 2.4.
2018 else:
2018 else:
2019 self.input_hist_raw.append('%s\n' % line)
2019 self.input_hist_raw.append('%s\n' % line)
2020
2020
2021 try:
2021 try:
2022 lineout = self.prefilter(line,continue_prompt)
2022 lineout = self.prefilter(line,continue_prompt)
2023 except:
2023 except:
2024 # blanket except, in case a user-defined prefilter crashes, so it
2024 # blanket except, in case a user-defined prefilter crashes, so it
2025 # can't take all of ipython with it.
2025 # can't take all of ipython with it.
2026 self.showtraceback()
2026 self.showtraceback()
2027 return ''
2027 return ''
2028 else:
2028 else:
2029 return lineout
2029 return lineout
2030
2030
2031 def split_user_input(self,line, pattern = None):
2031 def split_user_input(self,line, pattern = None):
2032 """Split user input into pre-char, function part and rest."""
2032 """Split user input into pre-char, function part and rest."""
2033
2033
2034 if pattern is None:
2034 if pattern is None:
2035 pattern = self.line_split
2035 pattern = self.line_split
2036
2036
2037 lsplit = pattern.match(line)
2037 lsplit = pattern.match(line)
2038 if lsplit is None: # no regexp match returns None
2038 if lsplit is None: # no regexp match returns None
2039 #print "match failed for line '%s'" % line # dbg
2039 #print "match failed for line '%s'" % line # dbg
2040 try:
2040 try:
2041 iFun,theRest = line.split(None,1)
2041 iFun,theRest = line.split(None,1)
2042 except ValueError:
2042 except ValueError:
2043 #print "split failed for line '%s'" % line # dbg
2043 #print "split failed for line '%s'" % line # dbg
2044 iFun,theRest = line,''
2044 iFun,theRest = line,''
2045 pre = re.match('^(\s*)(.*)',line).groups()[0]
2045 pre = re.match('^(\s*)(.*)',line).groups()[0]
2046 else:
2046 else:
2047 pre,iFun,theRest = lsplit.groups()
2047 pre,iFun,theRest = lsplit.groups()
2048
2048
2049 # iFun has to be a valid python identifier, so it better be only pure
2049 # iFun has to be a valid python identifier, so it better be only pure
2050 #ascii, no unicode:
2050 #ascii, no unicode:
2051 try:
2051 try:
2052 iFun = iFun.encode('ascii')
2052 iFun = iFun.encode('ascii')
2053 except UnicodeEncodeError:
2053 except UnicodeEncodeError:
2054 theRest = iFun+u' '+theRest
2054 theRest = iFun+u' '+theRest
2055 iFun = u''
2055 iFun = u''
2056
2056
2057 #print 'line:<%s>' % line # dbg
2057 #print 'line:<%s>' % line # dbg
2058 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
2058 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
2059 return pre,iFun.strip(),theRest
2059 return pre,iFun.strip(),theRest
2060
2060
2061 # THIS VERSION IS BROKEN!!! It was intended to prevent spurious attribute
2061 # THIS VERSION IS BROKEN!!! It was intended to prevent spurious attribute
2062 # accesses with a more stringent check of inputs, but it introduced other
2062 # accesses with a more stringent check of inputs, but it introduced other
2063 # bugs. Disable it for now until I can properly fix it.
2063 # bugs. Disable it for now until I can properly fix it.
2064 def split_user_inputBROKEN(self,line):
2064 def split_user_inputBROKEN(self,line):
2065 """Split user input into pre-char, function part and rest."""
2065 """Split user input into pre-char, function part and rest."""
2066
2066
2067 lsplit = self.line_split.match(line)
2067 lsplit = self.line_split.match(line)
2068 if lsplit is None: # no regexp match returns None
2068 if lsplit is None: # no regexp match returns None
2069 lsplit = self.line_split_fallback.match(line)
2069 lsplit = self.line_split_fallback.match(line)
2070
2070
2071 #pre,iFun,theRest = lsplit.groups() # dbg
2071 #pre,iFun,theRest = lsplit.groups() # dbg
2072 #print 'line:<%s>' % line # dbg
2072 #print 'line:<%s>' % line # dbg
2073 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
2073 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
2074 #return pre,iFun.strip(),theRest # dbg
2074 #return pre,iFun.strip(),theRest # dbg
2075
2075
2076 return lsplit.groups()
2076 return lsplit.groups()
2077
2077
2078 def _prefilter(self, line, continue_prompt):
2078 def _prefilter(self, line, continue_prompt):
2079 """Calls different preprocessors, depending on the form of line."""
2079 """Calls different preprocessors, depending on the form of line."""
2080
2080
2081 # All handlers *must* return a value, even if it's blank ('').
2081 # All handlers *must* return a value, even if it's blank ('').
2082
2082
2083 # Lines are NOT logged here. Handlers should process the line as
2083 # Lines are NOT logged here. Handlers should process the line as
2084 # needed, update the cache AND log it (so that the input cache array
2084 # needed, update the cache AND log it (so that the input cache array
2085 # stays synced).
2085 # stays synced).
2086
2086
2087 # This function is _very_ delicate, and since it's also the one which
2087 # This function is _very_ delicate, and since it's also the one which
2088 # determines IPython's response to user input, it must be as efficient
2088 # determines IPython's response to user input, it must be as efficient
2089 # as possible. For this reason it has _many_ returns in it, trying
2089 # as possible. For this reason it has _many_ returns in it, trying
2090 # always to exit as quickly as it can figure out what it needs to do.
2090 # always to exit as quickly as it can figure out what it needs to do.
2091
2091
2092 # This function is the main responsible for maintaining IPython's
2092 # This function is the main responsible for maintaining IPython's
2093 # behavior respectful of Python's semantics. So be _very_ careful if
2093 # behavior respectful of Python's semantics. So be _very_ careful if
2094 # making changes to anything here.
2094 # making changes to anything here.
2095
2095
2096 #.....................................................................
2096 #.....................................................................
2097 # Code begins
2097 # Code begins
2098
2098
2099 #if line.startswith('%crash'): raise RuntimeError,'Crash now!' # dbg
2099 #if line.startswith('%crash'): raise RuntimeError,'Crash now!' # dbg
2100
2100
2101 # save the line away in case we crash, so the post-mortem handler can
2101 # save the line away in case we crash, so the post-mortem handler can
2102 # record it
2102 # record it
2103 self._last_input_line = line
2103 self._last_input_line = line
2104
2104
2105 #print '***line: <%s>' % line # dbg
2105 #print '***line: <%s>' % line # dbg
2106
2106
2107 # the input history needs to track even empty lines
2107 # the input history needs to track even empty lines
2108 stripped = line.strip()
2108 stripped = line.strip()
2109
2109
2110 if not stripped:
2110 if not stripped:
2111 if not continue_prompt:
2111 if not continue_prompt:
2112 self.outputcache.prompt_count -= 1
2112 self.outputcache.prompt_count -= 1
2113 return self.handle_normal(line,continue_prompt)
2113 return self.handle_normal(line,continue_prompt)
2114 #return self.handle_normal('',continue_prompt)
2114 #return self.handle_normal('',continue_prompt)
2115
2115
2116 # print '***cont',continue_prompt # dbg
2116 # print '***cont',continue_prompt # dbg
2117 # special handlers are only allowed for single line statements
2117 # special handlers are only allowed for single line statements
2118 if continue_prompt and not self.rc.multi_line_specials:
2118 if continue_prompt and not self.rc.multi_line_specials:
2119 return self.handle_normal(line,continue_prompt)
2119 return self.handle_normal(line,continue_prompt)
2120
2120
2121
2121
2122 # For the rest, we need the structure of the input
2122 # For the rest, we need the structure of the input
2123 pre,iFun,theRest = self.split_user_input(line)
2123 pre,iFun,theRest = self.split_user_input(line)
2124
2124
2125 # See whether any pre-existing handler can take care of it
2125 # See whether any pre-existing handler can take care of it
2126
2126
2127 rewritten = self.hooks.input_prefilter(stripped)
2127 rewritten = self.hooks.input_prefilter(stripped)
2128 if rewritten != stripped: # ok, some prefilter did something
2128 if rewritten != stripped: # ok, some prefilter did something
2129 rewritten = pre + rewritten # add indentation
2129 rewritten = pre + rewritten # add indentation
2130 return self.handle_normal(rewritten)
2130 return self.handle_normal(rewritten)
2131
2131
2132 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2132 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2133
2133
2134 # Next, check if we can automatically execute this thing
2134 # Next, check if we can automatically execute this thing
2135
2135
2136 # Allow ! in multi-line statements if multi_line_specials is on:
2136 # Allow ! in multi-line statements if multi_line_specials is on:
2137 if continue_prompt and self.rc.multi_line_specials and \
2137 if continue_prompt and self.rc.multi_line_specials and \
2138 iFun.startswith(self.ESC_SHELL):
2138 iFun.startswith(self.ESC_SHELL):
2139 return self.handle_shell_escape(line,continue_prompt,
2139 return self.handle_shell_escape(line,continue_prompt,
2140 pre=pre,iFun=iFun,
2140 pre=pre,iFun=iFun,
2141 theRest=theRest)
2141 theRest=theRest)
2142
2142
2143 # First check for explicit escapes in the last/first character
2143 # First check for explicit escapes in the last/first character
2144 handler = None
2144 handler = None
2145 if line[-1] == self.ESC_HELP:
2145 if line[-1] == self.ESC_HELP and line[0] != self.ESC_SHELL:
2146 handler = self.esc_handlers.get(line[-1]) # the ? can be at the end
2146 handler = self.esc_handlers.get(line[-1]) # the ? can be at the end
2147 if handler is None:
2147 if handler is None:
2148 # look at the first character of iFun, NOT of line, so we skip
2148 # look at the first character of iFun, NOT of line, so we skip
2149 # leading whitespace in multiline input
2149 # leading whitespace in multiline input
2150 handler = self.esc_handlers.get(iFun[0:1])
2150 handler = self.esc_handlers.get(iFun[0:1])
2151 if handler is not None:
2151 if handler is not None:
2152 return handler(line,continue_prompt,pre,iFun,theRest)
2152 return handler(line,continue_prompt,pre,iFun,theRest)
2153 # Emacs ipython-mode tags certain input lines
2153 # Emacs ipython-mode tags certain input lines
2154 if line.endswith('# PYTHON-MODE'):
2154 if line.endswith('# PYTHON-MODE'):
2155 return self.handle_emacs(line,continue_prompt)
2155 return self.handle_emacs(line,continue_prompt)
2156
2156
2157 # Let's try to find if the input line is a magic fn
2157 # Let's try to find if the input line is a magic fn
2158 oinfo = None
2158 oinfo = None
2159 if hasattr(self,'magic_'+iFun):
2159 if hasattr(self,'magic_'+iFun):
2160 # WARNING: _ofind uses getattr(), so it can consume generators and
2160 # WARNING: _ofind uses getattr(), so it can consume generators and
2161 # cause other side effects.
2161 # cause other side effects.
2162 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2162 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2163 if oinfo['ismagic']:
2163 if oinfo['ismagic']:
2164 # Be careful not to call magics when a variable assignment is
2164 # Be careful not to call magics when a variable assignment is
2165 # being made (ls='hi', for example)
2165 # being made (ls='hi', for example)
2166 if self.rc.automagic and \
2166 if self.rc.automagic and \
2167 (len(theRest)==0 or theRest[0] not in '!=()<>,') and \
2167 (len(theRest)==0 or theRest[0] not in '!=()<>,') and \
2168 (self.rc.multi_line_specials or not continue_prompt):
2168 (self.rc.multi_line_specials or not continue_prompt):
2169 return self.handle_magic(line,continue_prompt,
2169 return self.handle_magic(line,continue_prompt,
2170 pre,iFun,theRest)
2170 pre,iFun,theRest)
2171 else:
2171 else:
2172 return self.handle_normal(line,continue_prompt)
2172 return self.handle_normal(line,continue_prompt)
2173
2173
2174 # If the rest of the line begins with an (in)equality, assginment or
2174 # If the rest of the line begins with an (in)equality, assginment or
2175 # function call, we should not call _ofind but simply execute it.
2175 # function call, we should not call _ofind but simply execute it.
2176 # This avoids spurious geattr() accesses on objects upon assignment.
2176 # This avoids spurious geattr() accesses on objects upon assignment.
2177 #
2177 #
2178 # It also allows users to assign to either alias or magic names true
2178 # It also allows users to assign to either alias or magic names true
2179 # python variables (the magic/alias systems always take second seat to
2179 # python variables (the magic/alias systems always take second seat to
2180 # true python code).
2180 # true python code).
2181 if theRest and theRest[0] in '!=()':
2181 if theRest and theRest[0] in '!=()':
2182 return self.handle_normal(line,continue_prompt)
2182 return self.handle_normal(line,continue_prompt)
2183
2183
2184 if oinfo is None:
2184 if oinfo is None:
2185 # let's try to ensure that _oinfo is ONLY called when autocall is
2185 # let's try to ensure that _oinfo is ONLY called when autocall is
2186 # on. Since it has inevitable potential side effects, at least
2186 # on. Since it has inevitable potential side effects, at least
2187 # having autocall off should be a guarantee to the user that no
2187 # having autocall off should be a guarantee to the user that no
2188 # weird things will happen.
2188 # weird things will happen.
2189
2189
2190 if self.rc.autocall:
2190 if self.rc.autocall:
2191 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2191 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
2192 else:
2192 else:
2193 # in this case, all that's left is either an alias or
2193 # in this case, all that's left is either an alias or
2194 # processing the line normally.
2194 # processing the line normally.
2195 if iFun in self.alias_table:
2195 if iFun in self.alias_table:
2196 # if autocall is off, by not running _ofind we won't know
2196 # if autocall is off, by not running _ofind we won't know
2197 # whether the given name may also exist in one of the
2197 # whether the given name may also exist in one of the
2198 # user's namespace. At this point, it's best to do a
2198 # user's namespace. At this point, it's best to do a
2199 # quick check just to be sure that we don't let aliases
2199 # quick check just to be sure that we don't let aliases
2200 # shadow variables.
2200 # shadow variables.
2201 head = iFun.split('.',1)[0]
2201 head = iFun.split('.',1)[0]
2202 if head in self.user_ns or head in self.internal_ns \
2202 if head in self.user_ns or head in self.internal_ns \
2203 or head in __builtin__.__dict__:
2203 or head in __builtin__.__dict__:
2204 return self.handle_normal(line,continue_prompt)
2204 return self.handle_normal(line,continue_prompt)
2205 else:
2205 else:
2206 return self.handle_alias(line,continue_prompt,
2206 return self.handle_alias(line,continue_prompt,
2207 pre,iFun,theRest)
2207 pre,iFun,theRest)
2208
2208
2209 else:
2209 else:
2210 return self.handle_normal(line,continue_prompt)
2210 return self.handle_normal(line,continue_prompt)
2211
2211
2212 if not oinfo['found']:
2212 if not oinfo['found']:
2213 return self.handle_normal(line,continue_prompt)
2213 return self.handle_normal(line,continue_prompt)
2214 else:
2214 else:
2215 #print 'pre<%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2215 #print 'pre<%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2216 if oinfo['isalias']:
2216 if oinfo['isalias']:
2217 return self.handle_alias(line,continue_prompt,
2217 return self.handle_alias(line,continue_prompt,
2218 pre,iFun,theRest)
2218 pre,iFun,theRest)
2219
2219
2220 if (self.rc.autocall
2220 if (self.rc.autocall
2221 and
2221 and
2222 (
2222 (
2223 #only consider exclusion re if not "," or ";" autoquoting
2223 #only consider exclusion re if not "," or ";" autoquoting
2224 (pre == self.ESC_QUOTE or pre == self.ESC_QUOTE2
2224 (pre == self.ESC_QUOTE or pre == self.ESC_QUOTE2
2225 or pre == self.ESC_PAREN) or
2225 or pre == self.ESC_PAREN) or
2226 (not self.re_exclude_auto.match(theRest)))
2226 (not self.re_exclude_auto.match(theRest)))
2227 and
2227 and
2228 self.re_fun_name.match(iFun) and
2228 self.re_fun_name.match(iFun) and
2229 callable(oinfo['obj'])) :
2229 callable(oinfo['obj'])) :
2230 #print 'going auto' # dbg
2230 #print 'going auto' # dbg
2231 return self.handle_auto(line,continue_prompt,
2231 return self.handle_auto(line,continue_prompt,
2232 pre,iFun,theRest,oinfo['obj'])
2232 pre,iFun,theRest,oinfo['obj'])
2233 else:
2233 else:
2234 #print 'was callable?', callable(oinfo['obj']) # dbg
2234 #print 'was callable?', callable(oinfo['obj']) # dbg
2235 return self.handle_normal(line,continue_prompt)
2235 return self.handle_normal(line,continue_prompt)
2236
2236
2237 # If we get here, we have a normal Python line. Log and return.
2237 # If we get here, we have a normal Python line. Log and return.
2238 return self.handle_normal(line,continue_prompt)
2238 return self.handle_normal(line,continue_prompt)
2239
2239
2240 def _prefilter_dumb(self, line, continue_prompt):
2240 def _prefilter_dumb(self, line, continue_prompt):
2241 """simple prefilter function, for debugging"""
2241 """simple prefilter function, for debugging"""
2242 return self.handle_normal(line,continue_prompt)
2242 return self.handle_normal(line,continue_prompt)
2243
2243
2244
2244
2245 def multiline_prefilter(self, line, continue_prompt):
2245 def multiline_prefilter(self, line, continue_prompt):
2246 """ Run _prefilter for each line of input
2246 """ Run _prefilter for each line of input
2247
2247
2248 Covers cases where there are multiple lines in the user entry,
2248 Covers cases where there are multiple lines in the user entry,
2249 which is the case when the user goes back to a multiline history
2249 which is the case when the user goes back to a multiline history
2250 entry and presses enter.
2250 entry and presses enter.
2251
2251
2252 """
2252 """
2253 out = []
2253 out = []
2254 for l in line.rstrip('\n').split('\n'):
2254 for l in line.rstrip('\n').split('\n'):
2255 out.append(self._prefilter(l, continue_prompt))
2255 out.append(self._prefilter(l, continue_prompt))
2256 return '\n'.join(out)
2256 return '\n'.join(out)
2257
2257
2258 # Set the default prefilter() function (this can be user-overridden)
2258 # Set the default prefilter() function (this can be user-overridden)
2259 prefilter = multiline_prefilter
2259 prefilter = multiline_prefilter
2260
2260
2261 def handle_normal(self,line,continue_prompt=None,
2261 def handle_normal(self,line,continue_prompt=None,
2262 pre=None,iFun=None,theRest=None):
2262 pre=None,iFun=None,theRest=None):
2263 """Handle normal input lines. Use as a template for handlers."""
2263 """Handle normal input lines. Use as a template for handlers."""
2264
2264
2265 # With autoindent on, we need some way to exit the input loop, and I
2265 # With autoindent on, we need some way to exit the input loop, and I
2266 # don't want to force the user to have to backspace all the way to
2266 # don't want to force the user to have to backspace all the way to
2267 # clear the line. The rule will be in this case, that either two
2267 # clear the line. The rule will be in this case, that either two
2268 # lines of pure whitespace in a row, or a line of pure whitespace but
2268 # lines of pure whitespace in a row, or a line of pure whitespace but
2269 # of a size different to the indent level, will exit the input loop.
2269 # of a size different to the indent level, will exit the input loop.
2270
2270
2271 if (continue_prompt and self.autoindent and line.isspace() and
2271 if (continue_prompt and self.autoindent and line.isspace() and
2272 (0 < abs(len(line) - self.indent_current_nsp) <= 2 or
2272 (0 < abs(len(line) - self.indent_current_nsp) <= 2 or
2273 (self.buffer[-1]).isspace() )):
2273 (self.buffer[-1]).isspace() )):
2274 line = ''
2274 line = ''
2275
2275
2276 self.log(line,line,continue_prompt)
2276 self.log(line,line,continue_prompt)
2277 return line
2277 return line
2278
2278
2279 def handle_alias(self,line,continue_prompt=None,
2279 def handle_alias(self,line,continue_prompt=None,
2280 pre=None,iFun=None,theRest=None):
2280 pre=None,iFun=None,theRest=None):
2281 """Handle alias input lines. """
2281 """Handle alias input lines. """
2282
2282
2283 # pre is needed, because it carries the leading whitespace. Otherwise
2283 # pre is needed, because it carries the leading whitespace. Otherwise
2284 # aliases won't work in indented sections.
2284 # aliases won't work in indented sections.
2285 transformed = self.expand_aliases(iFun, theRest)
2285 transformed = self.expand_aliases(iFun, theRest)
2286 line_out = '%s_ip.system(%s)' % (pre, make_quoted_expr( transformed ))
2286 line_out = '%s_ip.system(%s)' % (pre, make_quoted_expr( transformed ))
2287 self.log(line,line_out,continue_prompt)
2287 self.log(line,line_out,continue_prompt)
2288 #print 'line out:',line_out # dbg
2288 #print 'line out:',line_out # dbg
2289 return line_out
2289 return line_out
2290
2290
2291 def handle_shell_escape(self, line, continue_prompt=None,
2291 def handle_shell_escape(self, line, continue_prompt=None,
2292 pre=None,iFun=None,theRest=None):
2292 pre=None,iFun=None,theRest=None):
2293 """Execute the line in a shell, empty return value"""
2293 """Execute the line in a shell, empty return value"""
2294
2294
2295 #print 'line in :', `line` # dbg
2295 #print 'line in :', `line` # dbg
2296 # Example of a special handler. Others follow a similar pattern.
2296 # Example of a special handler. Others follow a similar pattern.
2297 if line.lstrip().startswith('!!'):
2297 if line.lstrip().startswith('!!'):
2298 # rewrite iFun/theRest to properly hold the call to %sx and
2298 # rewrite iFun/theRest to properly hold the call to %sx and
2299 # the actual command to be executed, so handle_magic can work
2299 # the actual command to be executed, so handle_magic can work
2300 # correctly
2300 # correctly
2301 theRest = '%s %s' % (iFun[2:],theRest)
2301 theRest = '%s %s' % (iFun[2:],theRest)
2302 iFun = 'sx'
2302 iFun = 'sx'
2303 return self.handle_magic('%ssx %s' % (self.ESC_MAGIC,
2303 return self.handle_magic('%ssx %s' % (self.ESC_MAGIC,
2304 line.lstrip()[2:]),
2304 line.lstrip()[2:]),
2305 continue_prompt,pre,iFun,theRest)
2305 continue_prompt,pre,iFun,theRest)
2306 else:
2306 else:
2307 cmd=line.lstrip().lstrip('!')
2307 cmd=line.lstrip().lstrip('!')
2308 line_out = '%s_ip.system(%s)' % (pre,make_quoted_expr(cmd))
2308 line_out = '%s_ip.system(%s)' % (pre,make_quoted_expr(cmd))
2309 # update cache/log and return
2309 # update cache/log and return
2310 self.log(line,line_out,continue_prompt)
2310 self.log(line,line_out,continue_prompt)
2311 return line_out
2311 return line_out
2312
2312
2313 def handle_magic(self, line, continue_prompt=None,
2313 def handle_magic(self, line, continue_prompt=None,
2314 pre=None,iFun=None,theRest=None):
2314 pre=None,iFun=None,theRest=None):
2315 """Execute magic functions."""
2315 """Execute magic functions."""
2316
2316
2317
2317
2318 cmd = '%s_ip.magic(%s)' % (pre,make_quoted_expr(iFun + " " + theRest))
2318 cmd = '%s_ip.magic(%s)' % (pre,make_quoted_expr(iFun + " " + theRest))
2319 self.log(line,cmd,continue_prompt)
2319 self.log(line,cmd,continue_prompt)
2320 #print 'in handle_magic, cmd=<%s>' % cmd # dbg
2320 #print 'in handle_magic, cmd=<%s>' % cmd # dbg
2321 return cmd
2321 return cmd
2322
2322
2323 def handle_auto(self, line, continue_prompt=None,
2323 def handle_auto(self, line, continue_prompt=None,
2324 pre=None,iFun=None,theRest=None,obj=None):
2324 pre=None,iFun=None,theRest=None,obj=None):
2325 """Hande lines which can be auto-executed, quoting if requested."""
2325 """Hande lines which can be auto-executed, quoting if requested."""
2326
2326
2327 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2327 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2328
2328
2329 # This should only be active for single-line input!
2329 # This should only be active for single-line input!
2330 if continue_prompt:
2330 if continue_prompt:
2331 self.log(line,line,continue_prompt)
2331 self.log(line,line,continue_prompt)
2332 return line
2332 return line
2333
2333
2334 auto_rewrite = True
2334 auto_rewrite = True
2335
2335
2336 if pre == self.ESC_QUOTE:
2336 if pre == self.ESC_QUOTE:
2337 # Auto-quote splitting on whitespace
2337 # Auto-quote splitting on whitespace
2338 newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) )
2338 newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) )
2339 elif pre == self.ESC_QUOTE2:
2339 elif pre == self.ESC_QUOTE2:
2340 # Auto-quote whole string
2340 # Auto-quote whole string
2341 newcmd = '%s("%s")' % (iFun,theRest)
2341 newcmd = '%s("%s")' % (iFun,theRest)
2342 elif pre == self.ESC_PAREN:
2342 elif pre == self.ESC_PAREN:
2343 newcmd = '%s(%s)' % (iFun,",".join(theRest.split()))
2343 newcmd = '%s(%s)' % (iFun,",".join(theRest.split()))
2344 else:
2344 else:
2345 # Auto-paren.
2345 # Auto-paren.
2346 # We only apply it to argument-less calls if the autocall
2346 # We only apply it to argument-less calls if the autocall
2347 # parameter is set to 2. We only need to check that autocall is <
2347 # parameter is set to 2. We only need to check that autocall is <
2348 # 2, since this function isn't called unless it's at least 1.
2348 # 2, since this function isn't called unless it's at least 1.
2349 if not theRest and (self.rc.autocall < 2):
2349 if not theRest and (self.rc.autocall < 2):
2350 newcmd = '%s %s' % (iFun,theRest)
2350 newcmd = '%s %s' % (iFun,theRest)
2351 auto_rewrite = False
2351 auto_rewrite = False
2352 else:
2352 else:
2353 if theRest.startswith('['):
2353 if theRest.startswith('['):
2354 if hasattr(obj,'__getitem__'):
2354 if hasattr(obj,'__getitem__'):
2355 # Don't autocall in this case: item access for an object
2355 # Don't autocall in this case: item access for an object
2356 # which is BOTH callable and implements __getitem__.
2356 # which is BOTH callable and implements __getitem__.
2357 newcmd = '%s %s' % (iFun,theRest)
2357 newcmd = '%s %s' % (iFun,theRest)
2358 auto_rewrite = False
2358 auto_rewrite = False
2359 else:
2359 else:
2360 # if the object doesn't support [] access, go ahead and
2360 # if the object doesn't support [] access, go ahead and
2361 # autocall
2361 # autocall
2362 newcmd = '%s(%s)' % (iFun.rstrip(),theRest)
2362 newcmd = '%s(%s)' % (iFun.rstrip(),theRest)
2363 elif theRest.endswith(';'):
2363 elif theRest.endswith(';'):
2364 newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1])
2364 newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1])
2365 else:
2365 else:
2366 newcmd = '%s(%s)' % (iFun.rstrip(), theRest)
2366 newcmd = '%s(%s)' % (iFun.rstrip(), theRest)
2367
2367
2368 if auto_rewrite:
2368 if auto_rewrite:
2369 print >>Term.cout, self.outputcache.prompt1.auto_rewrite() + newcmd
2369 print >>Term.cout, self.outputcache.prompt1.auto_rewrite() + newcmd
2370 # log what is now valid Python, not the actual user input (without the
2370 # log what is now valid Python, not the actual user input (without the
2371 # final newline)
2371 # final newline)
2372 self.log(line,newcmd,continue_prompt)
2372 self.log(line,newcmd,continue_prompt)
2373 return newcmd
2373 return newcmd
2374
2374
2375 def handle_help(self, line, continue_prompt=None,
2375 def handle_help(self, line, continue_prompt=None,
2376 pre=None,iFun=None,theRest=None):
2376 pre=None,iFun=None,theRest=None):
2377 """Try to get some help for the object.
2377 """Try to get some help for the object.
2378
2378
2379 obj? or ?obj -> basic information.
2379 obj? or ?obj -> basic information.
2380 obj?? or ??obj -> more details.
2380 obj?? or ??obj -> more details.
2381 """
2381 """
2382
2382
2383 # We need to make sure that we don't process lines which would be
2383 # We need to make sure that we don't process lines which would be
2384 # otherwise valid python, such as "x=1 # what?"
2384 # otherwise valid python, such as "x=1 # what?"
2385 try:
2385 try:
2386 codeop.compile_command(line)
2386 codeop.compile_command(line)
2387 except SyntaxError:
2387 except SyntaxError:
2388 # We should only handle as help stuff which is NOT valid syntax
2388 # We should only handle as help stuff which is NOT valid syntax
2389 if line[0]==self.ESC_HELP:
2389 if line[0]==self.ESC_HELP:
2390 line = line[1:]
2390 line = line[1:]
2391 elif line[-1]==self.ESC_HELP:
2391 elif line[-1]==self.ESC_HELP:
2392 line = line[:-1]
2392 line = line[:-1]
2393 self.log(line,'#?'+line,continue_prompt)
2393 self.log(line,'#?'+line,continue_prompt)
2394 if line:
2394 if line:
2395 #print 'line:<%r>' % line # dbg
2395 #print 'line:<%r>' % line # dbg
2396 self.magic_pinfo(line)
2396 self.magic_pinfo(line)
2397 else:
2397 else:
2398 page(self.usage,screen_lines=self.rc.screen_length)
2398 page(self.usage,screen_lines=self.rc.screen_length)
2399 return '' # Empty string is needed here!
2399 return '' # Empty string is needed here!
2400 except:
2400 except:
2401 # Pass any other exceptions through to the normal handler
2401 # Pass any other exceptions through to the normal handler
2402 return self.handle_normal(line,continue_prompt)
2402 return self.handle_normal(line,continue_prompt)
2403 else:
2403 else:
2404 # If the code compiles ok, we should handle it normally
2404 # If the code compiles ok, we should handle it normally
2405 return self.handle_normal(line,continue_prompt)
2405 return self.handle_normal(line,continue_prompt)
2406
2406
2407 def getapi(self):
2407 def getapi(self):
2408 """ Get an IPApi object for this shell instance
2408 """ Get an IPApi object for this shell instance
2409
2409
2410 Getting an IPApi object is always preferable to accessing the shell
2410 Getting an IPApi object is always preferable to accessing the shell
2411 directly, but this holds true especially for extensions.
2411 directly, but this holds true especially for extensions.
2412
2412
2413 It should always be possible to implement an extension with IPApi
2413 It should always be possible to implement an extension with IPApi
2414 alone. If not, contact maintainer to request an addition.
2414 alone. If not, contact maintainer to request an addition.
2415
2415
2416 """
2416 """
2417 return self.api
2417 return self.api
2418
2418
2419 def handle_emacs(self,line,continue_prompt=None,
2419 def handle_emacs(self,line,continue_prompt=None,
2420 pre=None,iFun=None,theRest=None):
2420 pre=None,iFun=None,theRest=None):
2421 """Handle input lines marked by python-mode."""
2421 """Handle input lines marked by python-mode."""
2422
2422
2423 # Currently, nothing is done. Later more functionality can be added
2423 # Currently, nothing is done. Later more functionality can be added
2424 # here if needed.
2424 # here if needed.
2425
2425
2426 # The input cache shouldn't be updated
2426 # The input cache shouldn't be updated
2427
2427
2428 return line
2428 return line
2429
2429
2430 def mktempfile(self,data=None):
2430 def mktempfile(self,data=None):
2431 """Make a new tempfile and return its filename.
2431 """Make a new tempfile and return its filename.
2432
2432
2433 This makes a call to tempfile.mktemp, but it registers the created
2433 This makes a call to tempfile.mktemp, but it registers the created
2434 filename internally so ipython cleans it up at exit time.
2434 filename internally so ipython cleans it up at exit time.
2435
2435
2436 Optional inputs:
2436 Optional inputs:
2437
2437
2438 - data(None): if data is given, it gets written out to the temp file
2438 - data(None): if data is given, it gets written out to the temp file
2439 immediately, and the file is closed again."""
2439 immediately, and the file is closed again."""
2440
2440
2441 filename = tempfile.mktemp('.py','ipython_edit_')
2441 filename = tempfile.mktemp('.py','ipython_edit_')
2442 self.tempfiles.append(filename)
2442 self.tempfiles.append(filename)
2443
2443
2444 if data:
2444 if data:
2445 tmp_file = open(filename,'w')
2445 tmp_file = open(filename,'w')
2446 tmp_file.write(data)
2446 tmp_file.write(data)
2447 tmp_file.close()
2447 tmp_file.close()
2448 return filename
2448 return filename
2449
2449
2450 def write(self,data):
2450 def write(self,data):
2451 """Write a string to the default output"""
2451 """Write a string to the default output"""
2452 Term.cout.write(data)
2452 Term.cout.write(data)
2453
2453
2454 def write_err(self,data):
2454 def write_err(self,data):
2455 """Write a string to the default error output"""
2455 """Write a string to the default error output"""
2456 Term.cerr.write(data)
2456 Term.cerr.write(data)
2457
2457
2458 def exit(self):
2458 def exit(self):
2459 """Handle interactive exit.
2459 """Handle interactive exit.
2460
2460
2461 This method sets the exit_now attribute."""
2461 This method sets the exit_now attribute."""
2462
2462
2463 if self.rc.confirm_exit:
2463 if self.rc.confirm_exit:
2464 if self.ask_yes_no('Do you really want to exit ([y]/n)?','y'):
2464 if self.ask_yes_no('Do you really want to exit ([y]/n)?','y'):
2465 self.exit_now = True
2465 self.exit_now = True
2466 else:
2466 else:
2467 self.exit_now = True
2467 self.exit_now = True
2468
2468
2469 def safe_execfile(self,fname,*where,**kw):
2469 def safe_execfile(self,fname,*where,**kw):
2470 """A safe version of the builtin execfile().
2470 """A safe version of the builtin execfile().
2471
2471
2472 This version will never throw an exception, and knows how to handle
2472 This version will never throw an exception, and knows how to handle
2473 ipython logs as well."""
2473 ipython logs as well."""
2474
2474
2475 def syspath_cleanup():
2475 def syspath_cleanup():
2476 """Internal cleanup routine for sys.path."""
2476 """Internal cleanup routine for sys.path."""
2477 if add_dname:
2477 if add_dname:
2478 try:
2478 try:
2479 sys.path.remove(dname)
2479 sys.path.remove(dname)
2480 except ValueError:
2480 except ValueError:
2481 # For some reason the user has already removed it, ignore.
2481 # For some reason the user has already removed it, ignore.
2482 pass
2482 pass
2483
2483
2484 fname = os.path.expanduser(fname)
2484 fname = os.path.expanduser(fname)
2485
2485
2486 # Find things also in current directory. This is needed to mimic the
2486 # Find things also in current directory. This is needed to mimic the
2487 # behavior of running a script from the system command line, where
2487 # behavior of running a script from the system command line, where
2488 # Python inserts the script's directory into sys.path
2488 # Python inserts the script's directory into sys.path
2489 dname = os.path.dirname(os.path.abspath(fname))
2489 dname = os.path.dirname(os.path.abspath(fname))
2490 add_dname = False
2490 add_dname = False
2491 if dname not in sys.path:
2491 if dname not in sys.path:
2492 sys.path.insert(0,dname)
2492 sys.path.insert(0,dname)
2493 add_dname = True
2493 add_dname = True
2494
2494
2495 try:
2495 try:
2496 xfile = open(fname)
2496 xfile = open(fname)
2497 except:
2497 except:
2498 print >> Term.cerr, \
2498 print >> Term.cerr, \
2499 'Could not open file <%s> for safe execution.' % fname
2499 'Could not open file <%s> for safe execution.' % fname
2500 syspath_cleanup()
2500 syspath_cleanup()
2501 return None
2501 return None
2502
2502
2503 kw.setdefault('islog',0)
2503 kw.setdefault('islog',0)
2504 kw.setdefault('quiet',1)
2504 kw.setdefault('quiet',1)
2505 kw.setdefault('exit_ignore',0)
2505 kw.setdefault('exit_ignore',0)
2506 first = xfile.readline()
2506 first = xfile.readline()
2507 loghead = str(self.loghead_tpl).split('\n',1)[0].strip()
2507 loghead = str(self.loghead_tpl).split('\n',1)[0].strip()
2508 xfile.close()
2508 xfile.close()
2509 # line by line execution
2509 # line by line execution
2510 if first.startswith(loghead) or kw['islog']:
2510 if first.startswith(loghead) or kw['islog']:
2511 print 'Loading log file <%s> one line at a time...' % fname
2511 print 'Loading log file <%s> one line at a time...' % fname
2512 if kw['quiet']:
2512 if kw['quiet']:
2513 stdout_save = sys.stdout
2513 stdout_save = sys.stdout
2514 sys.stdout = StringIO.StringIO()
2514 sys.stdout = StringIO.StringIO()
2515 try:
2515 try:
2516 globs,locs = where[0:2]
2516 globs,locs = where[0:2]
2517 except:
2517 except:
2518 try:
2518 try:
2519 globs = locs = where[0]
2519 globs = locs = where[0]
2520 except:
2520 except:
2521 globs = locs = globals()
2521 globs = locs = globals()
2522 badblocks = []
2522 badblocks = []
2523
2523
2524 # we also need to identify indented blocks of code when replaying
2524 # we also need to identify indented blocks of code when replaying
2525 # logs and put them together before passing them to an exec
2525 # logs and put them together before passing them to an exec
2526 # statement. This takes a bit of regexp and look-ahead work in the
2526 # statement. This takes a bit of regexp and look-ahead work in the
2527 # file. It's easiest if we swallow the whole thing in memory
2527 # file. It's easiest if we swallow the whole thing in memory
2528 # first, and manually walk through the lines list moving the
2528 # first, and manually walk through the lines list moving the
2529 # counter ourselves.
2529 # counter ourselves.
2530 indent_re = re.compile('\s+\S')
2530 indent_re = re.compile('\s+\S')
2531 xfile = open(fname)
2531 xfile = open(fname)
2532 filelines = xfile.readlines()
2532 filelines = xfile.readlines()
2533 xfile.close()
2533 xfile.close()
2534 nlines = len(filelines)
2534 nlines = len(filelines)
2535 lnum = 0
2535 lnum = 0
2536 while lnum < nlines:
2536 while lnum < nlines:
2537 line = filelines[lnum]
2537 line = filelines[lnum]
2538 lnum += 1
2538 lnum += 1
2539 # don't re-insert logger status info into cache
2539 # don't re-insert logger status info into cache
2540 if line.startswith('#log#'):
2540 if line.startswith('#log#'):
2541 continue
2541 continue
2542 else:
2542 else:
2543 # build a block of code (maybe a single line) for execution
2543 # build a block of code (maybe a single line) for execution
2544 block = line
2544 block = line
2545 try:
2545 try:
2546 next = filelines[lnum] # lnum has already incremented
2546 next = filelines[lnum] # lnum has already incremented
2547 except:
2547 except:
2548 next = None
2548 next = None
2549 while next and indent_re.match(next):
2549 while next and indent_re.match(next):
2550 block += next
2550 block += next
2551 lnum += 1
2551 lnum += 1
2552 try:
2552 try:
2553 next = filelines[lnum]
2553 next = filelines[lnum]
2554 except:
2554 except:
2555 next = None
2555 next = None
2556 # now execute the block of one or more lines
2556 # now execute the block of one or more lines
2557 try:
2557 try:
2558 exec block in globs,locs
2558 exec block in globs,locs
2559 except SystemExit:
2559 except SystemExit:
2560 pass
2560 pass
2561 except:
2561 except:
2562 badblocks.append(block.rstrip())
2562 badblocks.append(block.rstrip())
2563 if kw['quiet']: # restore stdout
2563 if kw['quiet']: # restore stdout
2564 sys.stdout.close()
2564 sys.stdout.close()
2565 sys.stdout = stdout_save
2565 sys.stdout = stdout_save
2566 print 'Finished replaying log file <%s>' % fname
2566 print 'Finished replaying log file <%s>' % fname
2567 if badblocks:
2567 if badblocks:
2568 print >> sys.stderr, ('\nThe following lines/blocks in file '
2568 print >> sys.stderr, ('\nThe following lines/blocks in file '
2569 '<%s> reported errors:' % fname)
2569 '<%s> reported errors:' % fname)
2570
2570
2571 for badline in badblocks:
2571 for badline in badblocks:
2572 print >> sys.stderr, badline
2572 print >> sys.stderr, badline
2573 else: # regular file execution
2573 else: # regular file execution
2574 try:
2574 try:
2575 if sys.platform == 'win32':
2575 if sys.platform == 'win32':
2576 # Work around a bug in Python for Windows. The bug was
2576 # Work around a bug in Python for Windows. The bug was
2577 # fixed in in Python 2.5 r54159 and 54158, but that's still
2577 # fixed in in Python 2.5 r54159 and 54158, but that's still
2578 # SVN Python as of March/07. For details, see:
2578 # SVN Python as of March/07. For details, see:
2579 # http://projects.scipy.org/ipython/ipython/ticket/123
2579 # http://projects.scipy.org/ipython/ipython/ticket/123
2580 exec file(fname) in where[0],where[1]
2580 exec file(fname) in where[0],where[1]
2581 else:
2581 else:
2582 execfile(fname,*where)
2582 execfile(fname,*where)
2583 except SyntaxError:
2583 except SyntaxError:
2584 self.showsyntaxerror()
2584 self.showsyntaxerror()
2585 warn('Failure executing file: <%s>' % fname)
2585 warn('Failure executing file: <%s>' % fname)
2586 except SystemExit,status:
2586 except SystemExit,status:
2587 if not kw['exit_ignore']:
2587 if not kw['exit_ignore']:
2588 self.showtraceback()
2588 self.showtraceback()
2589 warn('Failure executing file: <%s>' % fname)
2589 warn('Failure executing file: <%s>' % fname)
2590 except:
2590 except:
2591 self.showtraceback()
2591 self.showtraceback()
2592 warn('Failure executing file: <%s>' % fname)
2592 warn('Failure executing file: <%s>' % fname)
2593
2593
2594 syspath_cleanup()
2594 syspath_cleanup()
2595
2595
2596 #************************* end of file <iplib.py> *****************************
2596 #************************* end of file <iplib.py> *****************************
@@ -1,6447 +1,6450 b''
1 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
1 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
2
2
3 * IPython/iplib.py (_prefilter): close #52, second part of a patch
4 set by Stefan (only the first part had been applied before).
5
3 * IPython/Extensions/ipy_stock_completers.py (module_completer):
6 * IPython/Extensions/ipy_stock_completers.py (module_completer):
4 remove usage of the dangerous pkgutil.walk_packages(). See
7 remove usage of the dangerous pkgutil.walk_packages(). See
5 details in comments left in the code.
8 details in comments left in the code.
6
9
7 * IPython/Magic.py (magic_whos): add support for numpy arrays
10 * IPython/Magic.py (magic_whos): add support for numpy arrays
8 similar to what we had for Numeric.
11 similar to what we had for Numeric.
9
12
10 * IPython/completer.py (IPCompleter.complete): extend the
13 * IPython/completer.py (IPCompleter.complete): extend the
11 complete() call API to support completions by other mechanisms
14 complete() call API to support completions by other mechanisms
12 than readline. Closes #109.
15 than readline. Closes #109.
13
16
14 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
17 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
15 protect against a bug in Python's execfile(). Closes #123.
18 protect against a bug in Python's execfile(). Closes #123.
16
19
17 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
20 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
18
21
19 * IPython/iplib.py (split_user_input): ensure that when splitting
22 * IPython/iplib.py (split_user_input): ensure that when splitting
20 user input, the part that can be treated as a python name is pure
23 user input, the part that can be treated as a python name is pure
21 ascii (Python identifiers MUST be pure ascii). Part of the
24 ascii (Python identifiers MUST be pure ascii). Part of the
22 ongoing Unicode support work.
25 ongoing Unicode support work.
23
26
24 * IPython/Prompts.py (prompt_specials_color): Add \N for the
27 * IPython/Prompts.py (prompt_specials_color): Add \N for the
25 actual prompt number, without any coloring. This allows users to
28 actual prompt number, without any coloring. This allows users to
26 produce numbered prompts with their own colors. Added after a
29 produce numbered prompts with their own colors. Added after a
27 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
30 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
28
31
29 2007-03-31 Walter Doerwald <walter@livinglogic.de>
32 2007-03-31 Walter Doerwald <walter@livinglogic.de>
30
33
31 * IPython/Extensions/igrid.py: Map the return key
34 * IPython/Extensions/igrid.py: Map the return key
32 to enter() and shift-return to enterattr().
35 to enter() and shift-return to enterattr().
33
36
34 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
37 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
35
38
36 * IPython/Magic.py (magic_psearch): add unicode support by
39 * IPython/Magic.py (magic_psearch): add unicode support by
37 encoding to ascii the input, since this routine also only deals
40 encoding to ascii the input, since this routine also only deals
38 with valid Python names. Fixes a bug reported by Stefan.
41 with valid Python names. Fixes a bug reported by Stefan.
39
42
40 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
43 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
41
44
42 * IPython/Magic.py (_inspect): convert unicode input into ascii
45 * IPython/Magic.py (_inspect): convert unicode input into ascii
43 before trying to evaluate it as a Python identifier. This fixes a
46 before trying to evaluate it as a Python identifier. This fixes a
44 problem that the new unicode support had introduced when analyzing
47 problem that the new unicode support had introduced when analyzing
45 long definition lines for functions.
48 long definition lines for functions.
46
49
47 2007-03-24 Walter Doerwald <walter@livinglogic.de>
50 2007-03-24 Walter Doerwald <walter@livinglogic.de>
48
51
49 * IPython/Extensions/igrid.py: Fix picking. Using
52 * IPython/Extensions/igrid.py: Fix picking. Using
50 igrid with wxPython 2.6 and -wthread should work now.
53 igrid with wxPython 2.6 and -wthread should work now.
51 igrid.display() simply tries to create a frame without
54 igrid.display() simply tries to create a frame without
52 an application. Only if this fails an application is created.
55 an application. Only if this fails an application is created.
53
56
54 2007-03-23 Walter Doerwald <walter@livinglogic.de>
57 2007-03-23 Walter Doerwald <walter@livinglogic.de>
55
58
56 * IPython/Extensions/path.py: Updated to version 2.2.
59 * IPython/Extensions/path.py: Updated to version 2.2.
57
60
58 2007-03-23 Ville Vainio <vivainio@gmail.com>
61 2007-03-23 Ville Vainio <vivainio@gmail.com>
59
62
60 * iplib.py: recursive alias expansion now works better, so that
63 * iplib.py: recursive alias expansion now works better, so that
61 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
64 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
62 doesn't trip up the process, if 'd' has been aliased to 'ls'.
65 doesn't trip up the process, if 'd' has been aliased to 'ls'.
63
66
64 * Extensions/ipy_gnuglobal.py added, provides %global magic
67 * Extensions/ipy_gnuglobal.py added, provides %global magic
65 for users of http://www.gnu.org/software/global
68 for users of http://www.gnu.org/software/global
66
69
67 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
70 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
68 Closes #52. Patch by Stefan van der Walt.
71 Closes #52. Patch by Stefan van der Walt.
69
72
70 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
73 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
71
74
72 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
75 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
73 respect the __file__ attribute when using %run. Thanks to a bug
76 respect the __file__ attribute when using %run. Thanks to a bug
74 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
77 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
75
78
76 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
79 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
77
80
78 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
81 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
79 input. Patch sent by Stefan.
82 input. Patch sent by Stefan.
80
83
81 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
84 2007-03-20 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
82 * IPython/Extensions/ipy_stock_completer.py
85 * IPython/Extensions/ipy_stock_completer.py
83 shlex_split, fix bug in shlex_split. len function
86 shlex_split, fix bug in shlex_split. len function
84 call was missing an if statement. Caused shlex_split to
87 call was missing an if statement. Caused shlex_split to
85 sometimes return "" as last element.
88 sometimes return "" as last element.
86
89
87 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
90 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
88
91
89 * IPython/completer.py
92 * IPython/completer.py
90 (IPCompleter.file_matches.single_dir_expand): fix a problem
93 (IPCompleter.file_matches.single_dir_expand): fix a problem
91 reported by Stefan, where directories containign a single subdir
94 reported by Stefan, where directories containign a single subdir
92 would be completed too early.
95 would be completed too early.
93
96
94 * IPython/Shell.py (_load_pylab): Make the execution of 'from
97 * IPython/Shell.py (_load_pylab): Make the execution of 'from
95 pylab import *' when -pylab is given be optional. A new flag,
98 pylab import *' when -pylab is given be optional. A new flag,
96 pylab_import_all controls this behavior, the default is True for
99 pylab_import_all controls this behavior, the default is True for
97 backwards compatibility.
100 backwards compatibility.
98
101
99 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
102 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
100 modified) R. Bernstein's patch for fully syntax highlighted
103 modified) R. Bernstein's patch for fully syntax highlighted
101 tracebacks. The functionality is also available under ultraTB for
104 tracebacks. The functionality is also available under ultraTB for
102 non-ipython users (someone using ultraTB but outside an ipython
105 non-ipython users (someone using ultraTB but outside an ipython
103 session). They can select the color scheme by setting the
106 session). They can select the color scheme by setting the
104 module-level global DEFAULT_SCHEME. The highlight functionality
107 module-level global DEFAULT_SCHEME. The highlight functionality
105 also works when debugging.
108 also works when debugging.
106
109
107 * IPython/genutils.py (IOStream.close): small patch by
110 * IPython/genutils.py (IOStream.close): small patch by
108 R. Bernstein for improved pydb support.
111 R. Bernstein for improved pydb support.
109
112
110 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
113 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
111 DaveS <davls@telus.net> to improve support of debugging under
114 DaveS <davls@telus.net> to improve support of debugging under
112 NTEmacs, including improved pydb behavior.
115 NTEmacs, including improved pydb behavior.
113
116
114 * IPython/Magic.py (magic_prun): Fix saving of profile info for
117 * IPython/Magic.py (magic_prun): Fix saving of profile info for
115 Python 2.5, where the stats object API changed a little. Thanks
118 Python 2.5, where the stats object API changed a little. Thanks
116 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
119 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
117
120
118 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
121 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
119 Pernetty's patch to improve support for (X)Emacs under Win32.
122 Pernetty's patch to improve support for (X)Emacs under Win32.
120
123
121 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
124 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
122
125
123 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
126 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
124 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
127 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
125 a report by Nik Tautenhahn.
128 a report by Nik Tautenhahn.
126
129
127 2007-03-16 Walter Doerwald <walter@livinglogic.de>
130 2007-03-16 Walter Doerwald <walter@livinglogic.de>
128
131
129 * setup.py: Add the igrid help files to the list of data files
132 * setup.py: Add the igrid help files to the list of data files
130 to be installed alongside igrid.
133 to be installed alongside igrid.
131 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
134 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
132 Show the input object of the igrid browser as the window tile.
135 Show the input object of the igrid browser as the window tile.
133 Show the object the cursor is on in the statusbar.
136 Show the object the cursor is on in the statusbar.
134
137
135 2007-03-15 Ville Vainio <vivainio@gmail.com>
138 2007-03-15 Ville Vainio <vivainio@gmail.com>
136
139
137 * Extensions/ipy_stock_completers.py: Fixed exception
140 * Extensions/ipy_stock_completers.py: Fixed exception
138 on mismatching quotes in %run completer. Patch by
141 on mismatching quotes in %run completer. Patch by
139 JοΏ½rgen Stenarson. Closes #127.
142 JοΏ½rgen Stenarson. Closes #127.
140
143
141 2007-03-14 Ville Vainio <vivainio@gmail.com>
144 2007-03-14 Ville Vainio <vivainio@gmail.com>
142
145
143 * Extensions/ext_rehashdir.py: Do not do auto_alias
146 * Extensions/ext_rehashdir.py: Do not do auto_alias
144 in %rehashdir, it clobbers %store'd aliases.
147 in %rehashdir, it clobbers %store'd aliases.
145
148
146 * UserConfig/ipy_profile_sh.py: envpersist.py extension
149 * UserConfig/ipy_profile_sh.py: envpersist.py extension
147 (beefed up %env) imported for sh profile.
150 (beefed up %env) imported for sh profile.
148
151
149 2007-03-10 Walter Doerwald <walter@livinglogic.de>
152 2007-03-10 Walter Doerwald <walter@livinglogic.de>
150
153
151 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
154 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
152 as the default browser.
155 as the default browser.
153 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
156 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
154 As igrid displays all attributes it ever encounters, fetch() (which has
157 As igrid displays all attributes it ever encounters, fetch() (which has
155 been renamed to _fetch()) doesn't have to recalculate the display attributes
158 been renamed to _fetch()) doesn't have to recalculate the display attributes
156 every time a new item is fetched. This should speed up scrolling.
159 every time a new item is fetched. This should speed up scrolling.
157
160
158 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
161 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
159
162
160 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
163 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
161 Schmolck's recently reported tab-completion bug (my previous one
164 Schmolck's recently reported tab-completion bug (my previous one
162 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
165 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
163
166
164 2007-03-09 Walter Doerwald <walter@livinglogic.de>
167 2007-03-09 Walter Doerwald <walter@livinglogic.de>
165
168
166 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
169 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
167 Close help window if exiting igrid.
170 Close help window if exiting igrid.
168
171
169 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
172 2007-03-02 JοΏ½rgen Stenarson <jorgen.stenarson@bostream.nu>
170
173
171 * IPython/Extensions/ipy_defaults.py: Check if readline is available
174 * IPython/Extensions/ipy_defaults.py: Check if readline is available
172 before calling functions from readline.
175 before calling functions from readline.
173
176
174 2007-03-02 Walter Doerwald <walter@livinglogic.de>
177 2007-03-02 Walter Doerwald <walter@livinglogic.de>
175
178
176 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
179 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
177 igrid is a wxPython-based display object for ipipe. If your system has
180 igrid is a wxPython-based display object for ipipe. If your system has
178 wx installed igrid will be the default display. Without wx ipipe falls
181 wx installed igrid will be the default display. Without wx ipipe falls
179 back to ibrowse (which needs curses). If no curses is installed ipipe
182 back to ibrowse (which needs curses). If no curses is installed ipipe
180 falls back to idump.
183 falls back to idump.
181
184
182 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
185 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
183
186
184 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
187 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
185 my changes from yesterday, they introduced bugs. Will reactivate
188 my changes from yesterday, they introduced bugs. Will reactivate
186 once I get a correct solution, which will be much easier thanks to
189 once I get a correct solution, which will be much easier thanks to
187 Dan Milstein's new prefilter test suite.
190 Dan Milstein's new prefilter test suite.
188
191
189 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
192 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
190
193
191 * IPython/iplib.py (split_user_input): fix input splitting so we
194 * IPython/iplib.py (split_user_input): fix input splitting so we
192 don't attempt attribute accesses on things that can't possibly be
195 don't attempt attribute accesses on things that can't possibly be
193 valid Python attributes. After a bug report by Alex Schmolck.
196 valid Python attributes. After a bug report by Alex Schmolck.
194 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
197 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
195 %magic with explicit % prefix.
198 %magic with explicit % prefix.
196
199
197 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
200 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
198
201
199 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
202 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
200 avoid a DeprecationWarning from GTK.
203 avoid a DeprecationWarning from GTK.
201
204
202 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
205 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
203
206
204 * IPython/genutils.py (clock): I modified clock() to return total
207 * IPython/genutils.py (clock): I modified clock() to return total
205 time, user+system. This is a more commonly needed metric. I also
208 time, user+system. This is a more commonly needed metric. I also
206 introduced the new clocku/clocks to get only user/system time if
209 introduced the new clocku/clocks to get only user/system time if
207 one wants those instead.
210 one wants those instead.
208
211
209 ***WARNING: API CHANGE*** clock() used to return only user time,
212 ***WARNING: API CHANGE*** clock() used to return only user time,
210 so if you want exactly the same results as before, use clocku
213 so if you want exactly the same results as before, use clocku
211 instead.
214 instead.
212
215
213 2007-02-22 Ville Vainio <vivainio@gmail.com>
216 2007-02-22 Ville Vainio <vivainio@gmail.com>
214
217
215 * IPython/Extensions/ipy_p4.py: Extension for improved
218 * IPython/Extensions/ipy_p4.py: Extension for improved
216 p4 (perforce version control system) experience.
219 p4 (perforce version control system) experience.
217 Adds %p4 magic with p4 command completion and
220 Adds %p4 magic with p4 command completion and
218 automatic -G argument (marshall output as python dict)
221 automatic -G argument (marshall output as python dict)
219
222
220 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
223 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
221
224
222 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
225 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
223 stop marks.
226 stop marks.
224 (ClearingMixin): a simple mixin to easily make a Demo class clear
227 (ClearingMixin): a simple mixin to easily make a Demo class clear
225 the screen in between blocks and have empty marquees. The
228 the screen in between blocks and have empty marquees. The
226 ClearDemo and ClearIPDemo classes that use it are included.
229 ClearDemo and ClearIPDemo classes that use it are included.
227
230
228 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
231 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
229
232
230 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
233 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
231 protect against exceptions at Python shutdown time. Patch
234 protect against exceptions at Python shutdown time. Patch
232 sumbmitted to upstream.
235 sumbmitted to upstream.
233
236
234 2007-02-14 Walter Doerwald <walter@livinglogic.de>
237 2007-02-14 Walter Doerwald <walter@livinglogic.de>
235
238
236 * IPython/Extensions/ibrowse.py: If entering the first object level
239 * IPython/Extensions/ibrowse.py: If entering the first object level
237 (i.e. the object for which the browser has been started) fails,
240 (i.e. the object for which the browser has been started) fails,
238 now the error is raised directly (aborting the browser) instead of
241 now the error is raised directly (aborting the browser) instead of
239 running into an empty levels list later.
242 running into an empty levels list later.
240
243
241 2007-02-03 Walter Doerwald <walter@livinglogic.de>
244 2007-02-03 Walter Doerwald <walter@livinglogic.de>
242
245
243 * IPython/Extensions/ipipe.py: Add an xrepr implementation
246 * IPython/Extensions/ipipe.py: Add an xrepr implementation
244 for the noitem object.
247 for the noitem object.
245
248
246 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
249 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
247
250
248 * IPython/completer.py (Completer.attr_matches): Fix small
251 * IPython/completer.py (Completer.attr_matches): Fix small
249 tab-completion bug with Enthought Traits objects with units.
252 tab-completion bug with Enthought Traits objects with units.
250 Thanks to a bug report by Tom Denniston
253 Thanks to a bug report by Tom Denniston
251 <tom.denniston-AT-alum.dartmouth.org>.
254 <tom.denniston-AT-alum.dartmouth.org>.
252
255
253 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
256 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
254
257
255 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
258 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
256 bug where only .ipy or .py would be completed. Once the first
259 bug where only .ipy or .py would be completed. Once the first
257 argument to %run has been given, all completions are valid because
260 argument to %run has been given, all completions are valid because
258 they are the arguments to the script, which may well be non-python
261 they are the arguments to the script, which may well be non-python
259 filenames.
262 filenames.
260
263
261 * IPython/irunner.py (InteractiveRunner.run_source): major updates
264 * IPython/irunner.py (InteractiveRunner.run_source): major updates
262 to irunner to allow it to correctly support real doctesting of
265 to irunner to allow it to correctly support real doctesting of
263 out-of-process ipython code.
266 out-of-process ipython code.
264
267
265 * IPython/Magic.py (magic_cd): Make the setting of the terminal
268 * IPython/Magic.py (magic_cd): Make the setting of the terminal
266 title an option (-noterm_title) because it completely breaks
269 title an option (-noterm_title) because it completely breaks
267 doctesting.
270 doctesting.
268
271
269 * IPython/demo.py: fix IPythonDemo class that was not actually working.
272 * IPython/demo.py: fix IPythonDemo class that was not actually working.
270
273
271 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
274 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
272
275
273 * IPython/irunner.py (main): fix small bug where extensions were
276 * IPython/irunner.py (main): fix small bug where extensions were
274 not being correctly recognized.
277 not being correctly recognized.
275
278
276 2007-01-23 Walter Doerwald <walter@livinglogic.de>
279 2007-01-23 Walter Doerwald <walter@livinglogic.de>
277
280
278 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
281 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
279 a string containing a single line yields the string itself as the
282 a string containing a single line yields the string itself as the
280 only item.
283 only item.
281
284
282 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
285 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
283 object if it's the same as the one on the last level (This avoids
286 object if it's the same as the one on the last level (This avoids
284 infinite recursion for one line strings).
287 infinite recursion for one line strings).
285
288
286 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
289 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
287
290
288 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
291 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
289 all output streams before printing tracebacks. This ensures that
292 all output streams before printing tracebacks. This ensures that
290 user output doesn't end up interleaved with traceback output.
293 user output doesn't end up interleaved with traceback output.
291
294
292 2007-01-10 Ville Vainio <vivainio@gmail.com>
295 2007-01-10 Ville Vainio <vivainio@gmail.com>
293
296
294 * Extensions/envpersist.py: Turbocharged %env that remembers
297 * Extensions/envpersist.py: Turbocharged %env that remembers
295 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
298 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
296 "%env VISUAL=jed".
299 "%env VISUAL=jed".
297
300
298 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
301 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
299
302
300 * IPython/iplib.py (showtraceback): ensure that we correctly call
303 * IPython/iplib.py (showtraceback): ensure that we correctly call
301 custom handlers in all cases (some with pdb were slipping through,
304 custom handlers in all cases (some with pdb were slipping through,
302 but I'm not exactly sure why).
305 but I'm not exactly sure why).
303
306
304 * IPython/Debugger.py (Tracer.__init__): added new class to
307 * IPython/Debugger.py (Tracer.__init__): added new class to
305 support set_trace-like usage of IPython's enhanced debugger.
308 support set_trace-like usage of IPython's enhanced debugger.
306
309
307 2006-12-24 Ville Vainio <vivainio@gmail.com>
310 2006-12-24 Ville Vainio <vivainio@gmail.com>
308
311
309 * ipmaker.py: more informative message when ipy_user_conf
312 * ipmaker.py: more informative message when ipy_user_conf
310 import fails (suggest running %upgrade).
313 import fails (suggest running %upgrade).
311
314
312 * tools/run_ipy_in_profiler.py: Utility to see where
315 * tools/run_ipy_in_profiler.py: Utility to see where
313 the time during IPython startup is spent.
316 the time during IPython startup is spent.
314
317
315 2006-12-20 Ville Vainio <vivainio@gmail.com>
318 2006-12-20 Ville Vainio <vivainio@gmail.com>
316
319
317 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
320 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
318
321
319 * ipapi.py: Add new ipapi method, expand_alias.
322 * ipapi.py: Add new ipapi method, expand_alias.
320
323
321 * Release.py: Bump up version to 0.7.4.svn
324 * Release.py: Bump up version to 0.7.4.svn
322
325
323 2006-12-17 Ville Vainio <vivainio@gmail.com>
326 2006-12-17 Ville Vainio <vivainio@gmail.com>
324
327
325 * Extensions/jobctrl.py: Fixed &cmd arg arg...
328 * Extensions/jobctrl.py: Fixed &cmd arg arg...
326 to work properly on posix too
329 to work properly on posix too
327
330
328 * Release.py: Update revnum (version is still just 0.7.3).
331 * Release.py: Update revnum (version is still just 0.7.3).
329
332
330 2006-12-15 Ville Vainio <vivainio@gmail.com>
333 2006-12-15 Ville Vainio <vivainio@gmail.com>
331
334
332 * scripts/ipython_win_post_install: create ipython.py in
335 * scripts/ipython_win_post_install: create ipython.py in
333 prefix + "/scripts".
336 prefix + "/scripts".
334
337
335 * Release.py: Update version to 0.7.3.
338 * Release.py: Update version to 0.7.3.
336
339
337 2006-12-14 Ville Vainio <vivainio@gmail.com>
340 2006-12-14 Ville Vainio <vivainio@gmail.com>
338
341
339 * scripts/ipython_win_post_install: Overwrite old shortcuts
342 * scripts/ipython_win_post_install: Overwrite old shortcuts
340 if they already exist
343 if they already exist
341
344
342 * Release.py: release 0.7.3rc2
345 * Release.py: release 0.7.3rc2
343
346
344 2006-12-13 Ville Vainio <vivainio@gmail.com>
347 2006-12-13 Ville Vainio <vivainio@gmail.com>
345
348
346 * Branch and update Release.py for 0.7.3rc1
349 * Branch and update Release.py for 0.7.3rc1
347
350
348 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
351 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
349
352
350 * IPython/Shell.py (IPShellWX): update for current WX naming
353 * IPython/Shell.py (IPShellWX): update for current WX naming
351 conventions, to avoid a deprecation warning with current WX
354 conventions, to avoid a deprecation warning with current WX
352 versions. Thanks to a report by Danny Shevitz.
355 versions. Thanks to a report by Danny Shevitz.
353
356
354 2006-12-12 Ville Vainio <vivainio@gmail.com>
357 2006-12-12 Ville Vainio <vivainio@gmail.com>
355
358
356 * ipmaker.py: apply david cournapeau's patch to make
359 * ipmaker.py: apply david cournapeau's patch to make
357 import_some work properly even when ipythonrc does
360 import_some work properly even when ipythonrc does
358 import_some on empty list (it was an old bug!).
361 import_some on empty list (it was an old bug!).
359
362
360 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
363 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
361 Add deprecation note to ipythonrc and a url to wiki
364 Add deprecation note to ipythonrc and a url to wiki
362 in ipy_user_conf.py
365 in ipy_user_conf.py
363
366
364
367
365 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
368 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
366 as if it was typed on IPython command prompt, i.e.
369 as if it was typed on IPython command prompt, i.e.
367 as IPython script.
370 as IPython script.
368
371
369 * example-magic.py, magic_grepl.py: remove outdated examples
372 * example-magic.py, magic_grepl.py: remove outdated examples
370
373
371 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
374 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
372
375
373 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
376 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
374 is called before any exception has occurred.
377 is called before any exception has occurred.
375
378
376 2006-12-08 Ville Vainio <vivainio@gmail.com>
379 2006-12-08 Ville Vainio <vivainio@gmail.com>
377
380
378 * Extensions/ipy_stock_completers.py: fix cd completer
381 * Extensions/ipy_stock_completers.py: fix cd completer
379 to translate /'s to \'s again.
382 to translate /'s to \'s again.
380
383
381 * completer.py: prevent traceback on file completions w/
384 * completer.py: prevent traceback on file completions w/
382 backslash.
385 backslash.
383
386
384 * Release.py: Update release number to 0.7.3b3 for release
387 * Release.py: Update release number to 0.7.3b3 for release
385
388
386 2006-12-07 Ville Vainio <vivainio@gmail.com>
389 2006-12-07 Ville Vainio <vivainio@gmail.com>
387
390
388 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
391 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
389 while executing external code. Provides more shell-like behaviour
392 while executing external code. Provides more shell-like behaviour
390 and overall better response to ctrl + C / ctrl + break.
393 and overall better response to ctrl + C / ctrl + break.
391
394
392 * tools/make_tarball.py: new script to create tarball straight from svn
395 * tools/make_tarball.py: new script to create tarball straight from svn
393 (setup.py sdist doesn't work on win32).
396 (setup.py sdist doesn't work on win32).
394
397
395 * Extensions/ipy_stock_completers.py: fix cd completer to give up
398 * Extensions/ipy_stock_completers.py: fix cd completer to give up
396 on dirnames with spaces and use the default completer instead.
399 on dirnames with spaces and use the default completer instead.
397
400
398 * Revision.py: Change version to 0.7.3b2 for release.
401 * Revision.py: Change version to 0.7.3b2 for release.
399
402
400 2006-12-05 Ville Vainio <vivainio@gmail.com>
403 2006-12-05 Ville Vainio <vivainio@gmail.com>
401
404
402 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
405 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
403 pydb patch 4 (rm debug printing, py 2.5 checking)
406 pydb patch 4 (rm debug printing, py 2.5 checking)
404
407
405 2006-11-30 Walter Doerwald <walter@livinglogic.de>
408 2006-11-30 Walter Doerwald <walter@livinglogic.de>
406 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
409 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
407 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
410 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
408 "refreshfind" (mapped to "R") does the same but tries to go back to the same
411 "refreshfind" (mapped to "R") does the same but tries to go back to the same
409 object the cursor was on before the refresh. The command "markrange" is
412 object the cursor was on before the refresh. The command "markrange" is
410 mapped to "%" now.
413 mapped to "%" now.
411 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
414 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
412
415
413 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
416 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
414
417
415 * IPython/Magic.py (magic_debug): new %debug magic to activate the
418 * IPython/Magic.py (magic_debug): new %debug magic to activate the
416 interactive debugger on the last traceback, without having to call
419 interactive debugger on the last traceback, without having to call
417 %pdb and rerun your code. Made minor changes in various modules,
420 %pdb and rerun your code. Made minor changes in various modules,
418 should automatically recognize pydb if available.
421 should automatically recognize pydb if available.
419
422
420 2006-11-28 Ville Vainio <vivainio@gmail.com>
423 2006-11-28 Ville Vainio <vivainio@gmail.com>
421
424
422 * completer.py: If the text start with !, show file completions
425 * completer.py: If the text start with !, show file completions
423 properly. This helps when trying to complete command name
426 properly. This helps when trying to complete command name
424 for shell escapes.
427 for shell escapes.
425
428
426 2006-11-27 Ville Vainio <vivainio@gmail.com>
429 2006-11-27 Ville Vainio <vivainio@gmail.com>
427
430
428 * ipy_stock_completers.py: bzr completer submitted by Stefan van
431 * ipy_stock_completers.py: bzr completer submitted by Stefan van
429 der Walt. Clean up svn and hg completers by using a common
432 der Walt. Clean up svn and hg completers by using a common
430 vcs_completer.
433 vcs_completer.
431
434
432 2006-11-26 Ville Vainio <vivainio@gmail.com>
435 2006-11-26 Ville Vainio <vivainio@gmail.com>
433
436
434 * Remove ipconfig and %config; you should use _ip.options structure
437 * Remove ipconfig and %config; you should use _ip.options structure
435 directly instead!
438 directly instead!
436
439
437 * genutils.py: add wrap_deprecated function for deprecating callables
440 * genutils.py: add wrap_deprecated function for deprecating callables
438
441
439 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
442 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
440 _ip.system instead. ipalias is redundant.
443 _ip.system instead. ipalias is redundant.
441
444
442 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
445 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
443 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
446 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
444 explicit.
447 explicit.
445
448
446 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
449 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
447 completer. Try it by entering 'hg ' and pressing tab.
450 completer. Try it by entering 'hg ' and pressing tab.
448
451
449 * macro.py: Give Macro a useful __repr__ method
452 * macro.py: Give Macro a useful __repr__ method
450
453
451 * Magic.py: %whos abbreviates the typename of Macro for brevity.
454 * Magic.py: %whos abbreviates the typename of Macro for brevity.
452
455
453 2006-11-24 Walter Doerwald <walter@livinglogic.de>
456 2006-11-24 Walter Doerwald <walter@livinglogic.de>
454 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
457 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
455 we don't get a duplicate ipipe module, where registration of the xrepr
458 we don't get a duplicate ipipe module, where registration of the xrepr
456 implementation for Text is useless.
459 implementation for Text is useless.
457
460
458 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
461 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
459
462
460 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
463 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
461
464
462 2006-11-24 Ville Vainio <vivainio@gmail.com>
465 2006-11-24 Ville Vainio <vivainio@gmail.com>
463
466
464 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
467 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
465 try to use "cProfile" instead of the slower pure python
468 try to use "cProfile" instead of the slower pure python
466 "profile"
469 "profile"
467
470
468 2006-11-23 Ville Vainio <vivainio@gmail.com>
471 2006-11-23 Ville Vainio <vivainio@gmail.com>
469
472
470 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
473 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
471 Qt+IPython+Designer link in documentation.
474 Qt+IPython+Designer link in documentation.
472
475
473 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
476 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
474 correct Pdb object to %pydb.
477 correct Pdb object to %pydb.
475
478
476
479
477 2006-11-22 Walter Doerwald <walter@livinglogic.de>
480 2006-11-22 Walter Doerwald <walter@livinglogic.de>
478 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
481 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
479 generic xrepr(), otherwise the list implementation would kick in.
482 generic xrepr(), otherwise the list implementation would kick in.
480
483
481 2006-11-21 Ville Vainio <vivainio@gmail.com>
484 2006-11-21 Ville Vainio <vivainio@gmail.com>
482
485
483 * upgrade_dir.py: Now actually overwrites a nonmodified user file
486 * upgrade_dir.py: Now actually overwrites a nonmodified user file
484 with one from UserConfig.
487 with one from UserConfig.
485
488
486 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
489 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
487 it was missing which broke the sh profile.
490 it was missing which broke the sh profile.
488
491
489 * completer.py: file completer now uses explicit '/' instead
492 * completer.py: file completer now uses explicit '/' instead
490 of os.path.join, expansion of 'foo' was broken on win32
493 of os.path.join, expansion of 'foo' was broken on win32
491 if there was one directory with name 'foobar'.
494 if there was one directory with name 'foobar'.
492
495
493 * A bunch of patches from Kirill Smelkov:
496 * A bunch of patches from Kirill Smelkov:
494
497
495 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
498 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
496
499
497 * [patch 7/9] Implement %page -r (page in raw mode) -
500 * [patch 7/9] Implement %page -r (page in raw mode) -
498
501
499 * [patch 5/9] ScientificPython webpage has moved
502 * [patch 5/9] ScientificPython webpage has moved
500
503
501 * [patch 4/9] The manual mentions %ds, should be %dhist
504 * [patch 4/9] The manual mentions %ds, should be %dhist
502
505
503 * [patch 3/9] Kill old bits from %prun doc.
506 * [patch 3/9] Kill old bits from %prun doc.
504
507
505 * [patch 1/9] Fix typos here and there.
508 * [patch 1/9] Fix typos here and there.
506
509
507 2006-11-08 Ville Vainio <vivainio@gmail.com>
510 2006-11-08 Ville Vainio <vivainio@gmail.com>
508
511
509 * completer.py (attr_matches): catch all exceptions raised
512 * completer.py (attr_matches): catch all exceptions raised
510 by eval of expr with dots.
513 by eval of expr with dots.
511
514
512 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
515 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
513
516
514 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
517 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
515 input if it starts with whitespace. This allows you to paste
518 input if it starts with whitespace. This allows you to paste
516 indented input from any editor without manually having to type in
519 indented input from any editor without manually having to type in
517 the 'if 1:', which is convenient when working interactively.
520 the 'if 1:', which is convenient when working interactively.
518 Slightly modifed version of a patch by Bo Peng
521 Slightly modifed version of a patch by Bo Peng
519 <bpeng-AT-rice.edu>.
522 <bpeng-AT-rice.edu>.
520
523
521 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
524 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
522
525
523 * IPython/irunner.py (main): modified irunner so it automatically
526 * IPython/irunner.py (main): modified irunner so it automatically
524 recognizes the right runner to use based on the extension (.py for
527 recognizes the right runner to use based on the extension (.py for
525 python, .ipy for ipython and .sage for sage).
528 python, .ipy for ipython and .sage for sage).
526
529
527 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
530 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
528 visible in ipapi as ip.config(), to programatically control the
531 visible in ipapi as ip.config(), to programatically control the
529 internal rc object. There's an accompanying %config magic for
532 internal rc object. There's an accompanying %config magic for
530 interactive use, which has been enhanced to match the
533 interactive use, which has been enhanced to match the
531 funtionality in ipconfig.
534 funtionality in ipconfig.
532
535
533 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
536 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
534 so it's not just a toggle, it now takes an argument. Add support
537 so it's not just a toggle, it now takes an argument. Add support
535 for a customizable header when making system calls, as the new
538 for a customizable header when making system calls, as the new
536 system_header variable in the ipythonrc file.
539 system_header variable in the ipythonrc file.
537
540
538 2006-11-03 Walter Doerwald <walter@livinglogic.de>
541 2006-11-03 Walter Doerwald <walter@livinglogic.de>
539
542
540 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
543 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
541 generic functions (using Philip J. Eby's simplegeneric package).
544 generic functions (using Philip J. Eby's simplegeneric package).
542 This makes it possible to customize the display of third-party classes
545 This makes it possible to customize the display of third-party classes
543 without having to monkeypatch them. xiter() no longer supports a mode
546 without having to monkeypatch them. xiter() no longer supports a mode
544 argument and the XMode class has been removed. The same functionality can
547 argument and the XMode class has been removed. The same functionality can
545 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
548 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
546 One consequence of the switch to generic functions is that xrepr() and
549 One consequence of the switch to generic functions is that xrepr() and
547 xattrs() implementation must define the default value for the mode
550 xattrs() implementation must define the default value for the mode
548 argument themselves and xattrs() implementations must return real
551 argument themselves and xattrs() implementations must return real
549 descriptors.
552 descriptors.
550
553
551 * IPython/external: This new subpackage will contain all third-party
554 * IPython/external: This new subpackage will contain all third-party
552 packages that are bundled with IPython. (The first one is simplegeneric).
555 packages that are bundled with IPython. (The first one is simplegeneric).
553
556
554 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
557 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
555 directory which as been dropped in r1703.
558 directory which as been dropped in r1703.
556
559
557 * IPython/Extensions/ipipe.py (iless): Fixed.
560 * IPython/Extensions/ipipe.py (iless): Fixed.
558
561
559 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
562 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
560
563
561 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
564 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
562
565
563 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
566 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
564 handling in variable expansion so that shells and magics recognize
567 handling in variable expansion so that shells and magics recognize
565 function local scopes correctly. Bug reported by Brian.
568 function local scopes correctly. Bug reported by Brian.
566
569
567 * scripts/ipython: remove the very first entry in sys.path which
570 * scripts/ipython: remove the very first entry in sys.path which
568 Python auto-inserts for scripts, so that sys.path under IPython is
571 Python auto-inserts for scripts, so that sys.path under IPython is
569 as similar as possible to that under plain Python.
572 as similar as possible to that under plain Python.
570
573
571 * IPython/completer.py (IPCompleter.file_matches): Fix
574 * IPython/completer.py (IPCompleter.file_matches): Fix
572 tab-completion so that quotes are not closed unless the completion
575 tab-completion so that quotes are not closed unless the completion
573 is unambiguous. After a request by Stefan. Minor cleanups in
576 is unambiguous. After a request by Stefan. Minor cleanups in
574 ipy_stock_completers.
577 ipy_stock_completers.
575
578
576 2006-11-02 Ville Vainio <vivainio@gmail.com>
579 2006-11-02 Ville Vainio <vivainio@gmail.com>
577
580
578 * ipy_stock_completers.py: Add %run and %cd completers.
581 * ipy_stock_completers.py: Add %run and %cd completers.
579
582
580 * completer.py: Try running custom completer for both
583 * completer.py: Try running custom completer for both
581 "foo" and "%foo" if the command is just "foo". Ignore case
584 "foo" and "%foo" if the command is just "foo". Ignore case
582 when filtering possible completions.
585 when filtering possible completions.
583
586
584 * UserConfig/ipy_user_conf.py: install stock completers as default
587 * UserConfig/ipy_user_conf.py: install stock completers as default
585
588
586 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
589 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
587 simplified readline history save / restore through a wrapper
590 simplified readline history save / restore through a wrapper
588 function
591 function
589
592
590
593
591 2006-10-31 Ville Vainio <vivainio@gmail.com>
594 2006-10-31 Ville Vainio <vivainio@gmail.com>
592
595
593 * strdispatch.py, completer.py, ipy_stock_completers.py:
596 * strdispatch.py, completer.py, ipy_stock_completers.py:
594 Allow str_key ("command") in completer hooks. Implement
597 Allow str_key ("command") in completer hooks. Implement
595 trivial completer for 'import' (stdlib modules only). Rename
598 trivial completer for 'import' (stdlib modules only). Rename
596 ipy_linux_package_managers.py to ipy_stock_completers.py.
599 ipy_linux_package_managers.py to ipy_stock_completers.py.
597 SVN completer.
600 SVN completer.
598
601
599 * Extensions/ledit.py: %magic line editor for easily and
602 * Extensions/ledit.py: %magic line editor for easily and
600 incrementally manipulating lists of strings. The magic command
603 incrementally manipulating lists of strings. The magic command
601 name is %led.
604 name is %led.
602
605
603 2006-10-30 Ville Vainio <vivainio@gmail.com>
606 2006-10-30 Ville Vainio <vivainio@gmail.com>
604
607
605 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
608 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
606 Bernsteins's patches for pydb integration.
609 Bernsteins's patches for pydb integration.
607 http://bashdb.sourceforge.net/pydb/
610 http://bashdb.sourceforge.net/pydb/
608
611
609 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
612 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
610 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
613 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
611 custom completer hook to allow the users to implement their own
614 custom completer hook to allow the users to implement their own
612 completers. See ipy_linux_package_managers.py for example. The
615 completers. See ipy_linux_package_managers.py for example. The
613 hook name is 'complete_command'.
616 hook name is 'complete_command'.
614
617
615 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
618 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
616
619
617 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
620 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
618 Numeric leftovers.
621 Numeric leftovers.
619
622
620 * ipython.el (py-execute-region): apply Stefan's patch to fix
623 * ipython.el (py-execute-region): apply Stefan's patch to fix
621 garbled results if the python shell hasn't been previously started.
624 garbled results if the python shell hasn't been previously started.
622
625
623 * IPython/genutils.py (arg_split): moved to genutils, since it's a
626 * IPython/genutils.py (arg_split): moved to genutils, since it's a
624 pretty generic function and useful for other things.
627 pretty generic function and useful for other things.
625
628
626 * IPython/OInspect.py (getsource): Add customizable source
629 * IPython/OInspect.py (getsource): Add customizable source
627 extractor. After a request/patch form W. Stein (SAGE).
630 extractor. After a request/patch form W. Stein (SAGE).
628
631
629 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
632 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
630 window size to a more reasonable value from what pexpect does,
633 window size to a more reasonable value from what pexpect does,
631 since their choice causes wrapping bugs with long input lines.
634 since their choice causes wrapping bugs with long input lines.
632
635
633 2006-10-28 Ville Vainio <vivainio@gmail.com>
636 2006-10-28 Ville Vainio <vivainio@gmail.com>
634
637
635 * Magic.py (%run): Save and restore the readline history from
638 * Magic.py (%run): Save and restore the readline history from
636 file around %run commands to prevent side effects from
639 file around %run commands to prevent side effects from
637 %runned programs that might use readline (e.g. pydb).
640 %runned programs that might use readline (e.g. pydb).
638
641
639 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
642 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
640 invoking the pydb enhanced debugger.
643 invoking the pydb enhanced debugger.
641
644
642 2006-10-23 Walter Doerwald <walter@livinglogic.de>
645 2006-10-23 Walter Doerwald <walter@livinglogic.de>
643
646
644 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
647 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
645 call the base class method and propagate the return value to
648 call the base class method and propagate the return value to
646 ifile. This is now done by path itself.
649 ifile. This is now done by path itself.
647
650
648 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
651 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
649
652
650 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
653 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
651 api: set_crash_handler(), to expose the ability to change the
654 api: set_crash_handler(), to expose the ability to change the
652 internal crash handler.
655 internal crash handler.
653
656
654 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
657 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
655 the various parameters of the crash handler so that apps using
658 the various parameters of the crash handler so that apps using
656 IPython as their engine can customize crash handling. Ipmlemented
659 IPython as their engine can customize crash handling. Ipmlemented
657 at the request of SAGE.
660 at the request of SAGE.
658
661
659 2006-10-14 Ville Vainio <vivainio@gmail.com>
662 2006-10-14 Ville Vainio <vivainio@gmail.com>
660
663
661 * Magic.py, ipython.el: applied first "safe" part of Rocky
664 * Magic.py, ipython.el: applied first "safe" part of Rocky
662 Bernstein's patch set for pydb integration.
665 Bernstein's patch set for pydb integration.
663
666
664 * Magic.py (%unalias, %alias): %store'd aliases can now be
667 * Magic.py (%unalias, %alias): %store'd aliases can now be
665 removed with '%unalias'. %alias w/o args now shows most
668 removed with '%unalias'. %alias w/o args now shows most
666 interesting (stored / manually defined) aliases last
669 interesting (stored / manually defined) aliases last
667 where they catch the eye w/o scrolling.
670 where they catch the eye w/o scrolling.
668
671
669 * Magic.py (%rehashx), ext_rehashdir.py: files with
672 * Magic.py (%rehashx), ext_rehashdir.py: files with
670 'py' extension are always considered executable, even
673 'py' extension are always considered executable, even
671 when not in PATHEXT environment variable.
674 when not in PATHEXT environment variable.
672
675
673 2006-10-12 Ville Vainio <vivainio@gmail.com>
676 2006-10-12 Ville Vainio <vivainio@gmail.com>
674
677
675 * jobctrl.py: Add new "jobctrl" extension for spawning background
678 * jobctrl.py: Add new "jobctrl" extension for spawning background
676 processes with "&find /". 'import jobctrl' to try it out. Requires
679 processes with "&find /". 'import jobctrl' to try it out. Requires
677 'subprocess' module, standard in python 2.4+.
680 'subprocess' module, standard in python 2.4+.
678
681
679 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
682 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
680 so if foo -> bar and bar -> baz, then foo -> baz.
683 so if foo -> bar and bar -> baz, then foo -> baz.
681
684
682 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
685 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
683
686
684 * IPython/Magic.py (Magic.parse_options): add a new posix option
687 * IPython/Magic.py (Magic.parse_options): add a new posix option
685 to allow parsing of input args in magics that doesn't strip quotes
688 to allow parsing of input args in magics that doesn't strip quotes
686 (if posix=False). This also closes %timeit bug reported by
689 (if posix=False). This also closes %timeit bug reported by
687 Stefan.
690 Stefan.
688
691
689 2006-10-03 Ville Vainio <vivainio@gmail.com>
692 2006-10-03 Ville Vainio <vivainio@gmail.com>
690
693
691 * iplib.py (raw_input, interact): Return ValueError catching for
694 * iplib.py (raw_input, interact): Return ValueError catching for
692 raw_input. Fixes infinite loop for sys.stdin.close() or
695 raw_input. Fixes infinite loop for sys.stdin.close() or
693 sys.stdout.close().
696 sys.stdout.close().
694
697
695 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
698 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
696
699
697 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
700 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
698 to help in handling doctests. irunner is now pretty useful for
701 to help in handling doctests. irunner is now pretty useful for
699 running standalone scripts and simulate a full interactive session
702 running standalone scripts and simulate a full interactive session
700 in a format that can be then pasted as a doctest.
703 in a format that can be then pasted as a doctest.
701
704
702 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
705 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
703 on top of the default (useless) ones. This also fixes the nasty
706 on top of the default (useless) ones. This also fixes the nasty
704 way in which 2.5's Quitter() exits (reverted [1785]).
707 way in which 2.5's Quitter() exits (reverted [1785]).
705
708
706 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
709 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
707 2.5.
710 2.5.
708
711
709 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
712 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
710 color scheme is updated as well when color scheme is changed
713 color scheme is updated as well when color scheme is changed
711 interactively.
714 interactively.
712
715
713 2006-09-27 Ville Vainio <vivainio@gmail.com>
716 2006-09-27 Ville Vainio <vivainio@gmail.com>
714
717
715 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
718 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
716 infinite loop and just exit. It's a hack, but will do for a while.
719 infinite loop and just exit. It's a hack, but will do for a while.
717
720
718 2006-08-25 Walter Doerwald <walter@livinglogic.de>
721 2006-08-25 Walter Doerwald <walter@livinglogic.de>
719
722
720 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
723 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
721 the constructor, this makes it possible to get a list of only directories
724 the constructor, this makes it possible to get a list of only directories
722 or only files.
725 or only files.
723
726
724 2006-08-12 Ville Vainio <vivainio@gmail.com>
727 2006-08-12 Ville Vainio <vivainio@gmail.com>
725
728
726 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
729 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
727 they broke unittest
730 they broke unittest
728
731
729 2006-08-11 Ville Vainio <vivainio@gmail.com>
732 2006-08-11 Ville Vainio <vivainio@gmail.com>
730
733
731 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
734 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
732 by resolving issue properly, i.e. by inheriting FakeModule
735 by resolving issue properly, i.e. by inheriting FakeModule
733 from types.ModuleType. Pickling ipython interactive data
736 from types.ModuleType. Pickling ipython interactive data
734 should still work as usual (testing appreciated).
737 should still work as usual (testing appreciated).
735
738
736 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
739 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
737
740
738 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
741 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
739 running under python 2.3 with code from 2.4 to fix a bug with
742 running under python 2.3 with code from 2.4 to fix a bug with
740 help(). Reported by the Debian maintainers, Norbert Tretkowski
743 help(). Reported by the Debian maintainers, Norbert Tretkowski
741 <norbert-AT-tretkowski.de> and Alexandre Fayolle
744 <norbert-AT-tretkowski.de> and Alexandre Fayolle
742 <afayolle-AT-debian.org>.
745 <afayolle-AT-debian.org>.
743
746
744 2006-08-04 Walter Doerwald <walter@livinglogic.de>
747 2006-08-04 Walter Doerwald <walter@livinglogic.de>
745
748
746 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
749 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
747 (which was displaying "quit" twice).
750 (which was displaying "quit" twice).
748
751
749 2006-07-28 Walter Doerwald <walter@livinglogic.de>
752 2006-07-28 Walter Doerwald <walter@livinglogic.de>
750
753
751 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
754 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
752 the mode argument).
755 the mode argument).
753
756
754 2006-07-27 Walter Doerwald <walter@livinglogic.de>
757 2006-07-27 Walter Doerwald <walter@livinglogic.de>
755
758
756 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
759 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
757 not running under IPython.
760 not running under IPython.
758
761
759 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
762 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
760 and make it iterable (iterating over the attribute itself). Add two new
763 and make it iterable (iterating over the attribute itself). Add two new
761 magic strings for __xattrs__(): If the string starts with "-", the attribute
764 magic strings for __xattrs__(): If the string starts with "-", the attribute
762 will not be displayed in ibrowse's detail view (but it can still be
765 will not be displayed in ibrowse's detail view (but it can still be
763 iterated over). This makes it possible to add attributes that are large
766 iterated over). This makes it possible to add attributes that are large
764 lists or generator methods to the detail view. Replace magic attribute names
767 lists or generator methods to the detail view. Replace magic attribute names
765 and _attrname() and _getattr() with "descriptors": For each type of magic
768 and _attrname() and _getattr() with "descriptors": For each type of magic
766 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
769 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
767 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
770 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
768 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
771 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
769 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
772 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
770 are still supported.
773 are still supported.
771
774
772 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
775 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
773 fails in ibrowse.fetch(), the exception object is added as the last item
776 fails in ibrowse.fetch(), the exception object is added as the last item
774 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
777 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
775 a generator throws an exception midway through execution.
778 a generator throws an exception midway through execution.
776
779
777 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
780 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
778 encoding into methods.
781 encoding into methods.
779
782
780 2006-07-26 Ville Vainio <vivainio@gmail.com>
783 2006-07-26 Ville Vainio <vivainio@gmail.com>
781
784
782 * iplib.py: history now stores multiline input as single
785 * iplib.py: history now stores multiline input as single
783 history entries. Patch by Jorgen Cederlof.
786 history entries. Patch by Jorgen Cederlof.
784
787
785 2006-07-18 Walter Doerwald <walter@livinglogic.de>
788 2006-07-18 Walter Doerwald <walter@livinglogic.de>
786
789
787 * IPython/Extensions/ibrowse.py: Make cursor visible over
790 * IPython/Extensions/ibrowse.py: Make cursor visible over
788 non existing attributes.
791 non existing attributes.
789
792
790 2006-07-14 Walter Doerwald <walter@livinglogic.de>
793 2006-07-14 Walter Doerwald <walter@livinglogic.de>
791
794
792 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
795 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
793 error output of the running command doesn't mess up the screen.
796 error output of the running command doesn't mess up the screen.
794
797
795 2006-07-13 Walter Doerwald <walter@livinglogic.de>
798 2006-07-13 Walter Doerwald <walter@livinglogic.de>
796
799
797 * IPython/Extensions/ipipe.py (isort): Make isort usable without
800 * IPython/Extensions/ipipe.py (isort): Make isort usable without
798 argument. This sorts the items themselves.
801 argument. This sorts the items themselves.
799
802
800 2006-07-12 Walter Doerwald <walter@livinglogic.de>
803 2006-07-12 Walter Doerwald <walter@livinglogic.de>
801
804
802 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
805 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
803 Compile expression strings into code objects. This should speed
806 Compile expression strings into code objects. This should speed
804 up ifilter and friends somewhat.
807 up ifilter and friends somewhat.
805
808
806 2006-07-08 Ville Vainio <vivainio@gmail.com>
809 2006-07-08 Ville Vainio <vivainio@gmail.com>
807
810
808 * Magic.py: %cpaste now strips > from the beginning of lines
811 * Magic.py: %cpaste now strips > from the beginning of lines
809 to ease pasting quoted code from emails. Contributed by
812 to ease pasting quoted code from emails. Contributed by
810 Stefan van der Walt.
813 Stefan van der Walt.
811
814
812 2006-06-29 Ville Vainio <vivainio@gmail.com>
815 2006-06-29 Ville Vainio <vivainio@gmail.com>
813
816
814 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
817 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
815 mode, patch contributed by Darren Dale. NEEDS TESTING!
818 mode, patch contributed by Darren Dale. NEEDS TESTING!
816
819
817 2006-06-28 Walter Doerwald <walter@livinglogic.de>
820 2006-06-28 Walter Doerwald <walter@livinglogic.de>
818
821
819 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
822 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
820 a blue background. Fix fetching new display rows when the browser
823 a blue background. Fix fetching new display rows when the browser
821 scrolls more than a screenful (e.g. by using the goto command).
824 scrolls more than a screenful (e.g. by using the goto command).
822
825
823 2006-06-27 Ville Vainio <vivainio@gmail.com>
826 2006-06-27 Ville Vainio <vivainio@gmail.com>
824
827
825 * Magic.py (_inspect, _ofind) Apply David Huard's
828 * Magic.py (_inspect, _ofind) Apply David Huard's
826 patch for displaying the correct docstring for 'property'
829 patch for displaying the correct docstring for 'property'
827 attributes.
830 attributes.
828
831
829 2006-06-23 Walter Doerwald <walter@livinglogic.de>
832 2006-06-23 Walter Doerwald <walter@livinglogic.de>
830
833
831 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
834 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
832 commands into the methods implementing them.
835 commands into the methods implementing them.
833
836
834 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
837 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
835
838
836 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
839 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
837 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
840 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
838 autoindent support was authored by Jin Liu.
841 autoindent support was authored by Jin Liu.
839
842
840 2006-06-22 Walter Doerwald <walter@livinglogic.de>
843 2006-06-22 Walter Doerwald <walter@livinglogic.de>
841
844
842 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
845 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
843 for keymaps with a custom class that simplifies handling.
846 for keymaps with a custom class that simplifies handling.
844
847
845 2006-06-19 Walter Doerwald <walter@livinglogic.de>
848 2006-06-19 Walter Doerwald <walter@livinglogic.de>
846
849
847 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
850 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
848 resizing. This requires Python 2.5 to work.
851 resizing. This requires Python 2.5 to work.
849
852
850 2006-06-16 Walter Doerwald <walter@livinglogic.de>
853 2006-06-16 Walter Doerwald <walter@livinglogic.de>
851
854
852 * IPython/Extensions/ibrowse.py: Add two new commands to
855 * IPython/Extensions/ibrowse.py: Add two new commands to
853 ibrowse: "hideattr" (mapped to "h") hides the attribute under
856 ibrowse: "hideattr" (mapped to "h") hides the attribute under
854 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
857 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
855 attributes again. Remapped the help command to "?". Display
858 attributes again. Remapped the help command to "?". Display
856 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
859 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
857 as keys for the "home" and "end" commands. Add three new commands
860 as keys for the "home" and "end" commands. Add three new commands
858 to the input mode for "find" and friends: "delend" (CTRL-K)
861 to the input mode for "find" and friends: "delend" (CTRL-K)
859 deletes to the end of line. "incsearchup" searches upwards in the
862 deletes to the end of line. "incsearchup" searches upwards in the
860 command history for an input that starts with the text before the cursor.
863 command history for an input that starts with the text before the cursor.
861 "incsearchdown" does the same downwards. Removed a bogus mapping of
864 "incsearchdown" does the same downwards. Removed a bogus mapping of
862 the x key to "delete".
865 the x key to "delete".
863
866
864 2006-06-15 Ville Vainio <vivainio@gmail.com>
867 2006-06-15 Ville Vainio <vivainio@gmail.com>
865
868
866 * iplib.py, hooks.py: Added new generate_prompt hook that can be
869 * iplib.py, hooks.py: Added new generate_prompt hook that can be
867 used to create prompts dynamically, instead of the "old" way of
870 used to create prompts dynamically, instead of the "old" way of
868 assigning "magic" strings to prompt_in1 and prompt_in2. The old
871 assigning "magic" strings to prompt_in1 and prompt_in2. The old
869 way still works (it's invoked by the default hook), of course.
872 way still works (it's invoked by the default hook), of course.
870
873
871 * Prompts.py: added generate_output_prompt hook for altering output
874 * Prompts.py: added generate_output_prompt hook for altering output
872 prompt
875 prompt
873
876
874 * Release.py: Changed version string to 0.7.3.svn.
877 * Release.py: Changed version string to 0.7.3.svn.
875
878
876 2006-06-15 Walter Doerwald <walter@livinglogic.de>
879 2006-06-15 Walter Doerwald <walter@livinglogic.de>
877
880
878 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
881 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
879 the call to fetch() always tries to fetch enough data for at least one
882 the call to fetch() always tries to fetch enough data for at least one
880 full screen. This makes it possible to simply call moveto(0,0,True) in
883 full screen. This makes it possible to simply call moveto(0,0,True) in
881 the constructor. Fix typos and removed the obsolete goto attribute.
884 the constructor. Fix typos and removed the obsolete goto attribute.
882
885
883 2006-06-12 Ville Vainio <vivainio@gmail.com>
886 2006-06-12 Ville Vainio <vivainio@gmail.com>
884
887
885 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
888 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
886 allowing $variable interpolation within multiline statements,
889 allowing $variable interpolation within multiline statements,
887 though so far only with "sh" profile for a testing period.
890 though so far only with "sh" profile for a testing period.
888 The patch also enables splitting long commands with \ but it
891 The patch also enables splitting long commands with \ but it
889 doesn't work properly yet.
892 doesn't work properly yet.
890
893
891 2006-06-12 Walter Doerwald <walter@livinglogic.de>
894 2006-06-12 Walter Doerwald <walter@livinglogic.de>
892
895
893 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
896 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
894 input history and the position of the cursor in the input history for
897 input history and the position of the cursor in the input history for
895 the find, findbackwards and goto command.
898 the find, findbackwards and goto command.
896
899
897 2006-06-10 Walter Doerwald <walter@livinglogic.de>
900 2006-06-10 Walter Doerwald <walter@livinglogic.de>
898
901
899 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
902 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
900 implements the basic functionality of browser commands that require
903 implements the basic functionality of browser commands that require
901 input. Reimplement the goto, find and findbackwards commands as
904 input. Reimplement the goto, find and findbackwards commands as
902 subclasses of _CommandInput. Add an input history and keymaps to those
905 subclasses of _CommandInput. Add an input history and keymaps to those
903 commands. Add "\r" as a keyboard shortcut for the enterdefault and
906 commands. Add "\r" as a keyboard shortcut for the enterdefault and
904 execute commands.
907 execute commands.
905
908
906 2006-06-07 Ville Vainio <vivainio@gmail.com>
909 2006-06-07 Ville Vainio <vivainio@gmail.com>
907
910
908 * iplib.py: ipython mybatch.ipy exits ipython immediately after
911 * iplib.py: ipython mybatch.ipy exits ipython immediately after
909 running the batch files instead of leaving the session open.
912 running the batch files instead of leaving the session open.
910
913
911 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
914 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
912
915
913 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
916 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
914 the original fix was incomplete. Patch submitted by W. Maier.
917 the original fix was incomplete. Patch submitted by W. Maier.
915
918
916 2006-06-07 Ville Vainio <vivainio@gmail.com>
919 2006-06-07 Ville Vainio <vivainio@gmail.com>
917
920
918 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
921 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
919 Confirmation prompts can be supressed by 'quiet' option.
922 Confirmation prompts can be supressed by 'quiet' option.
920 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
923 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
921
924
922 2006-06-06 *** Released version 0.7.2
925 2006-06-06 *** Released version 0.7.2
923
926
924 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
927 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
925
928
926 * IPython/Release.py (version): Made 0.7.2 final for release.
929 * IPython/Release.py (version): Made 0.7.2 final for release.
927 Repo tagged and release cut.
930 Repo tagged and release cut.
928
931
929 2006-06-05 Ville Vainio <vivainio@gmail.com>
932 2006-06-05 Ville Vainio <vivainio@gmail.com>
930
933
931 * Magic.py (magic_rehashx): Honor no_alias list earlier in
934 * Magic.py (magic_rehashx): Honor no_alias list earlier in
932 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
935 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
933
936
934 * upgrade_dir.py: try import 'path' module a bit harder
937 * upgrade_dir.py: try import 'path' module a bit harder
935 (for %upgrade)
938 (for %upgrade)
936
939
937 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
940 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
938
941
939 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
942 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
940 instead of looping 20 times.
943 instead of looping 20 times.
941
944
942 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
945 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
943 correctly at initialization time. Bug reported by Krishna Mohan
946 correctly at initialization time. Bug reported by Krishna Mohan
944 Gundu <gkmohan-AT-gmail.com> on the user list.
947 Gundu <gkmohan-AT-gmail.com> on the user list.
945
948
946 * IPython/Release.py (version): Mark 0.7.2 version to start
949 * IPython/Release.py (version): Mark 0.7.2 version to start
947 testing for release on 06/06.
950 testing for release on 06/06.
948
951
949 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
952 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
950
953
951 * scripts/irunner: thin script interface so users don't have to
954 * scripts/irunner: thin script interface so users don't have to
952 find the module and call it as an executable, since modules rarely
955 find the module and call it as an executable, since modules rarely
953 live in people's PATH.
956 live in people's PATH.
954
957
955 * IPython/irunner.py (InteractiveRunner.__init__): added
958 * IPython/irunner.py (InteractiveRunner.__init__): added
956 delaybeforesend attribute to control delays with newer versions of
959 delaybeforesend attribute to control delays with newer versions of
957 pexpect. Thanks to detailed help from pexpect's author, Noah
960 pexpect. Thanks to detailed help from pexpect's author, Noah
958 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
961 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
959 correctly (it works in NoColor mode).
962 correctly (it works in NoColor mode).
960
963
961 * IPython/iplib.py (handle_normal): fix nasty crash reported on
964 * IPython/iplib.py (handle_normal): fix nasty crash reported on
962 SAGE list, from improper log() calls.
965 SAGE list, from improper log() calls.
963
966
964 2006-05-31 Ville Vainio <vivainio@gmail.com>
967 2006-05-31 Ville Vainio <vivainio@gmail.com>
965
968
966 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
969 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
967 with args in parens to work correctly with dirs that have spaces.
970 with args in parens to work correctly with dirs that have spaces.
968
971
969 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
972 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
970
973
971 * IPython/Logger.py (Logger.logstart): add option to log raw input
974 * IPython/Logger.py (Logger.logstart): add option to log raw input
972 instead of the processed one. A -r flag was added to the
975 instead of the processed one. A -r flag was added to the
973 %logstart magic used for controlling logging.
976 %logstart magic used for controlling logging.
974
977
975 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
978 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
976
979
977 * IPython/iplib.py (InteractiveShell.__init__): add check for the
980 * IPython/iplib.py (InteractiveShell.__init__): add check for the
978 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
981 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
979 recognize the option. After a bug report by Will Maier. This
982 recognize the option. After a bug report by Will Maier. This
980 closes #64 (will do it after confirmation from W. Maier).
983 closes #64 (will do it after confirmation from W. Maier).
981
984
982 * IPython/irunner.py: New module to run scripts as if manually
985 * IPython/irunner.py: New module to run scripts as if manually
983 typed into an interactive environment, based on pexpect. After a
986 typed into an interactive environment, based on pexpect. After a
984 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
987 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
985 ipython-user list. Simple unittests in the tests/ directory.
988 ipython-user list. Simple unittests in the tests/ directory.
986
989
987 * tools/release: add Will Maier, OpenBSD port maintainer, to
990 * tools/release: add Will Maier, OpenBSD port maintainer, to
988 recepients list. We are now officially part of the OpenBSD ports:
991 recepients list. We are now officially part of the OpenBSD ports:
989 http://www.openbsd.org/ports.html ! Many thanks to Will for the
992 http://www.openbsd.org/ports.html ! Many thanks to Will for the
990 work.
993 work.
991
994
992 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
995 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
993
996
994 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
997 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
995 so that it doesn't break tkinter apps.
998 so that it doesn't break tkinter apps.
996
999
997 * IPython/iplib.py (_prefilter): fix bug where aliases would
1000 * IPython/iplib.py (_prefilter): fix bug where aliases would
998 shadow variables when autocall was fully off. Reported by SAGE
1001 shadow variables when autocall was fully off. Reported by SAGE
999 author William Stein.
1002 author William Stein.
1000
1003
1001 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1004 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1002 at what detail level strings are computed when foo? is requested.
1005 at what detail level strings are computed when foo? is requested.
1003 This allows users to ask for example that the string form of an
1006 This allows users to ask for example that the string form of an
1004 object is only computed when foo?? is called, or even never, by
1007 object is only computed when foo?? is called, or even never, by
1005 setting the object_info_string_level >= 2 in the configuration
1008 setting the object_info_string_level >= 2 in the configuration
1006 file. This new option has been added and documented. After a
1009 file. This new option has been added and documented. After a
1007 request by SAGE to be able to control the printing of very large
1010 request by SAGE to be able to control the printing of very large
1008 objects more easily.
1011 objects more easily.
1009
1012
1010 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1013 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1011
1014
1012 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1015 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1013 from sys.argv, to be 100% consistent with how Python itself works
1016 from sys.argv, to be 100% consistent with how Python itself works
1014 (as seen for example with python -i file.py). After a bug report
1017 (as seen for example with python -i file.py). After a bug report
1015 by Jeffrey Collins.
1018 by Jeffrey Collins.
1016
1019
1017 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1020 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1018 nasty bug which was preventing custom namespaces with -pylab,
1021 nasty bug which was preventing custom namespaces with -pylab,
1019 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1022 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1020 compatibility (long gone from mpl).
1023 compatibility (long gone from mpl).
1021
1024
1022 * IPython/ipapi.py (make_session): name change: create->make. We
1025 * IPython/ipapi.py (make_session): name change: create->make. We
1023 use make in other places (ipmaker,...), it's shorter and easier to
1026 use make in other places (ipmaker,...), it's shorter and easier to
1024 type and say, etc. I'm trying to clean things before 0.7.2 so
1027 type and say, etc. I'm trying to clean things before 0.7.2 so
1025 that I can keep things stable wrt to ipapi in the chainsaw branch.
1028 that I can keep things stable wrt to ipapi in the chainsaw branch.
1026
1029
1027 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1030 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1028 python-mode recognizes our debugger mode. Add support for
1031 python-mode recognizes our debugger mode. Add support for
1029 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1032 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1030 <m.liu.jin-AT-gmail.com> originally written by
1033 <m.liu.jin-AT-gmail.com> originally written by
1031 doxgen-AT-newsmth.net (with minor modifications for xemacs
1034 doxgen-AT-newsmth.net (with minor modifications for xemacs
1032 compatibility)
1035 compatibility)
1033
1036
1034 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1037 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1035 tracebacks when walking the stack so that the stack tracking system
1038 tracebacks when walking the stack so that the stack tracking system
1036 in emacs' python-mode can identify the frames correctly.
1039 in emacs' python-mode can identify the frames correctly.
1037
1040
1038 * IPython/ipmaker.py (make_IPython): make the internal (and
1041 * IPython/ipmaker.py (make_IPython): make the internal (and
1039 default config) autoedit_syntax value false by default. Too many
1042 default config) autoedit_syntax value false by default. Too many
1040 users have complained to me (both on and off-list) about problems
1043 users have complained to me (both on and off-list) about problems
1041 with this option being on by default, so I'm making it default to
1044 with this option being on by default, so I'm making it default to
1042 off. It can still be enabled by anyone via the usual mechanisms.
1045 off. It can still be enabled by anyone via the usual mechanisms.
1043
1046
1044 * IPython/completer.py (Completer.attr_matches): add support for
1047 * IPython/completer.py (Completer.attr_matches): add support for
1045 PyCrust-style _getAttributeNames magic method. Patch contributed
1048 PyCrust-style _getAttributeNames magic method. Patch contributed
1046 by <mscott-AT-goldenspud.com>. Closes #50.
1049 by <mscott-AT-goldenspud.com>. Closes #50.
1047
1050
1048 * IPython/iplib.py (InteractiveShell.__init__): remove the
1051 * IPython/iplib.py (InteractiveShell.__init__): remove the
1049 deletion of exit/quit from __builtin__, which can break
1052 deletion of exit/quit from __builtin__, which can break
1050 third-party tools like the Zope debugging console. The
1053 third-party tools like the Zope debugging console. The
1051 %exit/%quit magics remain. In general, it's probably a good idea
1054 %exit/%quit magics remain. In general, it's probably a good idea
1052 not to delete anything from __builtin__, since we never know what
1055 not to delete anything from __builtin__, since we never know what
1053 that will break. In any case, python now (for 2.5) will support
1056 that will break. In any case, python now (for 2.5) will support
1054 'real' exit/quit, so this issue is moot. Closes #55.
1057 'real' exit/quit, so this issue is moot. Closes #55.
1055
1058
1056 * IPython/genutils.py (with_obj): rename the 'with' function to
1059 * IPython/genutils.py (with_obj): rename the 'with' function to
1057 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1060 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1058 becomes a language keyword. Closes #53.
1061 becomes a language keyword. Closes #53.
1059
1062
1060 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1063 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1061 __file__ attribute to this so it fools more things into thinking
1064 __file__ attribute to this so it fools more things into thinking
1062 it is a real module. Closes #59.
1065 it is a real module. Closes #59.
1063
1066
1064 * IPython/Magic.py (magic_edit): add -n option to open the editor
1067 * IPython/Magic.py (magic_edit): add -n option to open the editor
1065 at a specific line number. After a patch by Stefan van der Walt.
1068 at a specific line number. After a patch by Stefan van der Walt.
1066
1069
1067 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1070 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1068
1071
1069 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1072 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1070 reason the file could not be opened. After automatic crash
1073 reason the file could not be opened. After automatic crash
1071 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1074 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1072 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1075 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1073 (_should_recompile): Don't fire editor if using %bg, since there
1076 (_should_recompile): Don't fire editor if using %bg, since there
1074 is no file in the first place. From the same report as above.
1077 is no file in the first place. From the same report as above.
1075 (raw_input): protect against faulty third-party prefilters. After
1078 (raw_input): protect against faulty third-party prefilters. After
1076 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1079 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1077 while running under SAGE.
1080 while running under SAGE.
1078
1081
1079 2006-05-23 Ville Vainio <vivainio@gmail.com>
1082 2006-05-23 Ville Vainio <vivainio@gmail.com>
1080
1083
1081 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1084 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1082 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1085 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1083 now returns None (again), unless dummy is specifically allowed by
1086 now returns None (again), unless dummy is specifically allowed by
1084 ipapi.get(allow_dummy=True).
1087 ipapi.get(allow_dummy=True).
1085
1088
1086 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1089 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1087
1090
1088 * IPython: remove all 2.2-compatibility objects and hacks from
1091 * IPython: remove all 2.2-compatibility objects and hacks from
1089 everywhere, since we only support 2.3 at this point. Docs
1092 everywhere, since we only support 2.3 at this point. Docs
1090 updated.
1093 updated.
1091
1094
1092 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1095 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1093 Anything requiring extra validation can be turned into a Python
1096 Anything requiring extra validation can be turned into a Python
1094 property in the future. I used a property for the db one b/c
1097 property in the future. I used a property for the db one b/c
1095 there was a nasty circularity problem with the initialization
1098 there was a nasty circularity problem with the initialization
1096 order, which right now I don't have time to clean up.
1099 order, which right now I don't have time to clean up.
1097
1100
1098 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1101 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1099 another locking bug reported by Jorgen. I'm not 100% sure though,
1102 another locking bug reported by Jorgen. I'm not 100% sure though,
1100 so more testing is needed...
1103 so more testing is needed...
1101
1104
1102 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1105 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1103
1106
1104 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1107 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1105 local variables from any routine in user code (typically executed
1108 local variables from any routine in user code (typically executed
1106 with %run) directly into the interactive namespace. Very useful
1109 with %run) directly into the interactive namespace. Very useful
1107 when doing complex debugging.
1110 when doing complex debugging.
1108 (IPythonNotRunning): Changed the default None object to a dummy
1111 (IPythonNotRunning): Changed the default None object to a dummy
1109 whose attributes can be queried as well as called without
1112 whose attributes can be queried as well as called without
1110 exploding, to ease writing code which works transparently both in
1113 exploding, to ease writing code which works transparently both in
1111 and out of ipython and uses some of this API.
1114 and out of ipython and uses some of this API.
1112
1115
1113 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1116 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1114
1117
1115 * IPython/hooks.py (result_display): Fix the fact that our display
1118 * IPython/hooks.py (result_display): Fix the fact that our display
1116 hook was using str() instead of repr(), as the default python
1119 hook was using str() instead of repr(), as the default python
1117 console does. This had gone unnoticed b/c it only happened if
1120 console does. This had gone unnoticed b/c it only happened if
1118 %Pprint was off, but the inconsistency was there.
1121 %Pprint was off, but the inconsistency was there.
1119
1122
1120 2006-05-15 Ville Vainio <vivainio@gmail.com>
1123 2006-05-15 Ville Vainio <vivainio@gmail.com>
1121
1124
1122 * Oinspect.py: Only show docstring for nonexisting/binary files
1125 * Oinspect.py: Only show docstring for nonexisting/binary files
1123 when doing object??, closing ticket #62
1126 when doing object??, closing ticket #62
1124
1127
1125 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1128 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1126
1129
1127 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1130 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1128 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1131 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1129 was being released in a routine which hadn't checked if it had
1132 was being released in a routine which hadn't checked if it had
1130 been the one to acquire it.
1133 been the one to acquire it.
1131
1134
1132 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1135 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1133
1136
1134 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1137 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1135
1138
1136 2006-04-11 Ville Vainio <vivainio@gmail.com>
1139 2006-04-11 Ville Vainio <vivainio@gmail.com>
1137
1140
1138 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1141 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1139 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1142 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1140 prefilters, allowing stuff like magics and aliases in the file.
1143 prefilters, allowing stuff like magics and aliases in the file.
1141
1144
1142 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1145 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1143 added. Supported now are "%clear in" and "%clear out" (clear input and
1146 added. Supported now are "%clear in" and "%clear out" (clear input and
1144 output history, respectively). Also fixed CachedOutput.flush to
1147 output history, respectively). Also fixed CachedOutput.flush to
1145 properly flush the output cache.
1148 properly flush the output cache.
1146
1149
1147 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1150 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1148 half-success (and fail explicitly).
1151 half-success (and fail explicitly).
1149
1152
1150 2006-03-28 Ville Vainio <vivainio@gmail.com>
1153 2006-03-28 Ville Vainio <vivainio@gmail.com>
1151
1154
1152 * iplib.py: Fix quoting of aliases so that only argless ones
1155 * iplib.py: Fix quoting of aliases so that only argless ones
1153 are quoted
1156 are quoted
1154
1157
1155 2006-03-28 Ville Vainio <vivainio@gmail.com>
1158 2006-03-28 Ville Vainio <vivainio@gmail.com>
1156
1159
1157 * iplib.py: Quote aliases with spaces in the name.
1160 * iplib.py: Quote aliases with spaces in the name.
1158 "c:\program files\blah\bin" is now legal alias target.
1161 "c:\program files\blah\bin" is now legal alias target.
1159
1162
1160 * ext_rehashdir.py: Space no longer allowed as arg
1163 * ext_rehashdir.py: Space no longer allowed as arg
1161 separator, since space is legal in path names.
1164 separator, since space is legal in path names.
1162
1165
1163 2006-03-16 Ville Vainio <vivainio@gmail.com>
1166 2006-03-16 Ville Vainio <vivainio@gmail.com>
1164
1167
1165 * upgrade_dir.py: Take path.py from Extensions, correcting
1168 * upgrade_dir.py: Take path.py from Extensions, correcting
1166 %upgrade magic
1169 %upgrade magic
1167
1170
1168 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1171 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1169
1172
1170 * hooks.py: Only enclose editor binary in quotes if legal and
1173 * hooks.py: Only enclose editor binary in quotes if legal and
1171 necessary (space in the name, and is an existing file). Fixes a bug
1174 necessary (space in the name, and is an existing file). Fixes a bug
1172 reported by Zachary Pincus.
1175 reported by Zachary Pincus.
1173
1176
1174 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1177 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1175
1178
1176 * Manual: thanks to a tip on proper color handling for Emacs, by
1179 * Manual: thanks to a tip on proper color handling for Emacs, by
1177 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1180 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1178
1181
1179 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1182 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1180 by applying the provided patch. Thanks to Liu Jin
1183 by applying the provided patch. Thanks to Liu Jin
1181 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1184 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1182 XEmacs/Linux, I'm trusting the submitter that it actually helps
1185 XEmacs/Linux, I'm trusting the submitter that it actually helps
1183 under win32/GNU Emacs. Will revisit if any problems are reported.
1186 under win32/GNU Emacs. Will revisit if any problems are reported.
1184
1187
1185 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1188 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1186
1189
1187 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1190 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1188 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1191 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1189
1192
1190 2006-03-12 Ville Vainio <vivainio@gmail.com>
1193 2006-03-12 Ville Vainio <vivainio@gmail.com>
1191
1194
1192 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1195 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1193 Torsten Marek.
1196 Torsten Marek.
1194
1197
1195 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1198 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1196
1199
1197 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1200 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1198 line ranges works again.
1201 line ranges works again.
1199
1202
1200 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1203 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1201
1204
1202 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1205 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1203 and friends, after a discussion with Zach Pincus on ipython-user.
1206 and friends, after a discussion with Zach Pincus on ipython-user.
1204 I'm not 100% sure, but after thinking about it quite a bit, it may
1207 I'm not 100% sure, but after thinking about it quite a bit, it may
1205 be OK. Testing with the multithreaded shells didn't reveal any
1208 be OK. Testing with the multithreaded shells didn't reveal any
1206 problems, but let's keep an eye out.
1209 problems, but let's keep an eye out.
1207
1210
1208 In the process, I fixed a few things which were calling
1211 In the process, I fixed a few things which were calling
1209 self.InteractiveTB() directly (like safe_execfile), which is a
1212 self.InteractiveTB() directly (like safe_execfile), which is a
1210 mistake: ALL exception reporting should be done by calling
1213 mistake: ALL exception reporting should be done by calling
1211 self.showtraceback(), which handles state and tab-completion and
1214 self.showtraceback(), which handles state and tab-completion and
1212 more.
1215 more.
1213
1216
1214 2006-03-01 Ville Vainio <vivainio@gmail.com>
1217 2006-03-01 Ville Vainio <vivainio@gmail.com>
1215
1218
1216 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1219 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1217 To use, do "from ipipe import *".
1220 To use, do "from ipipe import *".
1218
1221
1219 2006-02-24 Ville Vainio <vivainio@gmail.com>
1222 2006-02-24 Ville Vainio <vivainio@gmail.com>
1220
1223
1221 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1224 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1222 "cleanly" and safely than the older upgrade mechanism.
1225 "cleanly" and safely than the older upgrade mechanism.
1223
1226
1224 2006-02-21 Ville Vainio <vivainio@gmail.com>
1227 2006-02-21 Ville Vainio <vivainio@gmail.com>
1225
1228
1226 * Magic.py: %save works again.
1229 * Magic.py: %save works again.
1227
1230
1228 2006-02-15 Ville Vainio <vivainio@gmail.com>
1231 2006-02-15 Ville Vainio <vivainio@gmail.com>
1229
1232
1230 * Magic.py: %Pprint works again
1233 * Magic.py: %Pprint works again
1231
1234
1232 * Extensions/ipy_sane_defaults.py: Provide everything provided
1235 * Extensions/ipy_sane_defaults.py: Provide everything provided
1233 in default ipythonrc, to make it possible to have a completely empty
1236 in default ipythonrc, to make it possible to have a completely empty
1234 ipythonrc (and thus completely rc-file free configuration)
1237 ipythonrc (and thus completely rc-file free configuration)
1235
1238
1236 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1239 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1237
1240
1238 * IPython/hooks.py (editor): quote the call to the editor command,
1241 * IPython/hooks.py (editor): quote the call to the editor command,
1239 to allow commands with spaces in them. Problem noted by watching
1242 to allow commands with spaces in them. Problem noted by watching
1240 Ian Oswald's video about textpad under win32 at
1243 Ian Oswald's video about textpad under win32 at
1241 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1244 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
1242
1245
1243 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1246 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
1244 describing magics (we haven't used @ for a loong time).
1247 describing magics (we haven't used @ for a loong time).
1245
1248
1246 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1249 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
1247 contributed by marienz to close
1250 contributed by marienz to close
1248 http://www.scipy.net/roundup/ipython/issue53.
1251 http://www.scipy.net/roundup/ipython/issue53.
1249
1252
1250 2006-02-10 Ville Vainio <vivainio@gmail.com>
1253 2006-02-10 Ville Vainio <vivainio@gmail.com>
1251
1254
1252 * genutils.py: getoutput now works in win32 too
1255 * genutils.py: getoutput now works in win32 too
1253
1256
1254 * completer.py: alias and magic completion only invoked
1257 * completer.py: alias and magic completion only invoked
1255 at the first "item" in the line, to avoid "cd %store"
1258 at the first "item" in the line, to avoid "cd %store"
1256 nonsense.
1259 nonsense.
1257
1260
1258 2006-02-09 Ville Vainio <vivainio@gmail.com>
1261 2006-02-09 Ville Vainio <vivainio@gmail.com>
1259
1262
1260 * test/*: Added a unit testing framework (finally).
1263 * test/*: Added a unit testing framework (finally).
1261 '%run runtests.py' to run test_*.
1264 '%run runtests.py' to run test_*.
1262
1265
1263 * ipapi.py: Exposed runlines and set_custom_exc
1266 * ipapi.py: Exposed runlines and set_custom_exc
1264
1267
1265 2006-02-07 Ville Vainio <vivainio@gmail.com>
1268 2006-02-07 Ville Vainio <vivainio@gmail.com>
1266
1269
1267 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1270 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
1268 instead use "f(1 2)" as before.
1271 instead use "f(1 2)" as before.
1269
1272
1270 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1273 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
1271
1274
1272 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1275 * IPython/demo.py (IPythonDemo): Add new classes to the demo
1273 facilities, for demos processed by the IPython input filter
1276 facilities, for demos processed by the IPython input filter
1274 (IPythonDemo), and for running a script one-line-at-a-time as a
1277 (IPythonDemo), and for running a script one-line-at-a-time as a
1275 demo, both for pure Python (LineDemo) and for IPython-processed
1278 demo, both for pure Python (LineDemo) and for IPython-processed
1276 input (IPythonLineDemo). After a request by Dave Kohel, from the
1279 input (IPythonLineDemo). After a request by Dave Kohel, from the
1277 SAGE team.
1280 SAGE team.
1278 (Demo.edit): added an edit() method to the demo objects, to edit
1281 (Demo.edit): added an edit() method to the demo objects, to edit
1279 the in-memory copy of the last executed block.
1282 the in-memory copy of the last executed block.
1280
1283
1281 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1284 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
1282 processing to %edit, %macro and %save. These commands can now be
1285 processing to %edit, %macro and %save. These commands can now be
1283 invoked on the unprocessed input as it was typed by the user
1286 invoked on the unprocessed input as it was typed by the user
1284 (without any prefilters applied). After requests by the SAGE team
1287 (without any prefilters applied). After requests by the SAGE team
1285 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1288 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
1286
1289
1287 2006-02-01 Ville Vainio <vivainio@gmail.com>
1290 2006-02-01 Ville Vainio <vivainio@gmail.com>
1288
1291
1289 * setup.py, eggsetup.py: easy_install ipython==dev works
1292 * setup.py, eggsetup.py: easy_install ipython==dev works
1290 correctly now (on Linux)
1293 correctly now (on Linux)
1291
1294
1292 * ipy_user_conf,ipmaker: user config changes, removed spurious
1295 * ipy_user_conf,ipmaker: user config changes, removed spurious
1293 warnings
1296 warnings
1294
1297
1295 * iplib: if rc.banner is string, use it as is.
1298 * iplib: if rc.banner is string, use it as is.
1296
1299
1297 * Magic: %pycat accepts a string argument and pages it's contents.
1300 * Magic: %pycat accepts a string argument and pages it's contents.
1298
1301
1299
1302
1300 2006-01-30 Ville Vainio <vivainio@gmail.com>
1303 2006-01-30 Ville Vainio <vivainio@gmail.com>
1301
1304
1302 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1305 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
1303 Now %store and bookmarks work through PickleShare, meaning that
1306 Now %store and bookmarks work through PickleShare, meaning that
1304 concurrent access is possible and all ipython sessions see the
1307 concurrent access is possible and all ipython sessions see the
1305 same database situation all the time, instead of snapshot of
1308 same database situation all the time, instead of snapshot of
1306 the situation when the session was started. Hence, %bookmark
1309 the situation when the session was started. Hence, %bookmark
1307 results are immediately accessible from othes sessions. The database
1310 results are immediately accessible from othes sessions. The database
1308 is also available for use by user extensions. See:
1311 is also available for use by user extensions. See:
1309 http://www.python.org/pypi/pickleshare
1312 http://www.python.org/pypi/pickleshare
1310
1313
1311 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1314 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
1312
1315
1313 * aliases can now be %store'd
1316 * aliases can now be %store'd
1314
1317
1315 * path.py moved to Extensions so that pickleshare does not need
1318 * path.py moved to Extensions so that pickleshare does not need
1316 IPython-specific import. Extensions added to pythonpath right
1319 IPython-specific import. Extensions added to pythonpath right
1317 at __init__.
1320 at __init__.
1318
1321
1319 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1322 * iplib.py: ipalias deprecated/redundant; aliases are converted and
1320 called with _ip.system and the pre-transformed command string.
1323 called with _ip.system and the pre-transformed command string.
1321
1324
1322 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1325 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
1323
1326
1324 * IPython/iplib.py (interact): Fix that we were not catching
1327 * IPython/iplib.py (interact): Fix that we were not catching
1325 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1328 KeyboardInterrupt exceptions properly. I'm not quite sure why the
1326 logic here had to change, but it's fixed now.
1329 logic here had to change, but it's fixed now.
1327
1330
1328 2006-01-29 Ville Vainio <vivainio@gmail.com>
1331 2006-01-29 Ville Vainio <vivainio@gmail.com>
1329
1332
1330 * iplib.py: Try to import pyreadline on Windows.
1333 * iplib.py: Try to import pyreadline on Windows.
1331
1334
1332 2006-01-27 Ville Vainio <vivainio@gmail.com>
1335 2006-01-27 Ville Vainio <vivainio@gmail.com>
1333
1336
1334 * iplib.py: Expose ipapi as _ip in builtin namespace.
1337 * iplib.py: Expose ipapi as _ip in builtin namespace.
1335 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1338 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
1336 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1339 and ip_set_hook (-> _ip.set_hook) redundant. % and !
1337 syntax now produce _ip.* variant of the commands.
1340 syntax now produce _ip.* variant of the commands.
1338
1341
1339 * "_ip.options().autoedit_syntax = 2" automatically throws
1342 * "_ip.options().autoedit_syntax = 2" automatically throws
1340 user to editor for syntax error correction without prompting.
1343 user to editor for syntax error correction without prompting.
1341
1344
1342 2006-01-27 Ville Vainio <vivainio@gmail.com>
1345 2006-01-27 Ville Vainio <vivainio@gmail.com>
1343
1346
1344 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1347 * ipmaker.py: Give "realistic" sys.argv for scripts (without
1345 'ipython' at argv[0]) executed through command line.
1348 'ipython' at argv[0]) executed through command line.
1346 NOTE: this DEPRECATES calling ipython with multiple scripts
1349 NOTE: this DEPRECATES calling ipython with multiple scripts
1347 ("ipython a.py b.py c.py")
1350 ("ipython a.py b.py c.py")
1348
1351
1349 * iplib.py, hooks.py: Added configurable input prefilter,
1352 * iplib.py, hooks.py: Added configurable input prefilter,
1350 named 'input_prefilter'. See ext_rescapture.py for example
1353 named 'input_prefilter'. See ext_rescapture.py for example
1351 usage.
1354 usage.
1352
1355
1353 * ext_rescapture.py, Magic.py: Better system command output capture
1356 * ext_rescapture.py, Magic.py: Better system command output capture
1354 through 'var = !ls' (deprecates user-visible %sc). Same notation
1357 through 'var = !ls' (deprecates user-visible %sc). Same notation
1355 applies for magics, 'var = %alias' assigns alias list to var.
1358 applies for magics, 'var = %alias' assigns alias list to var.
1356
1359
1357 * ipapi.py: added meta() for accessing extension-usable data store.
1360 * ipapi.py: added meta() for accessing extension-usable data store.
1358
1361
1359 * iplib.py: added InteractiveShell.getapi(). New magics should be
1362 * iplib.py: added InteractiveShell.getapi(). New magics should be
1360 written doing self.getapi() instead of using the shell directly.
1363 written doing self.getapi() instead of using the shell directly.
1361
1364
1362 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1365 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
1363 %store foo >> ~/myfoo.txt to store variables to files (in clean
1366 %store foo >> ~/myfoo.txt to store variables to files (in clean
1364 textual form, not a restorable pickle).
1367 textual form, not a restorable pickle).
1365
1368
1366 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1369 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
1367
1370
1368 * usage.py, Magic.py: added %quickref
1371 * usage.py, Magic.py: added %quickref
1369
1372
1370 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1373 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
1371
1374
1372 * GetoptErrors when invoking magics etc. with wrong args
1375 * GetoptErrors when invoking magics etc. with wrong args
1373 are now more helpful:
1376 are now more helpful:
1374 GetoptError: option -l not recognized (allowed: "qb" )
1377 GetoptError: option -l not recognized (allowed: "qb" )
1375
1378
1376 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1379 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
1377
1380
1378 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1381 * IPython/demo.py (Demo.show): Flush stdout after each block, so
1379 computationally intensive blocks don't appear to stall the demo.
1382 computationally intensive blocks don't appear to stall the demo.
1380
1383
1381 2006-01-24 Ville Vainio <vivainio@gmail.com>
1384 2006-01-24 Ville Vainio <vivainio@gmail.com>
1382
1385
1383 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1386 * iplib.py, hooks.py: 'result_display' hook can return a non-None
1384 value to manipulate resulting history entry.
1387 value to manipulate resulting history entry.
1385
1388
1386 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1389 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
1387 to instance methods of IPApi class, to make extending an embedded
1390 to instance methods of IPApi class, to make extending an embedded
1388 IPython feasible. See ext_rehashdir.py for example usage.
1391 IPython feasible. See ext_rehashdir.py for example usage.
1389
1392
1390 * Merged 1071-1076 from branches/0.7.1
1393 * Merged 1071-1076 from branches/0.7.1
1391
1394
1392
1395
1393 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1396 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
1394
1397
1395 * tools/release (daystamp): Fix build tools to use the new
1398 * tools/release (daystamp): Fix build tools to use the new
1396 eggsetup.py script to build lightweight eggs.
1399 eggsetup.py script to build lightweight eggs.
1397
1400
1398 * Applied changesets 1062 and 1064 before 0.7.1 release.
1401 * Applied changesets 1062 and 1064 before 0.7.1 release.
1399
1402
1400 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1403 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
1401 see the raw input history (without conversions like %ls ->
1404 see the raw input history (without conversions like %ls ->
1402 ipmagic("ls")). After a request from W. Stein, SAGE
1405 ipmagic("ls")). After a request from W. Stein, SAGE
1403 (http://modular.ucsd.edu/sage) developer. This information is
1406 (http://modular.ucsd.edu/sage) developer. This information is
1404 stored in the input_hist_raw attribute of the IPython instance, so
1407 stored in the input_hist_raw attribute of the IPython instance, so
1405 developers can access it if needed (it's an InputList instance).
1408 developers can access it if needed (it's an InputList instance).
1406
1409
1407 * Versionstring = 0.7.2.svn
1410 * Versionstring = 0.7.2.svn
1408
1411
1409 * eggsetup.py: A separate script for constructing eggs, creates
1412 * eggsetup.py: A separate script for constructing eggs, creates
1410 proper launch scripts even on Windows (an .exe file in
1413 proper launch scripts even on Windows (an .exe file in
1411 \python24\scripts).
1414 \python24\scripts).
1412
1415
1413 * ipapi.py: launch_new_instance, launch entry point needed for the
1416 * ipapi.py: launch_new_instance, launch entry point needed for the
1414 egg.
1417 egg.
1415
1418
1416 2006-01-23 Ville Vainio <vivainio@gmail.com>
1419 2006-01-23 Ville Vainio <vivainio@gmail.com>
1417
1420
1418 * Added %cpaste magic for pasting python code
1421 * Added %cpaste magic for pasting python code
1419
1422
1420 2006-01-22 Ville Vainio <vivainio@gmail.com>
1423 2006-01-22 Ville Vainio <vivainio@gmail.com>
1421
1424
1422 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1425 * Merge from branches/0.7.1 into trunk, revs 1052-1057
1423
1426
1424 * Versionstring = 0.7.2.svn
1427 * Versionstring = 0.7.2.svn
1425
1428
1426 * eggsetup.py: A separate script for constructing eggs, creates
1429 * eggsetup.py: A separate script for constructing eggs, creates
1427 proper launch scripts even on Windows (an .exe file in
1430 proper launch scripts even on Windows (an .exe file in
1428 \python24\scripts).
1431 \python24\scripts).
1429
1432
1430 * ipapi.py: launch_new_instance, launch entry point needed for the
1433 * ipapi.py: launch_new_instance, launch entry point needed for the
1431 egg.
1434 egg.
1432
1435
1433 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1436 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
1434
1437
1435 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1438 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
1436 %pfile foo would print the file for foo even if it was a binary.
1439 %pfile foo would print the file for foo even if it was a binary.
1437 Now, extensions '.so' and '.dll' are skipped.
1440 Now, extensions '.so' and '.dll' are skipped.
1438
1441
1439 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1442 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
1440 bug, where macros would fail in all threaded modes. I'm not 100%
1443 bug, where macros would fail in all threaded modes. I'm not 100%
1441 sure, so I'm going to put out an rc instead of making a release
1444 sure, so I'm going to put out an rc instead of making a release
1442 today, and wait for feedback for at least a few days.
1445 today, and wait for feedback for at least a few days.
1443
1446
1444 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1447 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
1445 it...) the handling of pasting external code with autoindent on.
1448 it...) the handling of pasting external code with autoindent on.
1446 To get out of a multiline input, the rule will appear for most
1449 To get out of a multiline input, the rule will appear for most
1447 users unchanged: two blank lines or change the indent level
1450 users unchanged: two blank lines or change the indent level
1448 proposed by IPython. But there is a twist now: you can
1451 proposed by IPython. But there is a twist now: you can
1449 add/subtract only *one or two spaces*. If you add/subtract three
1452 add/subtract only *one or two spaces*. If you add/subtract three
1450 or more (unless you completely delete the line), IPython will
1453 or more (unless you completely delete the line), IPython will
1451 accept that line, and you'll need to enter a second one of pure
1454 accept that line, and you'll need to enter a second one of pure
1452 whitespace. I know it sounds complicated, but I can't find a
1455 whitespace. I know it sounds complicated, but I can't find a
1453 different solution that covers all the cases, with the right
1456 different solution that covers all the cases, with the right
1454 heuristics. Hopefully in actual use, nobody will really notice
1457 heuristics. Hopefully in actual use, nobody will really notice
1455 all these strange rules and things will 'just work'.
1458 all these strange rules and things will 'just work'.
1456
1459
1457 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1460 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
1458
1461
1459 * IPython/iplib.py (interact): catch exceptions which can be
1462 * IPython/iplib.py (interact): catch exceptions which can be
1460 triggered asynchronously by signal handlers. Thanks to an
1463 triggered asynchronously by signal handlers. Thanks to an
1461 automatic crash report, submitted by Colin Kingsley
1464 automatic crash report, submitted by Colin Kingsley
1462 <tercel-AT-gentoo.org>.
1465 <tercel-AT-gentoo.org>.
1463
1466
1464 2006-01-20 Ville Vainio <vivainio@gmail.com>
1467 2006-01-20 Ville Vainio <vivainio@gmail.com>
1465
1468
1466 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1469 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
1467 (%rehashdir, very useful, try it out) of how to extend ipython
1470 (%rehashdir, very useful, try it out) of how to extend ipython
1468 with new magics. Also added Extensions dir to pythonpath to make
1471 with new magics. Also added Extensions dir to pythonpath to make
1469 importing extensions easy.
1472 importing extensions easy.
1470
1473
1471 * %store now complains when trying to store interactively declared
1474 * %store now complains when trying to store interactively declared
1472 classes / instances of those classes.
1475 classes / instances of those classes.
1473
1476
1474 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1477 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
1475 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1478 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
1476 if they exist, and ipy_user_conf.py with some defaults is created for
1479 if they exist, and ipy_user_conf.py with some defaults is created for
1477 the user.
1480 the user.
1478
1481
1479 * Startup rehashing done by the config file, not InterpreterExec.
1482 * Startup rehashing done by the config file, not InterpreterExec.
1480 This means system commands are available even without selecting the
1483 This means system commands are available even without selecting the
1481 pysh profile. It's the sensible default after all.
1484 pysh profile. It's the sensible default after all.
1482
1485
1483 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1486 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
1484
1487
1485 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1488 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
1486 multiline code with autoindent on working. But I am really not
1489 multiline code with autoindent on working. But I am really not
1487 sure, so this needs more testing. Will commit a debug-enabled
1490 sure, so this needs more testing. Will commit a debug-enabled
1488 version for now, while I test it some more, so that Ville and
1491 version for now, while I test it some more, so that Ville and
1489 others may also catch any problems. Also made
1492 others may also catch any problems. Also made
1490 self.indent_current_str() a method, to ensure that there's no
1493 self.indent_current_str() a method, to ensure that there's no
1491 chance of the indent space count and the corresponding string
1494 chance of the indent space count and the corresponding string
1492 falling out of sync. All code needing the string should just call
1495 falling out of sync. All code needing the string should just call
1493 the method.
1496 the method.
1494
1497
1495 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1498 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
1496
1499
1497 * IPython/Magic.py (magic_edit): fix check for when users don't
1500 * IPython/Magic.py (magic_edit): fix check for when users don't
1498 save their output files, the try/except was in the wrong section.
1501 save their output files, the try/except was in the wrong section.
1499
1502
1500 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1503 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1501
1504
1502 * IPython/Magic.py (magic_run): fix __file__ global missing from
1505 * IPython/Magic.py (magic_run): fix __file__ global missing from
1503 script's namespace when executed via %run. After a report by
1506 script's namespace when executed via %run. After a report by
1504 Vivian.
1507 Vivian.
1505
1508
1506 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1509 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
1507 when using python 2.4. The parent constructor changed in 2.4, and
1510 when using python 2.4. The parent constructor changed in 2.4, and
1508 we need to track it directly (we can't call it, as it messes up
1511 we need to track it directly (we can't call it, as it messes up
1509 readline and tab-completion inside our pdb would stop working).
1512 readline and tab-completion inside our pdb would stop working).
1510 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1513 After a bug report by R. Bernstein <rocky-AT-panix.com>.
1511
1514
1512 2006-01-16 Ville Vainio <vivainio@gmail.com>
1515 2006-01-16 Ville Vainio <vivainio@gmail.com>
1513
1516
1514 * Ipython/magic.py: Reverted back to old %edit functionality
1517 * Ipython/magic.py: Reverted back to old %edit functionality
1515 that returns file contents on exit.
1518 that returns file contents on exit.
1516
1519
1517 * IPython/path.py: Added Jason Orendorff's "path" module to
1520 * IPython/path.py: Added Jason Orendorff's "path" module to
1518 IPython tree, http://www.jorendorff.com/articles/python/path/.
1521 IPython tree, http://www.jorendorff.com/articles/python/path/.
1519 You can get path objects conveniently through %sc, and !!, e.g.:
1522 You can get path objects conveniently through %sc, and !!, e.g.:
1520 sc files=ls
1523 sc files=ls
1521 for p in files.paths: # or files.p
1524 for p in files.paths: # or files.p
1522 print p,p.mtime
1525 print p,p.mtime
1523
1526
1524 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1527 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
1525 now work again without considering the exclusion regexp -
1528 now work again without considering the exclusion regexp -
1526 hence, things like ',foo my/path' turn to 'foo("my/path")'
1529 hence, things like ',foo my/path' turn to 'foo("my/path")'
1527 instead of syntax error.
1530 instead of syntax error.
1528
1531
1529
1532
1530 2006-01-14 Ville Vainio <vivainio@gmail.com>
1533 2006-01-14 Ville Vainio <vivainio@gmail.com>
1531
1534
1532 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1535 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
1533 ipapi decorators for python 2.4 users, options() provides access to rc
1536 ipapi decorators for python 2.4 users, options() provides access to rc
1534 data.
1537 data.
1535
1538
1536 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1539 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
1537 as path separators (even on Linux ;-). Space character after
1540 as path separators (even on Linux ;-). Space character after
1538 backslash (as yielded by tab completer) is still space;
1541 backslash (as yielded by tab completer) is still space;
1539 "%cd long\ name" works as expected.
1542 "%cd long\ name" works as expected.
1540
1543
1541 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1544 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
1542 as "chain of command", with priority. API stays the same,
1545 as "chain of command", with priority. API stays the same,
1543 TryNext exception raised by a hook function signals that
1546 TryNext exception raised by a hook function signals that
1544 current hook failed and next hook should try handling it, as
1547 current hook failed and next hook should try handling it, as
1545 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1548 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
1546 requested configurable display hook, which is now implemented.
1549 requested configurable display hook, which is now implemented.
1547
1550
1548 2006-01-13 Ville Vainio <vivainio@gmail.com>
1551 2006-01-13 Ville Vainio <vivainio@gmail.com>
1549
1552
1550 * IPython/platutils*.py: platform specific utility functions,
1553 * IPython/platutils*.py: platform specific utility functions,
1551 so far only set_term_title is implemented (change terminal
1554 so far only set_term_title is implemented (change terminal
1552 label in windowing systems). %cd now changes the title to
1555 label in windowing systems). %cd now changes the title to
1553 current dir.
1556 current dir.
1554
1557
1555 * IPython/Release.py: Added myself to "authors" list,
1558 * IPython/Release.py: Added myself to "authors" list,
1556 had to create new files.
1559 had to create new files.
1557
1560
1558 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1561 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
1559 shell escape; not a known bug but had potential to be one in the
1562 shell escape; not a known bug but had potential to be one in the
1560 future.
1563 future.
1561
1564
1562 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1565 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
1563 extension API for IPython! See the module for usage example. Fix
1566 extension API for IPython! See the module for usage example. Fix
1564 OInspect for docstring-less magic functions.
1567 OInspect for docstring-less magic functions.
1565
1568
1566
1569
1567 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1570 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
1568
1571
1569 * IPython/iplib.py (raw_input): temporarily deactivate all
1572 * IPython/iplib.py (raw_input): temporarily deactivate all
1570 attempts at allowing pasting of code with autoindent on. It
1573 attempts at allowing pasting of code with autoindent on. It
1571 introduced bugs (reported by Prabhu) and I can't seem to find a
1574 introduced bugs (reported by Prabhu) and I can't seem to find a
1572 robust combination which works in all cases. Will have to revisit
1575 robust combination which works in all cases. Will have to revisit
1573 later.
1576 later.
1574
1577
1575 * IPython/genutils.py: remove isspace() function. We've dropped
1578 * IPython/genutils.py: remove isspace() function. We've dropped
1576 2.2 compatibility, so it's OK to use the string method.
1579 2.2 compatibility, so it's OK to use the string method.
1577
1580
1578 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1581 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1579
1582
1580 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1583 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
1581 matching what NOT to autocall on, to include all python binary
1584 matching what NOT to autocall on, to include all python binary
1582 operators (including things like 'and', 'or', 'is' and 'in').
1585 operators (including things like 'and', 'or', 'is' and 'in').
1583 Prompted by a bug report on 'foo & bar', but I realized we had
1586 Prompted by a bug report on 'foo & bar', but I realized we had
1584 many more potential bug cases with other operators. The regexp is
1587 many more potential bug cases with other operators. The regexp is
1585 self.re_exclude_auto, it's fairly commented.
1588 self.re_exclude_auto, it's fairly commented.
1586
1589
1587 2006-01-12 Ville Vainio <vivainio@gmail.com>
1590 2006-01-12 Ville Vainio <vivainio@gmail.com>
1588
1591
1589 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1592 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
1590 Prettified and hardened string/backslash quoting with ipsystem(),
1593 Prettified and hardened string/backslash quoting with ipsystem(),
1591 ipalias() and ipmagic(). Now even \ characters are passed to
1594 ipalias() and ipmagic(). Now even \ characters are passed to
1592 %magics, !shell escapes and aliases exactly as they are in the
1595 %magics, !shell escapes and aliases exactly as they are in the
1593 ipython command line. Should improve backslash experience,
1596 ipython command line. Should improve backslash experience,
1594 particularly in Windows (path delimiter for some commands that
1597 particularly in Windows (path delimiter for some commands that
1595 won't understand '/'), but Unix benefits as well (regexps). %cd
1598 won't understand '/'), but Unix benefits as well (regexps). %cd
1596 magic still doesn't support backslash path delimiters, though. Also
1599 magic still doesn't support backslash path delimiters, though. Also
1597 deleted all pretense of supporting multiline command strings in
1600 deleted all pretense of supporting multiline command strings in
1598 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1601 !system or %magic commands. Thanks to Jerry McRae for suggestions.
1599
1602
1600 * doc/build_doc_instructions.txt added. Documentation on how to
1603 * doc/build_doc_instructions.txt added. Documentation on how to
1601 use doc/update_manual.py, added yesterday. Both files contributed
1604 use doc/update_manual.py, added yesterday. Both files contributed
1602 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1605 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
1603 doc/*.sh for deprecation at a later date.
1606 doc/*.sh for deprecation at a later date.
1604
1607
1605 * /ipython.py Added ipython.py to root directory for
1608 * /ipython.py Added ipython.py to root directory for
1606 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1609 zero-installation (tar xzvf ipython.tgz; cd ipython; python
1607 ipython.py) and development convenience (no need to keep doing
1610 ipython.py) and development convenience (no need to keep doing
1608 "setup.py install" between changes).
1611 "setup.py install" between changes).
1609
1612
1610 * Made ! and !! shell escapes work (again) in multiline expressions:
1613 * Made ! and !! shell escapes work (again) in multiline expressions:
1611 if 1:
1614 if 1:
1612 !ls
1615 !ls
1613 !!ls
1616 !!ls
1614
1617
1615 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1618 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
1616
1619
1617 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1620 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
1618 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1621 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
1619 module in case-insensitive installation. Was causing crashes
1622 module in case-insensitive installation. Was causing crashes
1620 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1623 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
1621
1624
1622 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1625 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
1623 <marienz-AT-gentoo.org>, closes
1626 <marienz-AT-gentoo.org>, closes
1624 http://www.scipy.net/roundup/ipython/issue51.
1627 http://www.scipy.net/roundup/ipython/issue51.
1625
1628
1626 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1629 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
1627
1630
1628 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1631 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
1629 problem of excessive CPU usage under *nix and keyboard lag under
1632 problem of excessive CPU usage under *nix and keyboard lag under
1630 win32.
1633 win32.
1631
1634
1632 2006-01-10 *** Released version 0.7.0
1635 2006-01-10 *** Released version 0.7.0
1633
1636
1634 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1637 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
1635
1638
1636 * IPython/Release.py (revision): tag version number to 0.7.0,
1639 * IPython/Release.py (revision): tag version number to 0.7.0,
1637 ready for release.
1640 ready for release.
1638
1641
1639 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1642 * IPython/Magic.py (magic_edit): Add print statement to %edit so
1640 it informs the user of the name of the temp. file used. This can
1643 it informs the user of the name of the temp. file used. This can
1641 help if you decide later to reuse that same file, so you know
1644 help if you decide later to reuse that same file, so you know
1642 where to copy the info from.
1645 where to copy the info from.
1643
1646
1644 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1647 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
1645
1648
1646 * setup_bdist_egg.py: little script to build an egg. Added
1649 * setup_bdist_egg.py: little script to build an egg. Added
1647 support in the release tools as well.
1650 support in the release tools as well.
1648
1651
1649 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1652 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
1650
1653
1651 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1654 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
1652 version selection (new -wxversion command line and ipythonrc
1655 version selection (new -wxversion command line and ipythonrc
1653 parameter). Patch contributed by Arnd Baecker
1656 parameter). Patch contributed by Arnd Baecker
1654 <arnd.baecker-AT-web.de>.
1657 <arnd.baecker-AT-web.de>.
1655
1658
1656 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1659 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1657 embedded instances, for variables defined at the interactive
1660 embedded instances, for variables defined at the interactive
1658 prompt of the embedded ipython. Reported by Arnd.
1661 prompt of the embedded ipython. Reported by Arnd.
1659
1662
1660 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1663 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
1661 it can be used as a (stateful) toggle, or with a direct parameter.
1664 it can be used as a (stateful) toggle, or with a direct parameter.
1662
1665
1663 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1666 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
1664 could be triggered in certain cases and cause the traceback
1667 could be triggered in certain cases and cause the traceback
1665 printer not to work.
1668 printer not to work.
1666
1669
1667 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1670 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
1668
1671
1669 * IPython/iplib.py (_should_recompile): Small fix, closes
1672 * IPython/iplib.py (_should_recompile): Small fix, closes
1670 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1673 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
1671
1674
1672 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1675 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
1673
1676
1674 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1677 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
1675 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1678 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
1676 Moad for help with tracking it down.
1679 Moad for help with tracking it down.
1677
1680
1678 * IPython/iplib.py (handle_auto): fix autocall handling for
1681 * IPython/iplib.py (handle_auto): fix autocall handling for
1679 objects which support BOTH __getitem__ and __call__ (so that f [x]
1682 objects which support BOTH __getitem__ and __call__ (so that f [x]
1680 is left alone, instead of becoming f([x]) automatically).
1683 is left alone, instead of becoming f([x]) automatically).
1681
1684
1682 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1685 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
1683 Ville's patch.
1686 Ville's patch.
1684
1687
1685 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1688 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
1686
1689
1687 * IPython/iplib.py (handle_auto): changed autocall semantics to
1690 * IPython/iplib.py (handle_auto): changed autocall semantics to
1688 include 'smart' mode, where the autocall transformation is NOT
1691 include 'smart' mode, where the autocall transformation is NOT
1689 applied if there are no arguments on the line. This allows you to
1692 applied if there are no arguments on the line. This allows you to
1690 just type 'foo' if foo is a callable to see its internal form,
1693 just type 'foo' if foo is a callable to see its internal form,
1691 instead of having it called with no arguments (typically a
1694 instead of having it called with no arguments (typically a
1692 mistake). The old 'full' autocall still exists: for that, you
1695 mistake). The old 'full' autocall still exists: for that, you
1693 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1696 need to set the 'autocall' parameter to 2 in your ipythonrc file.
1694
1697
1695 * IPython/completer.py (Completer.attr_matches): add
1698 * IPython/completer.py (Completer.attr_matches): add
1696 tab-completion support for Enthoughts' traits. After a report by
1699 tab-completion support for Enthoughts' traits. After a report by
1697 Arnd and a patch by Prabhu.
1700 Arnd and a patch by Prabhu.
1698
1701
1699 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1702 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
1700
1703
1701 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1704 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
1702 Schmolck's patch to fix inspect.getinnerframes().
1705 Schmolck's patch to fix inspect.getinnerframes().
1703
1706
1704 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1707 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
1705 for embedded instances, regarding handling of namespaces and items
1708 for embedded instances, regarding handling of namespaces and items
1706 added to the __builtin__ one. Multiple embedded instances and
1709 added to the __builtin__ one. Multiple embedded instances and
1707 recursive embeddings should work better now (though I'm not sure
1710 recursive embeddings should work better now (though I'm not sure
1708 I've got all the corner cases fixed, that code is a bit of a brain
1711 I've got all the corner cases fixed, that code is a bit of a brain
1709 twister).
1712 twister).
1710
1713
1711 * IPython/Magic.py (magic_edit): added support to edit in-memory
1714 * IPython/Magic.py (magic_edit): added support to edit in-memory
1712 macros (automatically creates the necessary temp files). %edit
1715 macros (automatically creates the necessary temp files). %edit
1713 also doesn't return the file contents anymore, it's just noise.
1716 also doesn't return the file contents anymore, it's just noise.
1714
1717
1715 * IPython/completer.py (Completer.attr_matches): revert change to
1718 * IPython/completer.py (Completer.attr_matches): revert change to
1716 complete only on attributes listed in __all__. I realized it
1719 complete only on attributes listed in __all__. I realized it
1717 cripples the tab-completion system as a tool for exploring the
1720 cripples the tab-completion system as a tool for exploring the
1718 internals of unknown libraries (it renders any non-__all__
1721 internals of unknown libraries (it renders any non-__all__
1719 attribute off-limits). I got bit by this when trying to see
1722 attribute off-limits). I got bit by this when trying to see
1720 something inside the dis module.
1723 something inside the dis module.
1721
1724
1722 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1725 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
1723
1726
1724 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1727 * IPython/iplib.py (InteractiveShell.__init__): add .meta
1725 namespace for users and extension writers to hold data in. This
1728 namespace for users and extension writers to hold data in. This
1726 follows the discussion in
1729 follows the discussion in
1727 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1730 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
1728
1731
1729 * IPython/completer.py (IPCompleter.complete): small patch to help
1732 * IPython/completer.py (IPCompleter.complete): small patch to help
1730 tab-completion under Emacs, after a suggestion by John Barnard
1733 tab-completion under Emacs, after a suggestion by John Barnard
1731 <barnarj-AT-ccf.org>.
1734 <barnarj-AT-ccf.org>.
1732
1735
1733 * IPython/Magic.py (Magic.extract_input_slices): added support for
1736 * IPython/Magic.py (Magic.extract_input_slices): added support for
1734 the slice notation in magics to use N-M to represent numbers N...M
1737 the slice notation in magics to use N-M to represent numbers N...M
1735 (closed endpoints). This is used by %macro and %save.
1738 (closed endpoints). This is used by %macro and %save.
1736
1739
1737 * IPython/completer.py (Completer.attr_matches): for modules which
1740 * IPython/completer.py (Completer.attr_matches): for modules which
1738 define __all__, complete only on those. After a patch by Jeffrey
1741 define __all__, complete only on those. After a patch by Jeffrey
1739 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1742 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
1740 speed up this routine.
1743 speed up this routine.
1741
1744
1742 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1745 * IPython/Logger.py (Logger.log): fix a history handling bug. I
1743 don't know if this is the end of it, but the behavior now is
1746 don't know if this is the end of it, but the behavior now is
1744 certainly much more correct. Note that coupled with macros,
1747 certainly much more correct. Note that coupled with macros,
1745 slightly surprising (at first) behavior may occur: a macro will in
1748 slightly surprising (at first) behavior may occur: a macro will in
1746 general expand to multiple lines of input, so upon exiting, the
1749 general expand to multiple lines of input, so upon exiting, the
1747 in/out counters will both be bumped by the corresponding amount
1750 in/out counters will both be bumped by the corresponding amount
1748 (as if the macro's contents had been typed interactively). Typing
1751 (as if the macro's contents had been typed interactively). Typing
1749 %hist will reveal the intermediate (silently processed) lines.
1752 %hist will reveal the intermediate (silently processed) lines.
1750
1753
1751 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1754 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
1752 pickle to fail (%run was overwriting __main__ and not restoring
1755 pickle to fail (%run was overwriting __main__ and not restoring
1753 it, but pickle relies on __main__ to operate).
1756 it, but pickle relies on __main__ to operate).
1754
1757
1755 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1758 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
1756 using properties, but forgot to make the main InteractiveShell
1759 using properties, but forgot to make the main InteractiveShell
1757 class a new-style class. Properties fail silently, and
1760 class a new-style class. Properties fail silently, and
1758 mysteriously, with old-style class (getters work, but
1761 mysteriously, with old-style class (getters work, but
1759 setters don't do anything).
1762 setters don't do anything).
1760
1763
1761 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1764 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
1762
1765
1763 * IPython/Magic.py (magic_history): fix history reporting bug (I
1766 * IPython/Magic.py (magic_history): fix history reporting bug (I
1764 know some nasties are still there, I just can't seem to find a
1767 know some nasties are still there, I just can't seem to find a
1765 reproducible test case to track them down; the input history is
1768 reproducible test case to track them down; the input history is
1766 falling out of sync...)
1769 falling out of sync...)
1767
1770
1768 * IPython/iplib.py (handle_shell_escape): fix bug where both
1771 * IPython/iplib.py (handle_shell_escape): fix bug where both
1769 aliases and system accesses where broken for indented code (such
1772 aliases and system accesses where broken for indented code (such
1770 as loops).
1773 as loops).
1771
1774
1772 * IPython/genutils.py (shell): fix small but critical bug for
1775 * IPython/genutils.py (shell): fix small but critical bug for
1773 win32 system access.
1776 win32 system access.
1774
1777
1775 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1778 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
1776
1779
1777 * IPython/iplib.py (showtraceback): remove use of the
1780 * IPython/iplib.py (showtraceback): remove use of the
1778 sys.last_{type/value/traceback} structures, which are non
1781 sys.last_{type/value/traceback} structures, which are non
1779 thread-safe.
1782 thread-safe.
1780 (_prefilter): change control flow to ensure that we NEVER
1783 (_prefilter): change control flow to ensure that we NEVER
1781 introspect objects when autocall is off. This will guarantee that
1784 introspect objects when autocall is off. This will guarantee that
1782 having an input line of the form 'x.y', where access to attribute
1785 having an input line of the form 'x.y', where access to attribute
1783 'y' has side effects, doesn't trigger the side effect TWICE. It
1786 'y' has side effects, doesn't trigger the side effect TWICE. It
1784 is important to note that, with autocall on, these side effects
1787 is important to note that, with autocall on, these side effects
1785 can still happen.
1788 can still happen.
1786 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1789 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1787 trio. IPython offers these three kinds of special calls which are
1790 trio. IPython offers these three kinds of special calls which are
1788 not python code, and it's a good thing to have their call method
1791 not python code, and it's a good thing to have their call method
1789 be accessible as pure python functions (not just special syntax at
1792 be accessible as pure python functions (not just special syntax at
1790 the command line). It gives us a better internal implementation
1793 the command line). It gives us a better internal implementation
1791 structure, as well as exposing these for user scripting more
1794 structure, as well as exposing these for user scripting more
1792 cleanly.
1795 cleanly.
1793
1796
1794 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1797 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1795 file. Now that they'll be more likely to be used with the
1798 file. Now that they'll be more likely to be used with the
1796 persistance system (%store), I want to make sure their module path
1799 persistance system (%store), I want to make sure their module path
1797 doesn't change in the future, so that we don't break things for
1800 doesn't change in the future, so that we don't break things for
1798 users' persisted data.
1801 users' persisted data.
1799
1802
1800 * IPython/iplib.py (autoindent_update): move indentation
1803 * IPython/iplib.py (autoindent_update): move indentation
1801 management into the _text_ processing loop, not the keyboard
1804 management into the _text_ processing loop, not the keyboard
1802 interactive one. This is necessary to correctly process non-typed
1805 interactive one. This is necessary to correctly process non-typed
1803 multiline input (such as macros).
1806 multiline input (such as macros).
1804
1807
1805 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1808 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1806 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1809 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1807 which was producing problems in the resulting manual.
1810 which was producing problems in the resulting manual.
1808 (magic_whos): improve reporting of instances (show their class,
1811 (magic_whos): improve reporting of instances (show their class,
1809 instead of simply printing 'instance' which isn't terribly
1812 instead of simply printing 'instance' which isn't terribly
1810 informative).
1813 informative).
1811
1814
1812 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1815 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1813 (minor mods) to support network shares under win32.
1816 (minor mods) to support network shares under win32.
1814
1817
1815 * IPython/winconsole.py (get_console_size): add new winconsole
1818 * IPython/winconsole.py (get_console_size): add new winconsole
1816 module and fixes to page_dumb() to improve its behavior under
1819 module and fixes to page_dumb() to improve its behavior under
1817 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1820 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1818
1821
1819 * IPython/Magic.py (Macro): simplified Macro class to just
1822 * IPython/Magic.py (Macro): simplified Macro class to just
1820 subclass list. We've had only 2.2 compatibility for a very long
1823 subclass list. We've had only 2.2 compatibility for a very long
1821 time, yet I was still avoiding subclassing the builtin types. No
1824 time, yet I was still avoiding subclassing the builtin types. No
1822 more (I'm also starting to use properties, though I won't shift to
1825 more (I'm also starting to use properties, though I won't shift to
1823 2.3-specific features quite yet).
1826 2.3-specific features quite yet).
1824 (magic_store): added Ville's patch for lightweight variable
1827 (magic_store): added Ville's patch for lightweight variable
1825 persistence, after a request on the user list by Matt Wilkie
1828 persistence, after a request on the user list by Matt Wilkie
1826 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1829 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1827 details.
1830 details.
1828
1831
1829 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1832 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1830 changed the default logfile name from 'ipython.log' to
1833 changed the default logfile name from 'ipython.log' to
1831 'ipython_log.py'. These logs are real python files, and now that
1834 'ipython_log.py'. These logs are real python files, and now that
1832 we have much better multiline support, people are more likely to
1835 we have much better multiline support, people are more likely to
1833 want to use them as such. Might as well name them correctly.
1836 want to use them as such. Might as well name them correctly.
1834
1837
1835 * IPython/Magic.py: substantial cleanup. While we can't stop
1838 * IPython/Magic.py: substantial cleanup. While we can't stop
1836 using magics as mixins, due to the existing customizations 'out
1839 using magics as mixins, due to the existing customizations 'out
1837 there' which rely on the mixin naming conventions, at least I
1840 there' which rely on the mixin naming conventions, at least I
1838 cleaned out all cross-class name usage. So once we are OK with
1841 cleaned out all cross-class name usage. So once we are OK with
1839 breaking compatibility, the two systems can be separated.
1842 breaking compatibility, the two systems can be separated.
1840
1843
1841 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1844 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1842 anymore, and the class is a fair bit less hideous as well. New
1845 anymore, and the class is a fair bit less hideous as well. New
1843 features were also introduced: timestamping of input, and logging
1846 features were also introduced: timestamping of input, and logging
1844 of output results. These are user-visible with the -t and -o
1847 of output results. These are user-visible with the -t and -o
1845 options to %logstart. Closes
1848 options to %logstart. Closes
1846 http://www.scipy.net/roundup/ipython/issue11 and a request by
1849 http://www.scipy.net/roundup/ipython/issue11 and a request by
1847 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1850 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1848
1851
1849 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1852 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1850
1853
1851 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1854 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1852 better handle backslashes in paths. See the thread 'More Windows
1855 better handle backslashes in paths. See the thread 'More Windows
1853 questions part 2 - \/ characters revisited' on the iypthon user
1856 questions part 2 - \/ characters revisited' on the iypthon user
1854 list:
1857 list:
1855 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1858 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1856
1859
1857 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1860 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1858
1861
1859 (InteractiveShell.__init__): change threaded shells to not use the
1862 (InteractiveShell.__init__): change threaded shells to not use the
1860 ipython crash handler. This was causing more problems than not,
1863 ipython crash handler. This was causing more problems than not,
1861 as exceptions in the main thread (GUI code, typically) would
1864 as exceptions in the main thread (GUI code, typically) would
1862 always show up as a 'crash', when they really weren't.
1865 always show up as a 'crash', when they really weren't.
1863
1866
1864 The colors and exception mode commands (%colors/%xmode) have been
1867 The colors and exception mode commands (%colors/%xmode) have been
1865 synchronized to also take this into account, so users can get
1868 synchronized to also take this into account, so users can get
1866 verbose exceptions for their threaded code as well. I also added
1869 verbose exceptions for their threaded code as well. I also added
1867 support for activating pdb inside this exception handler as well,
1870 support for activating pdb inside this exception handler as well,
1868 so now GUI authors can use IPython's enhanced pdb at runtime.
1871 so now GUI authors can use IPython's enhanced pdb at runtime.
1869
1872
1870 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1873 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1871 true by default, and add it to the shipped ipythonrc file. Since
1874 true by default, and add it to the shipped ipythonrc file. Since
1872 this asks the user before proceeding, I think it's OK to make it
1875 this asks the user before proceeding, I think it's OK to make it
1873 true by default.
1876 true by default.
1874
1877
1875 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1878 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1876 of the previous special-casing of input in the eval loop. I think
1879 of the previous special-casing of input in the eval loop. I think
1877 this is cleaner, as they really are commands and shouldn't have
1880 this is cleaner, as they really are commands and shouldn't have
1878 a special role in the middle of the core code.
1881 a special role in the middle of the core code.
1879
1882
1880 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1883 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1881
1884
1882 * IPython/iplib.py (edit_syntax_error): added support for
1885 * IPython/iplib.py (edit_syntax_error): added support for
1883 automatically reopening the editor if the file had a syntax error
1886 automatically reopening the editor if the file had a syntax error
1884 in it. Thanks to scottt who provided the patch at:
1887 in it. Thanks to scottt who provided the patch at:
1885 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1888 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1886 version committed).
1889 version committed).
1887
1890
1888 * IPython/iplib.py (handle_normal): add suport for multi-line
1891 * IPython/iplib.py (handle_normal): add suport for multi-line
1889 input with emtpy lines. This fixes
1892 input with emtpy lines. This fixes
1890 http://www.scipy.net/roundup/ipython/issue43 and a similar
1893 http://www.scipy.net/roundup/ipython/issue43 and a similar
1891 discussion on the user list.
1894 discussion on the user list.
1892
1895
1893 WARNING: a behavior change is necessarily introduced to support
1896 WARNING: a behavior change is necessarily introduced to support
1894 blank lines: now a single blank line with whitespace does NOT
1897 blank lines: now a single blank line with whitespace does NOT
1895 break the input loop, which means that when autoindent is on, by
1898 break the input loop, which means that when autoindent is on, by
1896 default hitting return on the next (indented) line does NOT exit.
1899 default hitting return on the next (indented) line does NOT exit.
1897
1900
1898 Instead, to exit a multiline input you can either have:
1901 Instead, to exit a multiline input you can either have:
1899
1902
1900 - TWO whitespace lines (just hit return again), or
1903 - TWO whitespace lines (just hit return again), or
1901 - a single whitespace line of a different length than provided
1904 - a single whitespace line of a different length than provided
1902 by the autoindent (add or remove a space).
1905 by the autoindent (add or remove a space).
1903
1906
1904 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1907 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1905 module to better organize all readline-related functionality.
1908 module to better organize all readline-related functionality.
1906 I've deleted FlexCompleter and put all completion clases here.
1909 I've deleted FlexCompleter and put all completion clases here.
1907
1910
1908 * IPython/iplib.py (raw_input): improve indentation management.
1911 * IPython/iplib.py (raw_input): improve indentation management.
1909 It is now possible to paste indented code with autoindent on, and
1912 It is now possible to paste indented code with autoindent on, and
1910 the code is interpreted correctly (though it still looks bad on
1913 the code is interpreted correctly (though it still looks bad on
1911 screen, due to the line-oriented nature of ipython).
1914 screen, due to the line-oriented nature of ipython).
1912 (MagicCompleter.complete): change behavior so that a TAB key on an
1915 (MagicCompleter.complete): change behavior so that a TAB key on an
1913 otherwise empty line actually inserts a tab, instead of completing
1916 otherwise empty line actually inserts a tab, instead of completing
1914 on the entire global namespace. This makes it easier to use the
1917 on the entire global namespace. This makes it easier to use the
1915 TAB key for indentation. After a request by Hans Meine
1918 TAB key for indentation. After a request by Hans Meine
1916 <hans_meine-AT-gmx.net>
1919 <hans_meine-AT-gmx.net>
1917 (_prefilter): add support so that typing plain 'exit' or 'quit'
1920 (_prefilter): add support so that typing plain 'exit' or 'quit'
1918 does a sensible thing. Originally I tried to deviate as little as
1921 does a sensible thing. Originally I tried to deviate as little as
1919 possible from the default python behavior, but even that one may
1922 possible from the default python behavior, but even that one may
1920 change in this direction (thread on python-dev to that effect).
1923 change in this direction (thread on python-dev to that effect).
1921 Regardless, ipython should do the right thing even if CPython's
1924 Regardless, ipython should do the right thing even if CPython's
1922 '>>>' prompt doesn't.
1925 '>>>' prompt doesn't.
1923 (InteractiveShell): removed subclassing code.InteractiveConsole
1926 (InteractiveShell): removed subclassing code.InteractiveConsole
1924 class. By now we'd overridden just about all of its methods: I've
1927 class. By now we'd overridden just about all of its methods: I've
1925 copied the remaining two over, and now ipython is a standalone
1928 copied the remaining two over, and now ipython is a standalone
1926 class. This will provide a clearer picture for the chainsaw
1929 class. This will provide a clearer picture for the chainsaw
1927 branch refactoring.
1930 branch refactoring.
1928
1931
1929 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1932 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1930
1933
1931 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1934 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1932 failures for objects which break when dir() is called on them.
1935 failures for objects which break when dir() is called on them.
1933
1936
1934 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1937 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1935 distinct local and global namespaces in the completer API. This
1938 distinct local and global namespaces in the completer API. This
1936 change allows us to properly handle completion with distinct
1939 change allows us to properly handle completion with distinct
1937 scopes, including in embedded instances (this had never really
1940 scopes, including in embedded instances (this had never really
1938 worked correctly).
1941 worked correctly).
1939
1942
1940 Note: this introduces a change in the constructor for
1943 Note: this introduces a change in the constructor for
1941 MagicCompleter, as a new global_namespace parameter is now the
1944 MagicCompleter, as a new global_namespace parameter is now the
1942 second argument (the others were bumped one position).
1945 second argument (the others were bumped one position).
1943
1946
1944 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1947 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1945
1948
1946 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1949 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1947 embedded instances (which can be done now thanks to Vivian's
1950 embedded instances (which can be done now thanks to Vivian's
1948 frame-handling fixes for pdb).
1951 frame-handling fixes for pdb).
1949 (InteractiveShell.__init__): Fix namespace handling problem in
1952 (InteractiveShell.__init__): Fix namespace handling problem in
1950 embedded instances. We were overwriting __main__ unconditionally,
1953 embedded instances. We were overwriting __main__ unconditionally,
1951 and this should only be done for 'full' (non-embedded) IPython;
1954 and this should only be done for 'full' (non-embedded) IPython;
1952 embedded instances must respect the caller's __main__. Thanks to
1955 embedded instances must respect the caller's __main__. Thanks to
1953 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1956 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1954
1957
1955 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1958 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1956
1959
1957 * setup.py: added download_url to setup(). This registers the
1960 * setup.py: added download_url to setup(). This registers the
1958 download address at PyPI, which is not only useful to humans
1961 download address at PyPI, which is not only useful to humans
1959 browsing the site, but is also picked up by setuptools (the Eggs
1962 browsing the site, but is also picked up by setuptools (the Eggs
1960 machinery). Thanks to Ville and R. Kern for the info/discussion
1963 machinery). Thanks to Ville and R. Kern for the info/discussion
1961 on this.
1964 on this.
1962
1965
1963 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1966 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1964
1967
1965 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1968 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1966 This brings a lot of nice functionality to the pdb mode, which now
1969 This brings a lot of nice functionality to the pdb mode, which now
1967 has tab-completion, syntax highlighting, and better stack handling
1970 has tab-completion, syntax highlighting, and better stack handling
1968 than before. Many thanks to Vivian De Smedt
1971 than before. Many thanks to Vivian De Smedt
1969 <vivian-AT-vdesmedt.com> for the original patches.
1972 <vivian-AT-vdesmedt.com> for the original patches.
1970
1973
1971 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1974 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1972
1975
1973 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1976 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1974 sequence to consistently accept the banner argument. The
1977 sequence to consistently accept the banner argument. The
1975 inconsistency was tripping SAGE, thanks to Gary Zablackis
1978 inconsistency was tripping SAGE, thanks to Gary Zablackis
1976 <gzabl-AT-yahoo.com> for the report.
1979 <gzabl-AT-yahoo.com> for the report.
1977
1980
1978 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1981 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1979
1982
1980 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1983 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1981 Fix bug where a naked 'alias' call in the ipythonrc file would
1984 Fix bug where a naked 'alias' call in the ipythonrc file would
1982 cause a crash. Bug reported by Jorgen Stenarson.
1985 cause a crash. Bug reported by Jorgen Stenarson.
1983
1986
1984 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1987 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1985
1988
1986 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1989 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1987 startup time.
1990 startup time.
1988
1991
1989 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1992 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1990 instances had introduced a bug with globals in normal code. Now
1993 instances had introduced a bug with globals in normal code. Now
1991 it's working in all cases.
1994 it's working in all cases.
1992
1995
1993 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1996 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1994 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1997 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1995 has been introduced to set the default case sensitivity of the
1998 has been introduced to set the default case sensitivity of the
1996 searches. Users can still select either mode at runtime on a
1999 searches. Users can still select either mode at runtime on a
1997 per-search basis.
2000 per-search basis.
1998
2001
1999 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2002 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2000
2003
2001 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2004 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2002 attributes in wildcard searches for subclasses. Modified version
2005 attributes in wildcard searches for subclasses. Modified version
2003 of a patch by Jorgen.
2006 of a patch by Jorgen.
2004
2007
2005 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2008 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2006
2009
2007 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2010 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2008 embedded instances. I added a user_global_ns attribute to the
2011 embedded instances. I added a user_global_ns attribute to the
2009 InteractiveShell class to handle this.
2012 InteractiveShell class to handle this.
2010
2013
2011 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2014 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2012
2015
2013 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2016 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2014 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2017 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2015 (reported under win32, but may happen also in other platforms).
2018 (reported under win32, but may happen also in other platforms).
2016 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2019 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2017
2020
2018 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2021 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2019
2022
2020 * IPython/Magic.py (magic_psearch): new support for wildcard
2023 * IPython/Magic.py (magic_psearch): new support for wildcard
2021 patterns. Now, typing ?a*b will list all names which begin with a
2024 patterns. Now, typing ?a*b will list all names which begin with a
2022 and end in b, for example. The %psearch magic has full
2025 and end in b, for example. The %psearch magic has full
2023 docstrings. Many thanks to JΓΆrgen Stenarson
2026 docstrings. Many thanks to JΓΆrgen Stenarson
2024 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2027 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2025 implementing this functionality.
2028 implementing this functionality.
2026
2029
2027 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2030 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2028
2031
2029 * Manual: fixed long-standing annoyance of double-dashes (as in
2032 * Manual: fixed long-standing annoyance of double-dashes (as in
2030 --prefix=~, for example) being stripped in the HTML version. This
2033 --prefix=~, for example) being stripped in the HTML version. This
2031 is a latex2html bug, but a workaround was provided. Many thanks
2034 is a latex2html bug, but a workaround was provided. Many thanks
2032 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2035 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2033 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2036 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2034 rolling. This seemingly small issue had tripped a number of users
2037 rolling. This seemingly small issue had tripped a number of users
2035 when first installing, so I'm glad to see it gone.
2038 when first installing, so I'm glad to see it gone.
2036
2039
2037 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2040 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2038
2041
2039 * IPython/Extensions/numeric_formats.py: fix missing import,
2042 * IPython/Extensions/numeric_formats.py: fix missing import,
2040 reported by Stephen Walton.
2043 reported by Stephen Walton.
2041
2044
2042 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2045 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2043
2046
2044 * IPython/demo.py: finish demo module, fully documented now.
2047 * IPython/demo.py: finish demo module, fully documented now.
2045
2048
2046 * IPython/genutils.py (file_read): simple little utility to read a
2049 * IPython/genutils.py (file_read): simple little utility to read a
2047 file and ensure it's closed afterwards.
2050 file and ensure it's closed afterwards.
2048
2051
2049 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2052 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2050
2053
2051 * IPython/demo.py (Demo.__init__): added support for individually
2054 * IPython/demo.py (Demo.__init__): added support for individually
2052 tagging blocks for automatic execution.
2055 tagging blocks for automatic execution.
2053
2056
2054 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2057 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2055 syntax-highlighted python sources, requested by John.
2058 syntax-highlighted python sources, requested by John.
2056
2059
2057 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2060 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2058
2061
2059 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2062 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2060 finishing.
2063 finishing.
2061
2064
2062 * IPython/genutils.py (shlex_split): moved from Magic to here,
2065 * IPython/genutils.py (shlex_split): moved from Magic to here,
2063 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2066 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2064
2067
2065 * IPython/demo.py (Demo.__init__): added support for silent
2068 * IPython/demo.py (Demo.__init__): added support for silent
2066 blocks, improved marks as regexps, docstrings written.
2069 blocks, improved marks as regexps, docstrings written.
2067 (Demo.__init__): better docstring, added support for sys.argv.
2070 (Demo.__init__): better docstring, added support for sys.argv.
2068
2071
2069 * IPython/genutils.py (marquee): little utility used by the demo
2072 * IPython/genutils.py (marquee): little utility used by the demo
2070 code, handy in general.
2073 code, handy in general.
2071
2074
2072 * IPython/demo.py (Demo.__init__): new class for interactive
2075 * IPython/demo.py (Demo.__init__): new class for interactive
2073 demos. Not documented yet, I just wrote it in a hurry for
2076 demos. Not documented yet, I just wrote it in a hurry for
2074 scipy'05. Will docstring later.
2077 scipy'05. Will docstring later.
2075
2078
2076 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2079 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2077
2080
2078 * IPython/Shell.py (sigint_handler): Drastic simplification which
2081 * IPython/Shell.py (sigint_handler): Drastic simplification which
2079 also seems to make Ctrl-C work correctly across threads! This is
2082 also seems to make Ctrl-C work correctly across threads! This is
2080 so simple, that I can't beleive I'd missed it before. Needs more
2083 so simple, that I can't beleive I'd missed it before. Needs more
2081 testing, though.
2084 testing, though.
2082 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2085 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2083 like this before...
2086 like this before...
2084
2087
2085 * IPython/genutils.py (get_home_dir): add protection against
2088 * IPython/genutils.py (get_home_dir): add protection against
2086 non-dirs in win32 registry.
2089 non-dirs in win32 registry.
2087
2090
2088 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2091 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2089 bug where dict was mutated while iterating (pysh crash).
2092 bug where dict was mutated while iterating (pysh crash).
2090
2093
2091 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2094 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2092
2095
2093 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2096 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2094 spurious newlines added by this routine. After a report by
2097 spurious newlines added by this routine. After a report by
2095 F. Mantegazza.
2098 F. Mantegazza.
2096
2099
2097 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2100 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2098
2101
2099 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2102 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2100 calls. These were a leftover from the GTK 1.x days, and can cause
2103 calls. These were a leftover from the GTK 1.x days, and can cause
2101 problems in certain cases (after a report by John Hunter).
2104 problems in certain cases (after a report by John Hunter).
2102
2105
2103 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2106 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2104 os.getcwd() fails at init time. Thanks to patch from David Remahl
2107 os.getcwd() fails at init time. Thanks to patch from David Remahl
2105 <chmod007-AT-mac.com>.
2108 <chmod007-AT-mac.com>.
2106 (InteractiveShell.__init__): prevent certain special magics from
2109 (InteractiveShell.__init__): prevent certain special magics from
2107 being shadowed by aliases. Closes
2110 being shadowed by aliases. Closes
2108 http://www.scipy.net/roundup/ipython/issue41.
2111 http://www.scipy.net/roundup/ipython/issue41.
2109
2112
2110 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2113 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2111
2114
2112 * IPython/iplib.py (InteractiveShell.complete): Added new
2115 * IPython/iplib.py (InteractiveShell.complete): Added new
2113 top-level completion method to expose the completion mechanism
2116 top-level completion method to expose the completion mechanism
2114 beyond readline-based environments.
2117 beyond readline-based environments.
2115
2118
2116 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2119 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2117
2120
2118 * tools/ipsvnc (svnversion): fix svnversion capture.
2121 * tools/ipsvnc (svnversion): fix svnversion capture.
2119
2122
2120 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2123 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2121 attribute to self, which was missing. Before, it was set by a
2124 attribute to self, which was missing. Before, it was set by a
2122 routine which in certain cases wasn't being called, so the
2125 routine which in certain cases wasn't being called, so the
2123 instance could end up missing the attribute. This caused a crash.
2126 instance could end up missing the attribute. This caused a crash.
2124 Closes http://www.scipy.net/roundup/ipython/issue40.
2127 Closes http://www.scipy.net/roundup/ipython/issue40.
2125
2128
2126 2005-08-16 Fernando Perez <fperez@colorado.edu>
2129 2005-08-16 Fernando Perez <fperez@colorado.edu>
2127
2130
2128 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2131 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2129 contains non-string attribute. Closes
2132 contains non-string attribute. Closes
2130 http://www.scipy.net/roundup/ipython/issue38.
2133 http://www.scipy.net/roundup/ipython/issue38.
2131
2134
2132 2005-08-14 Fernando Perez <fperez@colorado.edu>
2135 2005-08-14 Fernando Perez <fperez@colorado.edu>
2133
2136
2134 * tools/ipsvnc: Minor improvements, to add changeset info.
2137 * tools/ipsvnc: Minor improvements, to add changeset info.
2135
2138
2136 2005-08-12 Fernando Perez <fperez@colorado.edu>
2139 2005-08-12 Fernando Perez <fperez@colorado.edu>
2137
2140
2138 * IPython/iplib.py (runsource): remove self.code_to_run_src
2141 * IPython/iplib.py (runsource): remove self.code_to_run_src
2139 attribute. I realized this is nothing more than
2142 attribute. I realized this is nothing more than
2140 '\n'.join(self.buffer), and having the same data in two different
2143 '\n'.join(self.buffer), and having the same data in two different
2141 places is just asking for synchronization bugs. This may impact
2144 places is just asking for synchronization bugs. This may impact
2142 people who have custom exception handlers, so I need to warn
2145 people who have custom exception handlers, so I need to warn
2143 ipython-dev about it (F. Mantegazza may use them).
2146 ipython-dev about it (F. Mantegazza may use them).
2144
2147
2145 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2148 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2146
2149
2147 * IPython/genutils.py: fix 2.2 compatibility (generators)
2150 * IPython/genutils.py: fix 2.2 compatibility (generators)
2148
2151
2149 2005-07-18 Fernando Perez <fperez@colorado.edu>
2152 2005-07-18 Fernando Perez <fperez@colorado.edu>
2150
2153
2151 * IPython/genutils.py (get_home_dir): fix to help users with
2154 * IPython/genutils.py (get_home_dir): fix to help users with
2152 invalid $HOME under win32.
2155 invalid $HOME under win32.
2153
2156
2154 2005-07-17 Fernando Perez <fperez@colorado.edu>
2157 2005-07-17 Fernando Perez <fperez@colorado.edu>
2155
2158
2156 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2159 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2157 some old hacks and clean up a bit other routines; code should be
2160 some old hacks and clean up a bit other routines; code should be
2158 simpler and a bit faster.
2161 simpler and a bit faster.
2159
2162
2160 * IPython/iplib.py (interact): removed some last-resort attempts
2163 * IPython/iplib.py (interact): removed some last-resort attempts
2161 to survive broken stdout/stderr. That code was only making it
2164 to survive broken stdout/stderr. That code was only making it
2162 harder to abstract out the i/o (necessary for gui integration),
2165 harder to abstract out the i/o (necessary for gui integration),
2163 and the crashes it could prevent were extremely rare in practice
2166 and the crashes it could prevent were extremely rare in practice
2164 (besides being fully user-induced in a pretty violent manner).
2167 (besides being fully user-induced in a pretty violent manner).
2165
2168
2166 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2169 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2167 Nothing major yet, but the code is simpler to read; this should
2170 Nothing major yet, but the code is simpler to read; this should
2168 make it easier to do more serious modifications in the future.
2171 make it easier to do more serious modifications in the future.
2169
2172
2170 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2173 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2171 which broke in .15 (thanks to a report by Ville).
2174 which broke in .15 (thanks to a report by Ville).
2172
2175
2173 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2176 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2174 be quite correct, I know next to nothing about unicode). This
2177 be quite correct, I know next to nothing about unicode). This
2175 will allow unicode strings to be used in prompts, amongst other
2178 will allow unicode strings to be used in prompts, amongst other
2176 cases. It also will prevent ipython from crashing when unicode
2179 cases. It also will prevent ipython from crashing when unicode
2177 shows up unexpectedly in many places. If ascii encoding fails, we
2180 shows up unexpectedly in many places. If ascii encoding fails, we
2178 assume utf_8. Currently the encoding is not a user-visible
2181 assume utf_8. Currently the encoding is not a user-visible
2179 setting, though it could be made so if there is demand for it.
2182 setting, though it could be made so if there is demand for it.
2180
2183
2181 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2184 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2182
2185
2183 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2186 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2184
2187
2185 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2188 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2186
2189
2187 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2190 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2188 code can work transparently for 2.2/2.3.
2191 code can work transparently for 2.2/2.3.
2189
2192
2190 2005-07-16 Fernando Perez <fperez@colorado.edu>
2193 2005-07-16 Fernando Perez <fperez@colorado.edu>
2191
2194
2192 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2195 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2193 out of the color scheme table used for coloring exception
2196 out of the color scheme table used for coloring exception
2194 tracebacks. This allows user code to add new schemes at runtime.
2197 tracebacks. This allows user code to add new schemes at runtime.
2195 This is a minimally modified version of the patch at
2198 This is a minimally modified version of the patch at
2196 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2199 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2197 for the contribution.
2200 for the contribution.
2198
2201
2199 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2202 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2200 slightly modified version of the patch in
2203 slightly modified version of the patch in
2201 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2204 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2202 to remove the previous try/except solution (which was costlier).
2205 to remove the previous try/except solution (which was costlier).
2203 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2206 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2204
2207
2205 2005-06-08 Fernando Perez <fperez@colorado.edu>
2208 2005-06-08 Fernando Perez <fperez@colorado.edu>
2206
2209
2207 * IPython/iplib.py (write/write_err): Add methods to abstract all
2210 * IPython/iplib.py (write/write_err): Add methods to abstract all
2208 I/O a bit more.
2211 I/O a bit more.
2209
2212
2210 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2213 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2211 warning, reported by Aric Hagberg, fix by JD Hunter.
2214 warning, reported by Aric Hagberg, fix by JD Hunter.
2212
2215
2213 2005-06-02 *** Released version 0.6.15
2216 2005-06-02 *** Released version 0.6.15
2214
2217
2215 2005-06-01 Fernando Perez <fperez@colorado.edu>
2218 2005-06-01 Fernando Perez <fperez@colorado.edu>
2216
2219
2217 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2220 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2218 tab-completion of filenames within open-quoted strings. Note that
2221 tab-completion of filenames within open-quoted strings. Note that
2219 this requires that in ~/.ipython/ipythonrc, users change the
2222 this requires that in ~/.ipython/ipythonrc, users change the
2220 readline delimiters configuration to read:
2223 readline delimiters configuration to read:
2221
2224
2222 readline_remove_delims -/~
2225 readline_remove_delims -/~
2223
2226
2224
2227
2225 2005-05-31 *** Released version 0.6.14
2228 2005-05-31 *** Released version 0.6.14
2226
2229
2227 2005-05-29 Fernando Perez <fperez@colorado.edu>
2230 2005-05-29 Fernando Perez <fperez@colorado.edu>
2228
2231
2229 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2232 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2230 with files not on the filesystem. Reported by Eliyahu Sandler
2233 with files not on the filesystem. Reported by Eliyahu Sandler
2231 <eli@gondolin.net>
2234 <eli@gondolin.net>
2232
2235
2233 2005-05-22 Fernando Perez <fperez@colorado.edu>
2236 2005-05-22 Fernando Perez <fperez@colorado.edu>
2234
2237
2235 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2238 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2236 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2239 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2237
2240
2238 2005-05-19 Fernando Perez <fperez@colorado.edu>
2241 2005-05-19 Fernando Perez <fperez@colorado.edu>
2239
2242
2240 * IPython/iplib.py (safe_execfile): close a file which could be
2243 * IPython/iplib.py (safe_execfile): close a file which could be
2241 left open (causing problems in win32, which locks open files).
2244 left open (causing problems in win32, which locks open files).
2242 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2245 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
2243
2246
2244 2005-05-18 Fernando Perez <fperez@colorado.edu>
2247 2005-05-18 Fernando Perez <fperez@colorado.edu>
2245
2248
2246 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2249 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
2247 keyword arguments correctly to safe_execfile().
2250 keyword arguments correctly to safe_execfile().
2248
2251
2249 2005-05-13 Fernando Perez <fperez@colorado.edu>
2252 2005-05-13 Fernando Perez <fperez@colorado.edu>
2250
2253
2251 * ipython.1: Added info about Qt to manpage, and threads warning
2254 * ipython.1: Added info about Qt to manpage, and threads warning
2252 to usage page (invoked with --help).
2255 to usage page (invoked with --help).
2253
2256
2254 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2257 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
2255 new matcher (it goes at the end of the priority list) to do
2258 new matcher (it goes at the end of the priority list) to do
2256 tab-completion on named function arguments. Submitted by George
2259 tab-completion on named function arguments. Submitted by George
2257 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2260 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
2258 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2261 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
2259 for more details.
2262 for more details.
2260
2263
2261 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2264 * IPython/Magic.py (magic_run): Added new -e flag to ignore
2262 SystemExit exceptions in the script being run. Thanks to a report
2265 SystemExit exceptions in the script being run. Thanks to a report
2263 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2266 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
2264 producing very annoying behavior when running unit tests.
2267 producing very annoying behavior when running unit tests.
2265
2268
2266 2005-05-12 Fernando Perez <fperez@colorado.edu>
2269 2005-05-12 Fernando Perez <fperez@colorado.edu>
2267
2270
2268 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2271 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
2269 which I'd broken (again) due to a changed regexp. In the process,
2272 which I'd broken (again) due to a changed regexp. In the process,
2270 added ';' as an escape to auto-quote the whole line without
2273 added ';' as an escape to auto-quote the whole line without
2271 splitting its arguments. Thanks to a report by Jerry McRae
2274 splitting its arguments. Thanks to a report by Jerry McRae
2272 <qrs0xyc02-AT-sneakemail.com>.
2275 <qrs0xyc02-AT-sneakemail.com>.
2273
2276
2274 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2277 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
2275 possible crashes caused by a TokenError. Reported by Ed Schofield
2278 possible crashes caused by a TokenError. Reported by Ed Schofield
2276 <schofield-AT-ftw.at>.
2279 <schofield-AT-ftw.at>.
2277
2280
2278 2005-05-06 Fernando Perez <fperez@colorado.edu>
2281 2005-05-06 Fernando Perez <fperez@colorado.edu>
2279
2282
2280 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2283 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
2281
2284
2282 2005-04-29 Fernando Perez <fperez@colorado.edu>
2285 2005-04-29 Fernando Perez <fperez@colorado.edu>
2283
2286
2284 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2287 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
2285 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2288 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
2286 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2289 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
2287 which provides support for Qt interactive usage (similar to the
2290 which provides support for Qt interactive usage (similar to the
2288 existing one for WX and GTK). This had been often requested.
2291 existing one for WX and GTK). This had been often requested.
2289
2292
2290 2005-04-14 *** Released version 0.6.13
2293 2005-04-14 *** Released version 0.6.13
2291
2294
2292 2005-04-08 Fernando Perez <fperez@colorado.edu>
2295 2005-04-08 Fernando Perez <fperez@colorado.edu>
2293
2296
2294 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2297 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
2295 from _ofind, which gets called on almost every input line. Now,
2298 from _ofind, which gets called on almost every input line. Now,
2296 we only try to get docstrings if they are actually going to be
2299 we only try to get docstrings if they are actually going to be
2297 used (the overhead of fetching unnecessary docstrings can be
2300 used (the overhead of fetching unnecessary docstrings can be
2298 noticeable for certain objects, such as Pyro proxies).
2301 noticeable for certain objects, such as Pyro proxies).
2299
2302
2300 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2303 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
2301 for completers. For some reason I had been passing them the state
2304 for completers. For some reason I had been passing them the state
2302 variable, which completers never actually need, and was in
2305 variable, which completers never actually need, and was in
2303 conflict with the rlcompleter API. Custom completers ONLY need to
2306 conflict with the rlcompleter API. Custom completers ONLY need to
2304 take the text parameter.
2307 take the text parameter.
2305
2308
2306 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2309 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
2307 work correctly in pysh. I've also moved all the logic which used
2310 work correctly in pysh. I've also moved all the logic which used
2308 to be in pysh.py here, which will prevent problems with future
2311 to be in pysh.py here, which will prevent problems with future
2309 upgrades. However, this time I must warn users to update their
2312 upgrades. However, this time I must warn users to update their
2310 pysh profile to include the line
2313 pysh profile to include the line
2311
2314
2312 import_all IPython.Extensions.InterpreterExec
2315 import_all IPython.Extensions.InterpreterExec
2313
2316
2314 because otherwise things won't work for them. They MUST also
2317 because otherwise things won't work for them. They MUST also
2315 delete pysh.py and the line
2318 delete pysh.py and the line
2316
2319
2317 execfile pysh.py
2320 execfile pysh.py
2318
2321
2319 from their ipythonrc-pysh.
2322 from their ipythonrc-pysh.
2320
2323
2321 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2324 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
2322 robust in the face of objects whose dir() returns non-strings
2325 robust in the face of objects whose dir() returns non-strings
2323 (which it shouldn't, but some broken libs like ITK do). Thanks to
2326 (which it shouldn't, but some broken libs like ITK do). Thanks to
2324 a patch by John Hunter (implemented differently, though). Also
2327 a patch by John Hunter (implemented differently, though). Also
2325 minor improvements by using .extend instead of + on lists.
2328 minor improvements by using .extend instead of + on lists.
2326
2329
2327 * pysh.py:
2330 * pysh.py:
2328
2331
2329 2005-04-06 Fernando Perez <fperez@colorado.edu>
2332 2005-04-06 Fernando Perez <fperez@colorado.edu>
2330
2333
2331 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2334 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
2332 by default, so that all users benefit from it. Those who don't
2335 by default, so that all users benefit from it. Those who don't
2333 want it can still turn it off.
2336 want it can still turn it off.
2334
2337
2335 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2338 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
2336 config file, I'd forgotten about this, so users were getting it
2339 config file, I'd forgotten about this, so users were getting it
2337 off by default.
2340 off by default.
2338
2341
2339 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2342 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
2340 consistency. Now magics can be called in multiline statements,
2343 consistency. Now magics can be called in multiline statements,
2341 and python variables can be expanded in magic calls via $var.
2344 and python variables can be expanded in magic calls via $var.
2342 This makes the magic system behave just like aliases or !system
2345 This makes the magic system behave just like aliases or !system
2343 calls.
2346 calls.
2344
2347
2345 2005-03-28 Fernando Perez <fperez@colorado.edu>
2348 2005-03-28 Fernando Perez <fperez@colorado.edu>
2346
2349
2347 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2350 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
2348 expensive string additions for building command. Add support for
2351 expensive string additions for building command. Add support for
2349 trailing ';' when autocall is used.
2352 trailing ';' when autocall is used.
2350
2353
2351 2005-03-26 Fernando Perez <fperez@colorado.edu>
2354 2005-03-26 Fernando Perez <fperez@colorado.edu>
2352
2355
2353 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2356 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
2354 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2357 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
2355 ipython.el robust against prompts with any number of spaces
2358 ipython.el robust against prompts with any number of spaces
2356 (including 0) after the ':' character.
2359 (including 0) after the ':' character.
2357
2360
2358 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2361 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
2359 continuation prompt, which misled users to think the line was
2362 continuation prompt, which misled users to think the line was
2360 already indented. Closes debian Bug#300847, reported to me by
2363 already indented. Closes debian Bug#300847, reported to me by
2361 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2364 Norbert Tretkowski <tretkowski-AT-inittab.de>.
2362
2365
2363 2005-03-23 Fernando Perez <fperez@colorado.edu>
2366 2005-03-23 Fernando Perez <fperez@colorado.edu>
2364
2367
2365 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2368 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
2366 properly aligned if they have embedded newlines.
2369 properly aligned if they have embedded newlines.
2367
2370
2368 * IPython/iplib.py (runlines): Add a public method to expose
2371 * IPython/iplib.py (runlines): Add a public method to expose
2369 IPython's code execution machinery, so that users can run strings
2372 IPython's code execution machinery, so that users can run strings
2370 as if they had been typed at the prompt interactively.
2373 as if they had been typed at the prompt interactively.
2371 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2374 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
2372 methods which can call the system shell, but with python variable
2375 methods which can call the system shell, but with python variable
2373 expansion. The three such methods are: __IPYTHON__.system,
2376 expansion. The three such methods are: __IPYTHON__.system,
2374 .getoutput and .getoutputerror. These need to be documented in a
2377 .getoutput and .getoutputerror. These need to be documented in a
2375 'public API' section (to be written) of the manual.
2378 'public API' section (to be written) of the manual.
2376
2379
2377 2005-03-20 Fernando Perez <fperez@colorado.edu>
2380 2005-03-20 Fernando Perez <fperez@colorado.edu>
2378
2381
2379 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2382 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
2380 for custom exception handling. This is quite powerful, and it
2383 for custom exception handling. This is quite powerful, and it
2381 allows for user-installable exception handlers which can trap
2384 allows for user-installable exception handlers which can trap
2382 custom exceptions at runtime and treat them separately from
2385 custom exceptions at runtime and treat them separately from
2383 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2386 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
2384 Mantegazza <mantegazza-AT-ill.fr>.
2387 Mantegazza <mantegazza-AT-ill.fr>.
2385 (InteractiveShell.set_custom_completer): public API function to
2388 (InteractiveShell.set_custom_completer): public API function to
2386 add new completers at runtime.
2389 add new completers at runtime.
2387
2390
2388 2005-03-19 Fernando Perez <fperez@colorado.edu>
2391 2005-03-19 Fernando Perez <fperez@colorado.edu>
2389
2392
2390 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2393 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
2391 allow objects which provide their docstrings via non-standard
2394 allow objects which provide their docstrings via non-standard
2392 mechanisms (like Pyro proxies) to still be inspected by ipython's
2395 mechanisms (like Pyro proxies) to still be inspected by ipython's
2393 ? system.
2396 ? system.
2394
2397
2395 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2398 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
2396 automatic capture system. I tried quite hard to make it work
2399 automatic capture system. I tried quite hard to make it work
2397 reliably, and simply failed. I tried many combinations with the
2400 reliably, and simply failed. I tried many combinations with the
2398 subprocess module, but eventually nothing worked in all needed
2401 subprocess module, but eventually nothing worked in all needed
2399 cases (not blocking stdin for the child, duplicating stdout
2402 cases (not blocking stdin for the child, duplicating stdout
2400 without blocking, etc). The new %sc/%sx still do capture to these
2403 without blocking, etc). The new %sc/%sx still do capture to these
2401 magical list/string objects which make shell use much more
2404 magical list/string objects which make shell use much more
2402 conveninent, so not all is lost.
2405 conveninent, so not all is lost.
2403
2406
2404 XXX - FIX MANUAL for the change above!
2407 XXX - FIX MANUAL for the change above!
2405
2408
2406 (runsource): I copied code.py's runsource() into ipython to modify
2409 (runsource): I copied code.py's runsource() into ipython to modify
2407 it a bit. Now the code object and source to be executed are
2410 it a bit. Now the code object and source to be executed are
2408 stored in ipython. This makes this info accessible to third-party
2411 stored in ipython. This makes this info accessible to third-party
2409 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2412 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
2410 Mantegazza <mantegazza-AT-ill.fr>.
2413 Mantegazza <mantegazza-AT-ill.fr>.
2411
2414
2412 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2415 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
2413 history-search via readline (like C-p/C-n). I'd wanted this for a
2416 history-search via readline (like C-p/C-n). I'd wanted this for a
2414 long time, but only recently found out how to do it. For users
2417 long time, but only recently found out how to do it. For users
2415 who already have their ipythonrc files made and want this, just
2418 who already have their ipythonrc files made and want this, just
2416 add:
2419 add:
2417
2420
2418 readline_parse_and_bind "\e[A": history-search-backward
2421 readline_parse_and_bind "\e[A": history-search-backward
2419 readline_parse_and_bind "\e[B": history-search-forward
2422 readline_parse_and_bind "\e[B": history-search-forward
2420
2423
2421 2005-03-18 Fernando Perez <fperez@colorado.edu>
2424 2005-03-18 Fernando Perez <fperez@colorado.edu>
2422
2425
2423 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2426 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
2424 LSString and SList classes which allow transparent conversions
2427 LSString and SList classes which allow transparent conversions
2425 between list mode and whitespace-separated string.
2428 between list mode and whitespace-separated string.
2426 (magic_r): Fix recursion problem in %r.
2429 (magic_r): Fix recursion problem in %r.
2427
2430
2428 * IPython/genutils.py (LSString): New class to be used for
2431 * IPython/genutils.py (LSString): New class to be used for
2429 automatic storage of the results of all alias/system calls in _o
2432 automatic storage of the results of all alias/system calls in _o
2430 and _e (stdout/err). These provide a .l/.list attribute which
2433 and _e (stdout/err). These provide a .l/.list attribute which
2431 does automatic splitting on newlines. This means that for most
2434 does automatic splitting on newlines. This means that for most
2432 uses, you'll never need to do capturing of output with %sc/%sx
2435 uses, you'll never need to do capturing of output with %sc/%sx
2433 anymore, since ipython keeps this always done for you. Note that
2436 anymore, since ipython keeps this always done for you. Note that
2434 only the LAST results are stored, the _o/e variables are
2437 only the LAST results are stored, the _o/e variables are
2435 overwritten on each call. If you need to save their contents
2438 overwritten on each call. If you need to save their contents
2436 further, simply bind them to any other name.
2439 further, simply bind them to any other name.
2437
2440
2438 2005-03-17 Fernando Perez <fperez@colorado.edu>
2441 2005-03-17 Fernando Perez <fperez@colorado.edu>
2439
2442
2440 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2443 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
2441 prompt namespace handling.
2444 prompt namespace handling.
2442
2445
2443 2005-03-16 Fernando Perez <fperez@colorado.edu>
2446 2005-03-16 Fernando Perez <fperez@colorado.edu>
2444
2447
2445 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2448 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
2446 classic prompts to be '>>> ' (final space was missing, and it
2449 classic prompts to be '>>> ' (final space was missing, and it
2447 trips the emacs python mode).
2450 trips the emacs python mode).
2448 (BasePrompt.__str__): Added safe support for dynamic prompt
2451 (BasePrompt.__str__): Added safe support for dynamic prompt
2449 strings. Now you can set your prompt string to be '$x', and the
2452 strings. Now you can set your prompt string to be '$x', and the
2450 value of x will be printed from your interactive namespace. The
2453 value of x will be printed from your interactive namespace. The
2451 interpolation syntax includes the full Itpl support, so
2454 interpolation syntax includes the full Itpl support, so
2452 ${foo()+x+bar()} is a valid prompt string now, and the function
2455 ${foo()+x+bar()} is a valid prompt string now, and the function
2453 calls will be made at runtime.
2456 calls will be made at runtime.
2454
2457
2455 2005-03-15 Fernando Perez <fperez@colorado.edu>
2458 2005-03-15 Fernando Perez <fperez@colorado.edu>
2456
2459
2457 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2460 * IPython/Magic.py (magic_history): renamed %hist to %history, to
2458 avoid name clashes in pylab. %hist still works, it just forwards
2461 avoid name clashes in pylab. %hist still works, it just forwards
2459 the call to %history.
2462 the call to %history.
2460
2463
2461 2005-03-02 *** Released version 0.6.12
2464 2005-03-02 *** Released version 0.6.12
2462
2465
2463 2005-03-02 Fernando Perez <fperez@colorado.edu>
2466 2005-03-02 Fernando Perez <fperez@colorado.edu>
2464
2467
2465 * IPython/iplib.py (handle_magic): log magic calls properly as
2468 * IPython/iplib.py (handle_magic): log magic calls properly as
2466 ipmagic() function calls.
2469 ipmagic() function calls.
2467
2470
2468 * IPython/Magic.py (magic_time): Improved %time to support
2471 * IPython/Magic.py (magic_time): Improved %time to support
2469 statements and provide wall-clock as well as CPU time.
2472 statements and provide wall-clock as well as CPU time.
2470
2473
2471 2005-02-27 Fernando Perez <fperez@colorado.edu>
2474 2005-02-27 Fernando Perez <fperez@colorado.edu>
2472
2475
2473 * IPython/hooks.py: New hooks module, to expose user-modifiable
2476 * IPython/hooks.py: New hooks module, to expose user-modifiable
2474 IPython functionality in a clean manner. For now only the editor
2477 IPython functionality in a clean manner. For now only the editor
2475 hook is actually written, and other thigns which I intend to turn
2478 hook is actually written, and other thigns which I intend to turn
2476 into proper hooks aren't yet there. The display and prefilter
2479 into proper hooks aren't yet there. The display and prefilter
2477 stuff, for example, should be hooks. But at least now the
2480 stuff, for example, should be hooks. But at least now the
2478 framework is in place, and the rest can be moved here with more
2481 framework is in place, and the rest can be moved here with more
2479 time later. IPython had had a .hooks variable for a long time for
2482 time later. IPython had had a .hooks variable for a long time for
2480 this purpose, but I'd never actually used it for anything.
2483 this purpose, but I'd never actually used it for anything.
2481
2484
2482 2005-02-26 Fernando Perez <fperez@colorado.edu>
2485 2005-02-26 Fernando Perez <fperez@colorado.edu>
2483
2486
2484 * IPython/ipmaker.py (make_IPython): make the default ipython
2487 * IPython/ipmaker.py (make_IPython): make the default ipython
2485 directory be called _ipython under win32, to follow more the
2488 directory be called _ipython under win32, to follow more the
2486 naming peculiarities of that platform (where buggy software like
2489 naming peculiarities of that platform (where buggy software like
2487 Visual Sourcesafe breaks with .named directories). Reported by
2490 Visual Sourcesafe breaks with .named directories). Reported by
2488 Ville Vainio.
2491 Ville Vainio.
2489
2492
2490 2005-02-23 Fernando Perez <fperez@colorado.edu>
2493 2005-02-23 Fernando Perez <fperez@colorado.edu>
2491
2494
2492 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2495 * IPython/iplib.py (InteractiveShell.__init__): removed a few
2493 auto_aliases for win32 which were causing problems. Users can
2496 auto_aliases for win32 which were causing problems. Users can
2494 define the ones they personally like.
2497 define the ones they personally like.
2495
2498
2496 2005-02-21 Fernando Perez <fperez@colorado.edu>
2499 2005-02-21 Fernando Perez <fperez@colorado.edu>
2497
2500
2498 * IPython/Magic.py (magic_time): new magic to time execution of
2501 * IPython/Magic.py (magic_time): new magic to time execution of
2499 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2502 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
2500
2503
2501 2005-02-19 Fernando Perez <fperez@colorado.edu>
2504 2005-02-19 Fernando Perez <fperez@colorado.edu>
2502
2505
2503 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2506 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
2504 into keys (for prompts, for example).
2507 into keys (for prompts, for example).
2505
2508
2506 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2509 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
2507 prompts in case users want them. This introduces a small behavior
2510 prompts in case users want them. This introduces a small behavior
2508 change: ipython does not automatically add a space to all prompts
2511 change: ipython does not automatically add a space to all prompts
2509 anymore. To get the old prompts with a space, users should add it
2512 anymore. To get the old prompts with a space, users should add it
2510 manually to their ipythonrc file, so for example prompt_in1 should
2513 manually to their ipythonrc file, so for example prompt_in1 should
2511 now read 'In [\#]: ' instead of 'In [\#]:'.
2514 now read 'In [\#]: ' instead of 'In [\#]:'.
2512 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2515 (BasePrompt.__init__): New option prompts_pad_left (only in rc
2513 file) to control left-padding of secondary prompts.
2516 file) to control left-padding of secondary prompts.
2514
2517
2515 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2518 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
2516 the profiler can't be imported. Fix for Debian, which removed
2519 the profiler can't be imported. Fix for Debian, which removed
2517 profile.py because of License issues. I applied a slightly
2520 profile.py because of License issues. I applied a slightly
2518 modified version of the original Debian patch at
2521 modified version of the original Debian patch at
2519 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2522 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
2520
2523
2521 2005-02-17 Fernando Perez <fperez@colorado.edu>
2524 2005-02-17 Fernando Perez <fperez@colorado.edu>
2522
2525
2523 * IPython/genutils.py (native_line_ends): Fix bug which would
2526 * IPython/genutils.py (native_line_ends): Fix bug which would
2524 cause improper line-ends under win32 b/c I was not opening files
2527 cause improper line-ends under win32 b/c I was not opening files
2525 in binary mode. Bug report and fix thanks to Ville.
2528 in binary mode. Bug report and fix thanks to Ville.
2526
2529
2527 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2530 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
2528 trying to catch spurious foo[1] autocalls. My fix actually broke
2531 trying to catch spurious foo[1] autocalls. My fix actually broke
2529 ',/' autoquote/call with explicit escape (bad regexp).
2532 ',/' autoquote/call with explicit escape (bad regexp).
2530
2533
2531 2005-02-15 *** Released version 0.6.11
2534 2005-02-15 *** Released version 0.6.11
2532
2535
2533 2005-02-14 Fernando Perez <fperez@colorado.edu>
2536 2005-02-14 Fernando Perez <fperez@colorado.edu>
2534
2537
2535 * IPython/background_jobs.py: New background job management
2538 * IPython/background_jobs.py: New background job management
2536 subsystem. This is implemented via a new set of classes, and
2539 subsystem. This is implemented via a new set of classes, and
2537 IPython now provides a builtin 'jobs' object for background job
2540 IPython now provides a builtin 'jobs' object for background job
2538 execution. A convenience %bg magic serves as a lightweight
2541 execution. A convenience %bg magic serves as a lightweight
2539 frontend for starting the more common type of calls. This was
2542 frontend for starting the more common type of calls. This was
2540 inspired by discussions with B. Granger and the BackgroundCommand
2543 inspired by discussions with B. Granger and the BackgroundCommand
2541 class described in the book Python Scripting for Computational
2544 class described in the book Python Scripting for Computational
2542 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2545 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
2543 (although ultimately no code from this text was used, as IPython's
2546 (although ultimately no code from this text was used, as IPython's
2544 system is a separate implementation).
2547 system is a separate implementation).
2545
2548
2546 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2549 * IPython/iplib.py (MagicCompleter.python_matches): add new option
2547 to control the completion of single/double underscore names
2550 to control the completion of single/double underscore names
2548 separately. As documented in the example ipytonrc file, the
2551 separately. As documented in the example ipytonrc file, the
2549 readline_omit__names variable can now be set to 2, to omit even
2552 readline_omit__names variable can now be set to 2, to omit even
2550 single underscore names. Thanks to a patch by Brian Wong
2553 single underscore names. Thanks to a patch by Brian Wong
2551 <BrianWong-AT-AirgoNetworks.Com>.
2554 <BrianWong-AT-AirgoNetworks.Com>.
2552 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2555 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
2553 be autocalled as foo([1]) if foo were callable. A problem for
2556 be autocalled as foo([1]) if foo were callable. A problem for
2554 things which are both callable and implement __getitem__.
2557 things which are both callable and implement __getitem__.
2555 (init_readline): Fix autoindentation for win32. Thanks to a patch
2558 (init_readline): Fix autoindentation for win32. Thanks to a patch
2556 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2559 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
2557
2560
2558 2005-02-12 Fernando Perez <fperez@colorado.edu>
2561 2005-02-12 Fernando Perez <fperez@colorado.edu>
2559
2562
2560 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2563 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
2561 which I had written long ago to sort out user error messages which
2564 which I had written long ago to sort out user error messages which
2562 may occur during startup. This seemed like a good idea initially,
2565 may occur during startup. This seemed like a good idea initially,
2563 but it has proven a disaster in retrospect. I don't want to
2566 but it has proven a disaster in retrospect. I don't want to
2564 change much code for now, so my fix is to set the internal 'debug'
2567 change much code for now, so my fix is to set the internal 'debug'
2565 flag to true everywhere, whose only job was precisely to control
2568 flag to true everywhere, whose only job was precisely to control
2566 this subsystem. This closes issue 28 (as well as avoiding all
2569 this subsystem. This closes issue 28 (as well as avoiding all
2567 sorts of strange hangups which occur from time to time).
2570 sorts of strange hangups which occur from time to time).
2568
2571
2569 2005-02-07 Fernando Perez <fperez@colorado.edu>
2572 2005-02-07 Fernando Perez <fperez@colorado.edu>
2570
2573
2571 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2574 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
2572 previous call produced a syntax error.
2575 previous call produced a syntax error.
2573
2576
2574 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2577 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2575 classes without constructor.
2578 classes without constructor.
2576
2579
2577 2005-02-06 Fernando Perez <fperez@colorado.edu>
2580 2005-02-06 Fernando Perez <fperez@colorado.edu>
2578
2581
2579 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2582 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
2580 completions with the results of each matcher, so we return results
2583 completions with the results of each matcher, so we return results
2581 to the user from all namespaces. This breaks with ipython
2584 to the user from all namespaces. This breaks with ipython
2582 tradition, but I think it's a nicer behavior. Now you get all
2585 tradition, but I think it's a nicer behavior. Now you get all
2583 possible completions listed, from all possible namespaces (python,
2586 possible completions listed, from all possible namespaces (python,
2584 filesystem, magics...) After a request by John Hunter
2587 filesystem, magics...) After a request by John Hunter
2585 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2588 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2586
2589
2587 2005-02-05 Fernando Perez <fperez@colorado.edu>
2590 2005-02-05 Fernando Perez <fperez@colorado.edu>
2588
2591
2589 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2592 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
2590 the call had quote characters in it (the quotes were stripped).
2593 the call had quote characters in it (the quotes were stripped).
2591
2594
2592 2005-01-31 Fernando Perez <fperez@colorado.edu>
2595 2005-01-31 Fernando Perez <fperez@colorado.edu>
2593
2596
2594 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2597 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
2595 Itpl.itpl() to make the code more robust against psyco
2598 Itpl.itpl() to make the code more robust against psyco
2596 optimizations.
2599 optimizations.
2597
2600
2598 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2601 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
2599 of causing an exception. Quicker, cleaner.
2602 of causing an exception. Quicker, cleaner.
2600
2603
2601 2005-01-28 Fernando Perez <fperez@colorado.edu>
2604 2005-01-28 Fernando Perez <fperez@colorado.edu>
2602
2605
2603 * scripts/ipython_win_post_install.py (install): hardcode
2606 * scripts/ipython_win_post_install.py (install): hardcode
2604 sys.prefix+'python.exe' as the executable path. It turns out that
2607 sys.prefix+'python.exe' as the executable path. It turns out that
2605 during the post-installation run, sys.executable resolves to the
2608 during the post-installation run, sys.executable resolves to the
2606 name of the binary installer! I should report this as a distutils
2609 name of the binary installer! I should report this as a distutils
2607 bug, I think. I updated the .10 release with this tiny fix, to
2610 bug, I think. I updated the .10 release with this tiny fix, to
2608 avoid annoying the lists further.
2611 avoid annoying the lists further.
2609
2612
2610 2005-01-27 *** Released version 0.6.10
2613 2005-01-27 *** Released version 0.6.10
2611
2614
2612 2005-01-27 Fernando Perez <fperez@colorado.edu>
2615 2005-01-27 Fernando Perez <fperez@colorado.edu>
2613
2616
2614 * IPython/numutils.py (norm): Added 'inf' as optional name for
2617 * IPython/numutils.py (norm): Added 'inf' as optional name for
2615 L-infinity norm, included references to mathworld.com for vector
2618 L-infinity norm, included references to mathworld.com for vector
2616 norm definitions.
2619 norm definitions.
2617 (amin/amax): added amin/amax for array min/max. Similar to what
2620 (amin/amax): added amin/amax for array min/max. Similar to what
2618 pylab ships with after the recent reorganization of names.
2621 pylab ships with after the recent reorganization of names.
2619 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2622 (spike/spike_odd): removed deprecated spike/spike_odd functions.
2620
2623
2621 * ipython.el: committed Alex's recent fixes and improvements.
2624 * ipython.el: committed Alex's recent fixes and improvements.
2622 Tested with python-mode from CVS, and it looks excellent. Since
2625 Tested with python-mode from CVS, and it looks excellent. Since
2623 python-mode hasn't released anything in a while, I'm temporarily
2626 python-mode hasn't released anything in a while, I'm temporarily
2624 putting a copy of today's CVS (v 4.70) of python-mode in:
2627 putting a copy of today's CVS (v 4.70) of python-mode in:
2625 http://ipython.scipy.org/tmp/python-mode.el
2628 http://ipython.scipy.org/tmp/python-mode.el
2626
2629
2627 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2630 * scripts/ipython_win_post_install.py (install): Win32 fix to use
2628 sys.executable for the executable name, instead of assuming it's
2631 sys.executable for the executable name, instead of assuming it's
2629 called 'python.exe' (the post-installer would have produced broken
2632 called 'python.exe' (the post-installer would have produced broken
2630 setups on systems with a differently named python binary).
2633 setups on systems with a differently named python binary).
2631
2634
2632 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2635 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
2633 references to os.linesep, to make the code more
2636 references to os.linesep, to make the code more
2634 platform-independent. This is also part of the win32 coloring
2637 platform-independent. This is also part of the win32 coloring
2635 fixes.
2638 fixes.
2636
2639
2637 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2640 * IPython/genutils.py (page_dumb): Remove attempts to chop long
2638 lines, which actually cause coloring bugs because the length of
2641 lines, which actually cause coloring bugs because the length of
2639 the line is very difficult to correctly compute with embedded
2642 the line is very difficult to correctly compute with embedded
2640 escapes. This was the source of all the coloring problems under
2643 escapes. This was the source of all the coloring problems under
2641 Win32. I think that _finally_, Win32 users have a properly
2644 Win32. I think that _finally_, Win32 users have a properly
2642 working ipython in all respects. This would never have happened
2645 working ipython in all respects. This would never have happened
2643 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2646 if not for Gary Bishop and Viktor Ransmayr's great help and work.
2644
2647
2645 2005-01-26 *** Released version 0.6.9
2648 2005-01-26 *** Released version 0.6.9
2646
2649
2647 2005-01-25 Fernando Perez <fperez@colorado.edu>
2650 2005-01-25 Fernando Perez <fperez@colorado.edu>
2648
2651
2649 * setup.py: finally, we have a true Windows installer, thanks to
2652 * setup.py: finally, we have a true Windows installer, thanks to
2650 the excellent work of Viktor Ransmayr
2653 the excellent work of Viktor Ransmayr
2651 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2654 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
2652 Windows users. The setup routine is quite a bit cleaner thanks to
2655 Windows users. The setup routine is quite a bit cleaner thanks to
2653 this, and the post-install script uses the proper functions to
2656 this, and the post-install script uses the proper functions to
2654 allow a clean de-installation using the standard Windows Control
2657 allow a clean de-installation using the standard Windows Control
2655 Panel.
2658 Panel.
2656
2659
2657 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2660 * IPython/genutils.py (get_home_dir): changed to use the $HOME
2658 environment variable under all OSes (including win32) if
2661 environment variable under all OSes (including win32) if
2659 available. This will give consistency to win32 users who have set
2662 available. This will give consistency to win32 users who have set
2660 this variable for any reason. If os.environ['HOME'] fails, the
2663 this variable for any reason. If os.environ['HOME'] fails, the
2661 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2664 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
2662
2665
2663 2005-01-24 Fernando Perez <fperez@colorado.edu>
2666 2005-01-24 Fernando Perez <fperez@colorado.edu>
2664
2667
2665 * IPython/numutils.py (empty_like): add empty_like(), similar to
2668 * IPython/numutils.py (empty_like): add empty_like(), similar to
2666 zeros_like() but taking advantage of the new empty() Numeric routine.
2669 zeros_like() but taking advantage of the new empty() Numeric routine.
2667
2670
2668 2005-01-23 *** Released version 0.6.8
2671 2005-01-23 *** Released version 0.6.8
2669
2672
2670 2005-01-22 Fernando Perez <fperez@colorado.edu>
2673 2005-01-22 Fernando Perez <fperez@colorado.edu>
2671
2674
2672 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2675 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
2673 automatic show() calls. After discussing things with JDH, it
2676 automatic show() calls. After discussing things with JDH, it
2674 turns out there are too many corner cases where this can go wrong.
2677 turns out there are too many corner cases where this can go wrong.
2675 It's best not to try to be 'too smart', and simply have ipython
2678 It's best not to try to be 'too smart', and simply have ipython
2676 reproduce as much as possible the default behavior of a normal
2679 reproduce as much as possible the default behavior of a normal
2677 python shell.
2680 python shell.
2678
2681
2679 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2682 * IPython/iplib.py (InteractiveShell.__init__): Modified the
2680 line-splitting regexp and _prefilter() to avoid calling getattr()
2683 line-splitting regexp and _prefilter() to avoid calling getattr()
2681 on assignments. This closes
2684 on assignments. This closes
2682 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2685 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
2683 readline uses getattr(), so a simple <TAB> keypress is still
2686 readline uses getattr(), so a simple <TAB> keypress is still
2684 enough to trigger getattr() calls on an object.
2687 enough to trigger getattr() calls on an object.
2685
2688
2686 2005-01-21 Fernando Perez <fperez@colorado.edu>
2689 2005-01-21 Fernando Perez <fperez@colorado.edu>
2687
2690
2688 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2691 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
2689 docstring under pylab so it doesn't mask the original.
2692 docstring under pylab so it doesn't mask the original.
2690
2693
2691 2005-01-21 *** Released version 0.6.7
2694 2005-01-21 *** Released version 0.6.7
2692
2695
2693 2005-01-21 Fernando Perez <fperez@colorado.edu>
2696 2005-01-21 Fernando Perez <fperez@colorado.edu>
2694
2697
2695 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2698 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
2696 signal handling for win32 users in multithreaded mode.
2699 signal handling for win32 users in multithreaded mode.
2697
2700
2698 2005-01-17 Fernando Perez <fperez@colorado.edu>
2701 2005-01-17 Fernando Perez <fperez@colorado.edu>
2699
2702
2700 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2703 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
2701 instances with no __init__. After a crash report by Norbert Nemec
2704 instances with no __init__. After a crash report by Norbert Nemec
2702 <Norbert-AT-nemec-online.de>.
2705 <Norbert-AT-nemec-online.de>.
2703
2706
2704 2005-01-14 Fernando Perez <fperez@colorado.edu>
2707 2005-01-14 Fernando Perez <fperez@colorado.edu>
2705
2708
2706 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2709 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
2707 names for verbose exceptions, when multiple dotted names and the
2710 names for verbose exceptions, when multiple dotted names and the
2708 'parent' object were present on the same line.
2711 'parent' object were present on the same line.
2709
2712
2710 2005-01-11 Fernando Perez <fperez@colorado.edu>
2713 2005-01-11 Fernando Perez <fperez@colorado.edu>
2711
2714
2712 * IPython/genutils.py (flag_calls): new utility to trap and flag
2715 * IPython/genutils.py (flag_calls): new utility to trap and flag
2713 calls in functions. I need it to clean up matplotlib support.
2716 calls in functions. I need it to clean up matplotlib support.
2714 Also removed some deprecated code in genutils.
2717 Also removed some deprecated code in genutils.
2715
2718
2716 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2719 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
2717 that matplotlib scripts called with %run, which don't call show()
2720 that matplotlib scripts called with %run, which don't call show()
2718 themselves, still have their plotting windows open.
2721 themselves, still have their plotting windows open.
2719
2722
2720 2005-01-05 Fernando Perez <fperez@colorado.edu>
2723 2005-01-05 Fernando Perez <fperez@colorado.edu>
2721
2724
2722 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2725 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
2723 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2726 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
2724
2727
2725 2004-12-19 Fernando Perez <fperez@colorado.edu>
2728 2004-12-19 Fernando Perez <fperez@colorado.edu>
2726
2729
2727 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2730 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
2728 parent_runcode, which was an eyesore. The same result can be
2731 parent_runcode, which was an eyesore. The same result can be
2729 obtained with Python's regular superclass mechanisms.
2732 obtained with Python's regular superclass mechanisms.
2730
2733
2731 2004-12-17 Fernando Perez <fperez@colorado.edu>
2734 2004-12-17 Fernando Perez <fperez@colorado.edu>
2732
2735
2733 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2736 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
2734 reported by Prabhu.
2737 reported by Prabhu.
2735 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2738 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
2736 sys.stderr) instead of explicitly calling sys.stderr. This helps
2739 sys.stderr) instead of explicitly calling sys.stderr. This helps
2737 maintain our I/O abstractions clean, for future GUI embeddings.
2740 maintain our I/O abstractions clean, for future GUI embeddings.
2738
2741
2739 * IPython/genutils.py (info): added new utility for sys.stderr
2742 * IPython/genutils.py (info): added new utility for sys.stderr
2740 unified info message handling (thin wrapper around warn()).
2743 unified info message handling (thin wrapper around warn()).
2741
2744
2742 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2745 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
2743 composite (dotted) names on verbose exceptions.
2746 composite (dotted) names on verbose exceptions.
2744 (VerboseTB.nullrepr): harden against another kind of errors which
2747 (VerboseTB.nullrepr): harden against another kind of errors which
2745 Python's inspect module can trigger, and which were crashing
2748 Python's inspect module can trigger, and which were crashing
2746 IPython. Thanks to a report by Marco Lombardi
2749 IPython. Thanks to a report by Marco Lombardi
2747 <mlombard-AT-ma010192.hq.eso.org>.
2750 <mlombard-AT-ma010192.hq.eso.org>.
2748
2751
2749 2004-12-13 *** Released version 0.6.6
2752 2004-12-13 *** Released version 0.6.6
2750
2753
2751 2004-12-12 Fernando Perez <fperez@colorado.edu>
2754 2004-12-12 Fernando Perez <fperez@colorado.edu>
2752
2755
2753 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2756 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
2754 generated by pygtk upon initialization if it was built without
2757 generated by pygtk upon initialization if it was built without
2755 threads (for matplotlib users). After a crash reported by
2758 threads (for matplotlib users). After a crash reported by
2756 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2759 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
2757
2760
2758 * IPython/ipmaker.py (make_IPython): fix small bug in the
2761 * IPython/ipmaker.py (make_IPython): fix small bug in the
2759 import_some parameter for multiple imports.
2762 import_some parameter for multiple imports.
2760
2763
2761 * IPython/iplib.py (ipmagic): simplified the interface of
2764 * IPython/iplib.py (ipmagic): simplified the interface of
2762 ipmagic() to take a single string argument, just as it would be
2765 ipmagic() to take a single string argument, just as it would be
2763 typed at the IPython cmd line.
2766 typed at the IPython cmd line.
2764 (ipalias): Added new ipalias() with an interface identical to
2767 (ipalias): Added new ipalias() with an interface identical to
2765 ipmagic(). This completes exposing a pure python interface to the
2768 ipmagic(). This completes exposing a pure python interface to the
2766 alias and magic system, which can be used in loops or more complex
2769 alias and magic system, which can be used in loops or more complex
2767 code where IPython's automatic line mangling is not active.
2770 code where IPython's automatic line mangling is not active.
2768
2771
2769 * IPython/genutils.py (timing): changed interface of timing to
2772 * IPython/genutils.py (timing): changed interface of timing to
2770 simply run code once, which is the most common case. timings()
2773 simply run code once, which is the most common case. timings()
2771 remains unchanged, for the cases where you want multiple runs.
2774 remains unchanged, for the cases where you want multiple runs.
2772
2775
2773 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2776 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
2774 bug where Python2.2 crashes with exec'ing code which does not end
2777 bug where Python2.2 crashes with exec'ing code which does not end
2775 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2778 in a single newline. Python 2.3 is OK, so I hadn't noticed this
2776 before.
2779 before.
2777
2780
2778 2004-12-10 Fernando Perez <fperez@colorado.edu>
2781 2004-12-10 Fernando Perez <fperez@colorado.edu>
2779
2782
2780 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2783 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2781 -t to -T, to accomodate the new -t flag in %run (the %run and
2784 -t to -T, to accomodate the new -t flag in %run (the %run and
2782 %prun options are kind of intermixed, and it's not easy to change
2785 %prun options are kind of intermixed, and it's not easy to change
2783 this with the limitations of python's getopt).
2786 this with the limitations of python's getopt).
2784
2787
2785 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2788 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2786 the execution of scripts. It's not as fine-tuned as timeit.py,
2789 the execution of scripts. It's not as fine-tuned as timeit.py,
2787 but it works from inside ipython (and under 2.2, which lacks
2790 but it works from inside ipython (and under 2.2, which lacks
2788 timeit.py). Optionally a number of runs > 1 can be given for
2791 timeit.py). Optionally a number of runs > 1 can be given for
2789 timing very short-running code.
2792 timing very short-running code.
2790
2793
2791 * IPython/genutils.py (uniq_stable): new routine which returns a
2794 * IPython/genutils.py (uniq_stable): new routine which returns a
2792 list of unique elements in any iterable, but in stable order of
2795 list of unique elements in any iterable, but in stable order of
2793 appearance. I needed this for the ultraTB fixes, and it's a handy
2796 appearance. I needed this for the ultraTB fixes, and it's a handy
2794 utility.
2797 utility.
2795
2798
2796 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2799 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2797 dotted names in Verbose exceptions. This had been broken since
2800 dotted names in Verbose exceptions. This had been broken since
2798 the very start, now x.y will properly be printed in a Verbose
2801 the very start, now x.y will properly be printed in a Verbose
2799 traceback, instead of x being shown and y appearing always as an
2802 traceback, instead of x being shown and y appearing always as an
2800 'undefined global'. Getting this to work was a bit tricky,
2803 'undefined global'. Getting this to work was a bit tricky,
2801 because by default python tokenizers are stateless. Saved by
2804 because by default python tokenizers are stateless. Saved by
2802 python's ability to easily add a bit of state to an arbitrary
2805 python's ability to easily add a bit of state to an arbitrary
2803 function (without needing to build a full-blown callable object).
2806 function (without needing to build a full-blown callable object).
2804
2807
2805 Also big cleanup of this code, which had horrendous runtime
2808 Also big cleanup of this code, which had horrendous runtime
2806 lookups of zillions of attributes for colorization. Moved all
2809 lookups of zillions of attributes for colorization. Moved all
2807 this code into a few templates, which make it cleaner and quicker.
2810 this code into a few templates, which make it cleaner and quicker.
2808
2811
2809 Printout quality was also improved for Verbose exceptions: one
2812 Printout quality was also improved for Verbose exceptions: one
2810 variable per line, and memory addresses are printed (this can be
2813 variable per line, and memory addresses are printed (this can be
2811 quite handy in nasty debugging situations, which is what Verbose
2814 quite handy in nasty debugging situations, which is what Verbose
2812 is for).
2815 is for).
2813
2816
2814 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2817 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2815 the command line as scripts to be loaded by embedded instances.
2818 the command line as scripts to be loaded by embedded instances.
2816 Doing so has the potential for an infinite recursion if there are
2819 Doing so has the potential for an infinite recursion if there are
2817 exceptions thrown in the process. This fixes a strange crash
2820 exceptions thrown in the process. This fixes a strange crash
2818 reported by Philippe MULLER <muller-AT-irit.fr>.
2821 reported by Philippe MULLER <muller-AT-irit.fr>.
2819
2822
2820 2004-12-09 Fernando Perez <fperez@colorado.edu>
2823 2004-12-09 Fernando Perez <fperez@colorado.edu>
2821
2824
2822 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2825 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2823 to reflect new names in matplotlib, which now expose the
2826 to reflect new names in matplotlib, which now expose the
2824 matlab-compatible interface via a pylab module instead of the
2827 matlab-compatible interface via a pylab module instead of the
2825 'matlab' name. The new code is backwards compatible, so users of
2828 'matlab' name. The new code is backwards compatible, so users of
2826 all matplotlib versions are OK. Patch by J. Hunter.
2829 all matplotlib versions are OK. Patch by J. Hunter.
2827
2830
2828 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2831 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2829 of __init__ docstrings for instances (class docstrings are already
2832 of __init__ docstrings for instances (class docstrings are already
2830 automatically printed). Instances with customized docstrings
2833 automatically printed). Instances with customized docstrings
2831 (indep. of the class) are also recognized and all 3 separate
2834 (indep. of the class) are also recognized and all 3 separate
2832 docstrings are printed (instance, class, constructor). After some
2835 docstrings are printed (instance, class, constructor). After some
2833 comments/suggestions by J. Hunter.
2836 comments/suggestions by J. Hunter.
2834
2837
2835 2004-12-05 Fernando Perez <fperez@colorado.edu>
2838 2004-12-05 Fernando Perez <fperez@colorado.edu>
2836
2839
2837 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2840 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2838 warnings when tab-completion fails and triggers an exception.
2841 warnings when tab-completion fails and triggers an exception.
2839
2842
2840 2004-12-03 Fernando Perez <fperez@colorado.edu>
2843 2004-12-03 Fernando Perez <fperez@colorado.edu>
2841
2844
2842 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2845 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2843 be triggered when using 'run -p'. An incorrect option flag was
2846 be triggered when using 'run -p'. An incorrect option flag was
2844 being set ('d' instead of 'D').
2847 being set ('d' instead of 'D').
2845 (manpage): fix missing escaped \- sign.
2848 (manpage): fix missing escaped \- sign.
2846
2849
2847 2004-11-30 *** Released version 0.6.5
2850 2004-11-30 *** Released version 0.6.5
2848
2851
2849 2004-11-30 Fernando Perez <fperez@colorado.edu>
2852 2004-11-30 Fernando Perez <fperez@colorado.edu>
2850
2853
2851 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2854 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2852 setting with -d option.
2855 setting with -d option.
2853
2856
2854 * setup.py (docfiles): Fix problem where the doc glob I was using
2857 * setup.py (docfiles): Fix problem where the doc glob I was using
2855 was COMPLETELY BROKEN. It was giving the right files by pure
2858 was COMPLETELY BROKEN. It was giving the right files by pure
2856 accident, but failed once I tried to include ipython.el. Note:
2859 accident, but failed once I tried to include ipython.el. Note:
2857 glob() does NOT allow you to do exclusion on multiple endings!
2860 glob() does NOT allow you to do exclusion on multiple endings!
2858
2861
2859 2004-11-29 Fernando Perez <fperez@colorado.edu>
2862 2004-11-29 Fernando Perez <fperez@colorado.edu>
2860
2863
2861 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2864 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2862 the manpage as the source. Better formatting & consistency.
2865 the manpage as the source. Better formatting & consistency.
2863
2866
2864 * IPython/Magic.py (magic_run): Added new -d option, to run
2867 * IPython/Magic.py (magic_run): Added new -d option, to run
2865 scripts under the control of the python pdb debugger. Note that
2868 scripts under the control of the python pdb debugger. Note that
2866 this required changing the %prun option -d to -D, to avoid a clash
2869 this required changing the %prun option -d to -D, to avoid a clash
2867 (since %run must pass options to %prun, and getopt is too dumb to
2870 (since %run must pass options to %prun, and getopt is too dumb to
2868 handle options with string values with embedded spaces). Thanks
2871 handle options with string values with embedded spaces). Thanks
2869 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2872 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2870 (magic_who_ls): added type matching to %who and %whos, so that one
2873 (magic_who_ls): added type matching to %who and %whos, so that one
2871 can filter their output to only include variables of certain
2874 can filter their output to only include variables of certain
2872 types. Another suggestion by Matthew.
2875 types. Another suggestion by Matthew.
2873 (magic_whos): Added memory summaries in kb and Mb for arrays.
2876 (magic_whos): Added memory summaries in kb and Mb for arrays.
2874 (magic_who): Improve formatting (break lines every 9 vars).
2877 (magic_who): Improve formatting (break lines every 9 vars).
2875
2878
2876 2004-11-28 Fernando Perez <fperez@colorado.edu>
2879 2004-11-28 Fernando Perez <fperez@colorado.edu>
2877
2880
2878 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2881 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2879 cache when empty lines were present.
2882 cache when empty lines were present.
2880
2883
2881 2004-11-24 Fernando Perez <fperez@colorado.edu>
2884 2004-11-24 Fernando Perez <fperez@colorado.edu>
2882
2885
2883 * IPython/usage.py (__doc__): document the re-activated threading
2886 * IPython/usage.py (__doc__): document the re-activated threading
2884 options for WX and GTK.
2887 options for WX and GTK.
2885
2888
2886 2004-11-23 Fernando Perez <fperez@colorado.edu>
2889 2004-11-23 Fernando Perez <fperez@colorado.edu>
2887
2890
2888 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2891 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2889 the -wthread and -gthread options, along with a new -tk one to try
2892 the -wthread and -gthread options, along with a new -tk one to try
2890 and coordinate Tk threading with wx/gtk. The tk support is very
2893 and coordinate Tk threading with wx/gtk. The tk support is very
2891 platform dependent, since it seems to require Tcl and Tk to be
2894 platform dependent, since it seems to require Tcl and Tk to be
2892 built with threads (Fedora1/2 appears NOT to have it, but in
2895 built with threads (Fedora1/2 appears NOT to have it, but in
2893 Prabhu's Debian boxes it works OK). But even with some Tk
2896 Prabhu's Debian boxes it works OK). But even with some Tk
2894 limitations, this is a great improvement.
2897 limitations, this is a great improvement.
2895
2898
2896 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2899 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2897 info in user prompts. Patch by Prabhu.
2900 info in user prompts. Patch by Prabhu.
2898
2901
2899 2004-11-18 Fernando Perez <fperez@colorado.edu>
2902 2004-11-18 Fernando Perez <fperez@colorado.edu>
2900
2903
2901 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2904 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2902 EOFErrors and bail, to avoid infinite loops if a non-terminating
2905 EOFErrors and bail, to avoid infinite loops if a non-terminating
2903 file is fed into ipython. Patch submitted in issue 19 by user,
2906 file is fed into ipython. Patch submitted in issue 19 by user,
2904 many thanks.
2907 many thanks.
2905
2908
2906 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2909 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2907 autoquote/parens in continuation prompts, which can cause lots of
2910 autoquote/parens in continuation prompts, which can cause lots of
2908 problems. Closes roundup issue 20.
2911 problems. Closes roundup issue 20.
2909
2912
2910 2004-11-17 Fernando Perez <fperez@colorado.edu>
2913 2004-11-17 Fernando Perez <fperez@colorado.edu>
2911
2914
2912 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2915 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2913 reported as debian bug #280505. I'm not sure my local changelog
2916 reported as debian bug #280505. I'm not sure my local changelog
2914 entry has the proper debian format (Jack?).
2917 entry has the proper debian format (Jack?).
2915
2918
2916 2004-11-08 *** Released version 0.6.4
2919 2004-11-08 *** Released version 0.6.4
2917
2920
2918 2004-11-08 Fernando Perez <fperez@colorado.edu>
2921 2004-11-08 Fernando Perez <fperez@colorado.edu>
2919
2922
2920 * IPython/iplib.py (init_readline): Fix exit message for Windows
2923 * IPython/iplib.py (init_readline): Fix exit message for Windows
2921 when readline is active. Thanks to a report by Eric Jones
2924 when readline is active. Thanks to a report by Eric Jones
2922 <eric-AT-enthought.com>.
2925 <eric-AT-enthought.com>.
2923
2926
2924 2004-11-07 Fernando Perez <fperez@colorado.edu>
2927 2004-11-07 Fernando Perez <fperez@colorado.edu>
2925
2928
2926 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2929 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2927 sometimes seen by win2k/cygwin users.
2930 sometimes seen by win2k/cygwin users.
2928
2931
2929 2004-11-06 Fernando Perez <fperez@colorado.edu>
2932 2004-11-06 Fernando Perez <fperez@colorado.edu>
2930
2933
2931 * IPython/iplib.py (interact): Change the handling of %Exit from
2934 * IPython/iplib.py (interact): Change the handling of %Exit from
2932 trying to propagate a SystemExit to an internal ipython flag.
2935 trying to propagate a SystemExit to an internal ipython flag.
2933 This is less elegant than using Python's exception mechanism, but
2936 This is less elegant than using Python's exception mechanism, but
2934 I can't get that to work reliably with threads, so under -pylab
2937 I can't get that to work reliably with threads, so under -pylab
2935 %Exit was hanging IPython. Cross-thread exception handling is
2938 %Exit was hanging IPython. Cross-thread exception handling is
2936 really a bitch. Thaks to a bug report by Stephen Walton
2939 really a bitch. Thaks to a bug report by Stephen Walton
2937 <stephen.walton-AT-csun.edu>.
2940 <stephen.walton-AT-csun.edu>.
2938
2941
2939 2004-11-04 Fernando Perez <fperez@colorado.edu>
2942 2004-11-04 Fernando Perez <fperez@colorado.edu>
2940
2943
2941 * IPython/iplib.py (raw_input_original): store a pointer to the
2944 * IPython/iplib.py (raw_input_original): store a pointer to the
2942 true raw_input to harden against code which can modify it
2945 true raw_input to harden against code which can modify it
2943 (wx.py.PyShell does this and would otherwise crash ipython).
2946 (wx.py.PyShell does this and would otherwise crash ipython).
2944 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2947 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2945
2948
2946 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2949 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2947 Ctrl-C problem, which does not mess up the input line.
2950 Ctrl-C problem, which does not mess up the input line.
2948
2951
2949 2004-11-03 Fernando Perez <fperez@colorado.edu>
2952 2004-11-03 Fernando Perez <fperez@colorado.edu>
2950
2953
2951 * IPython/Release.py: Changed licensing to BSD, in all files.
2954 * IPython/Release.py: Changed licensing to BSD, in all files.
2952 (name): lowercase name for tarball/RPM release.
2955 (name): lowercase name for tarball/RPM release.
2953
2956
2954 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2957 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2955 use throughout ipython.
2958 use throughout ipython.
2956
2959
2957 * IPython/Magic.py (Magic._ofind): Switch to using the new
2960 * IPython/Magic.py (Magic._ofind): Switch to using the new
2958 OInspect.getdoc() function.
2961 OInspect.getdoc() function.
2959
2962
2960 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2963 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2961 of the line currently being canceled via Ctrl-C. It's extremely
2964 of the line currently being canceled via Ctrl-C. It's extremely
2962 ugly, but I don't know how to do it better (the problem is one of
2965 ugly, but I don't know how to do it better (the problem is one of
2963 handling cross-thread exceptions).
2966 handling cross-thread exceptions).
2964
2967
2965 2004-10-28 Fernando Perez <fperez@colorado.edu>
2968 2004-10-28 Fernando Perez <fperez@colorado.edu>
2966
2969
2967 * IPython/Shell.py (signal_handler): add signal handlers to trap
2970 * IPython/Shell.py (signal_handler): add signal handlers to trap
2968 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2971 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2969 report by Francesc Alted.
2972 report by Francesc Alted.
2970
2973
2971 2004-10-21 Fernando Perez <fperez@colorado.edu>
2974 2004-10-21 Fernando Perez <fperez@colorado.edu>
2972
2975
2973 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2976 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2974 to % for pysh syntax extensions.
2977 to % for pysh syntax extensions.
2975
2978
2976 2004-10-09 Fernando Perez <fperez@colorado.edu>
2979 2004-10-09 Fernando Perez <fperez@colorado.edu>
2977
2980
2978 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2981 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2979 arrays to print a more useful summary, without calling str(arr).
2982 arrays to print a more useful summary, without calling str(arr).
2980 This avoids the problem of extremely lengthy computations which
2983 This avoids the problem of extremely lengthy computations which
2981 occur if arr is large, and appear to the user as a system lockup
2984 occur if arr is large, and appear to the user as a system lockup
2982 with 100% cpu activity. After a suggestion by Kristian Sandberg
2985 with 100% cpu activity. After a suggestion by Kristian Sandberg
2983 <Kristian.Sandberg@colorado.edu>.
2986 <Kristian.Sandberg@colorado.edu>.
2984 (Magic.__init__): fix bug in global magic escapes not being
2987 (Magic.__init__): fix bug in global magic escapes not being
2985 correctly set.
2988 correctly set.
2986
2989
2987 2004-10-08 Fernando Perez <fperez@colorado.edu>
2990 2004-10-08 Fernando Perez <fperez@colorado.edu>
2988
2991
2989 * IPython/Magic.py (__license__): change to absolute imports of
2992 * IPython/Magic.py (__license__): change to absolute imports of
2990 ipython's own internal packages, to start adapting to the absolute
2993 ipython's own internal packages, to start adapting to the absolute
2991 import requirement of PEP-328.
2994 import requirement of PEP-328.
2992
2995
2993 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2996 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2994 files, and standardize author/license marks through the Release
2997 files, and standardize author/license marks through the Release
2995 module instead of having per/file stuff (except for files with
2998 module instead of having per/file stuff (except for files with
2996 particular licenses, like the MIT/PSF-licensed codes).
2999 particular licenses, like the MIT/PSF-licensed codes).
2997
3000
2998 * IPython/Debugger.py: remove dead code for python 2.1
3001 * IPython/Debugger.py: remove dead code for python 2.1
2999
3002
3000 2004-10-04 Fernando Perez <fperez@colorado.edu>
3003 2004-10-04 Fernando Perez <fperez@colorado.edu>
3001
3004
3002 * IPython/iplib.py (ipmagic): New function for accessing magics
3005 * IPython/iplib.py (ipmagic): New function for accessing magics
3003 via a normal python function call.
3006 via a normal python function call.
3004
3007
3005 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3008 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3006 from '@' to '%', to accomodate the new @decorator syntax of python
3009 from '@' to '%', to accomodate the new @decorator syntax of python
3007 2.4.
3010 2.4.
3008
3011
3009 2004-09-29 Fernando Perez <fperez@colorado.edu>
3012 2004-09-29 Fernando Perez <fperez@colorado.edu>
3010
3013
3011 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3014 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3012 matplotlib.use to prevent running scripts which try to switch
3015 matplotlib.use to prevent running scripts which try to switch
3013 interactive backends from within ipython. This will just crash
3016 interactive backends from within ipython. This will just crash
3014 the python interpreter, so we can't allow it (but a detailed error
3017 the python interpreter, so we can't allow it (but a detailed error
3015 is given to the user).
3018 is given to the user).
3016
3019
3017 2004-09-28 Fernando Perez <fperez@colorado.edu>
3020 2004-09-28 Fernando Perez <fperez@colorado.edu>
3018
3021
3019 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3022 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3020 matplotlib-related fixes so that using @run with non-matplotlib
3023 matplotlib-related fixes so that using @run with non-matplotlib
3021 scripts doesn't pop up spurious plot windows. This requires
3024 scripts doesn't pop up spurious plot windows. This requires
3022 matplotlib >= 0.63, where I had to make some changes as well.
3025 matplotlib >= 0.63, where I had to make some changes as well.
3023
3026
3024 * IPython/ipmaker.py (make_IPython): update version requirement to
3027 * IPython/ipmaker.py (make_IPython): update version requirement to
3025 python 2.2.
3028 python 2.2.
3026
3029
3027 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3030 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3028 banner arg for embedded customization.
3031 banner arg for embedded customization.
3029
3032
3030 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3033 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3031 explicit uses of __IP as the IPython's instance name. Now things
3034 explicit uses of __IP as the IPython's instance name. Now things
3032 are properly handled via the shell.name value. The actual code
3035 are properly handled via the shell.name value. The actual code
3033 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3036 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3034 is much better than before. I'll clean things completely when the
3037 is much better than before. I'll clean things completely when the
3035 magic stuff gets a real overhaul.
3038 magic stuff gets a real overhaul.
3036
3039
3037 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3040 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3038 minor changes to debian dir.
3041 minor changes to debian dir.
3039
3042
3040 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3043 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3041 pointer to the shell itself in the interactive namespace even when
3044 pointer to the shell itself in the interactive namespace even when
3042 a user-supplied dict is provided. This is needed for embedding
3045 a user-supplied dict is provided. This is needed for embedding
3043 purposes (found by tests with Michel Sanner).
3046 purposes (found by tests with Michel Sanner).
3044
3047
3045 2004-09-27 Fernando Perez <fperez@colorado.edu>
3048 2004-09-27 Fernando Perez <fperez@colorado.edu>
3046
3049
3047 * IPython/UserConfig/ipythonrc: remove []{} from
3050 * IPython/UserConfig/ipythonrc: remove []{} from
3048 readline_remove_delims, so that things like [modname.<TAB> do
3051 readline_remove_delims, so that things like [modname.<TAB> do
3049 proper completion. This disables [].TAB, but that's a less common
3052 proper completion. This disables [].TAB, but that's a less common
3050 case than module names in list comprehensions, for example.
3053 case than module names in list comprehensions, for example.
3051 Thanks to a report by Andrea Riciputi.
3054 Thanks to a report by Andrea Riciputi.
3052
3055
3053 2004-09-09 Fernando Perez <fperez@colorado.edu>
3056 2004-09-09 Fernando Perez <fperez@colorado.edu>
3054
3057
3055 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3058 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3056 blocking problems in win32 and osx. Fix by John.
3059 blocking problems in win32 and osx. Fix by John.
3057
3060
3058 2004-09-08 Fernando Perez <fperez@colorado.edu>
3061 2004-09-08 Fernando Perez <fperez@colorado.edu>
3059
3062
3060 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3063 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3061 for Win32 and OSX. Fix by John Hunter.
3064 for Win32 and OSX. Fix by John Hunter.
3062
3065
3063 2004-08-30 *** Released version 0.6.3
3066 2004-08-30 *** Released version 0.6.3
3064
3067
3065 2004-08-30 Fernando Perez <fperez@colorado.edu>
3068 2004-08-30 Fernando Perez <fperez@colorado.edu>
3066
3069
3067 * setup.py (isfile): Add manpages to list of dependent files to be
3070 * setup.py (isfile): Add manpages to list of dependent files to be
3068 updated.
3071 updated.
3069
3072
3070 2004-08-27 Fernando Perez <fperez@colorado.edu>
3073 2004-08-27 Fernando Perez <fperez@colorado.edu>
3071
3074
3072 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3075 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3073 for now. They don't really work with standalone WX/GTK code
3076 for now. They don't really work with standalone WX/GTK code
3074 (though matplotlib IS working fine with both of those backends).
3077 (though matplotlib IS working fine with both of those backends).
3075 This will neeed much more testing. I disabled most things with
3078 This will neeed much more testing. I disabled most things with
3076 comments, so turning it back on later should be pretty easy.
3079 comments, so turning it back on later should be pretty easy.
3077
3080
3078 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3081 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3079 autocalling of expressions like r'foo', by modifying the line
3082 autocalling of expressions like r'foo', by modifying the line
3080 split regexp. Closes
3083 split regexp. Closes
3081 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3084 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3082 Riley <ipythonbugs-AT-sabi.net>.
3085 Riley <ipythonbugs-AT-sabi.net>.
3083 (InteractiveShell.mainloop): honor --nobanner with banner
3086 (InteractiveShell.mainloop): honor --nobanner with banner
3084 extensions.
3087 extensions.
3085
3088
3086 * IPython/Shell.py: Significant refactoring of all classes, so
3089 * IPython/Shell.py: Significant refactoring of all classes, so
3087 that we can really support ALL matplotlib backends and threading
3090 that we can really support ALL matplotlib backends and threading
3088 models (John spotted a bug with Tk which required this). Now we
3091 models (John spotted a bug with Tk which required this). Now we
3089 should support single-threaded, WX-threads and GTK-threads, both
3092 should support single-threaded, WX-threads and GTK-threads, both
3090 for generic code and for matplotlib.
3093 for generic code and for matplotlib.
3091
3094
3092 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3095 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3093 -pylab, to simplify things for users. Will also remove the pylab
3096 -pylab, to simplify things for users. Will also remove the pylab
3094 profile, since now all of matplotlib configuration is directly
3097 profile, since now all of matplotlib configuration is directly
3095 handled here. This also reduces startup time.
3098 handled here. This also reduces startup time.
3096
3099
3097 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3100 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3098 shell wasn't being correctly called. Also in IPShellWX.
3101 shell wasn't being correctly called. Also in IPShellWX.
3099
3102
3100 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3103 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3101 fine-tune banner.
3104 fine-tune banner.
3102
3105
3103 * IPython/numutils.py (spike): Deprecate these spike functions,
3106 * IPython/numutils.py (spike): Deprecate these spike functions,
3104 delete (long deprecated) gnuplot_exec handler.
3107 delete (long deprecated) gnuplot_exec handler.
3105
3108
3106 2004-08-26 Fernando Perez <fperez@colorado.edu>
3109 2004-08-26 Fernando Perez <fperez@colorado.edu>
3107
3110
3108 * ipython.1: Update for threading options, plus some others which
3111 * ipython.1: Update for threading options, plus some others which
3109 were missing.
3112 were missing.
3110
3113
3111 * IPython/ipmaker.py (__call__): Added -wthread option for
3114 * IPython/ipmaker.py (__call__): Added -wthread option for
3112 wxpython thread handling. Make sure threading options are only
3115 wxpython thread handling. Make sure threading options are only
3113 valid at the command line.
3116 valid at the command line.
3114
3117
3115 * scripts/ipython: moved shell selection into a factory function
3118 * scripts/ipython: moved shell selection into a factory function
3116 in Shell.py, to keep the starter script to a minimum.
3119 in Shell.py, to keep the starter script to a minimum.
3117
3120
3118 2004-08-25 Fernando Perez <fperez@colorado.edu>
3121 2004-08-25 Fernando Perez <fperez@colorado.edu>
3119
3122
3120 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3123 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3121 John. Along with some recent changes he made to matplotlib, the
3124 John. Along with some recent changes he made to matplotlib, the
3122 next versions of both systems should work very well together.
3125 next versions of both systems should work very well together.
3123
3126
3124 2004-08-24 Fernando Perez <fperez@colorado.edu>
3127 2004-08-24 Fernando Perez <fperez@colorado.edu>
3125
3128
3126 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3129 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3127 tried to switch the profiling to using hotshot, but I'm getting
3130 tried to switch the profiling to using hotshot, but I'm getting
3128 strange errors from prof.runctx() there. I may be misreading the
3131 strange errors from prof.runctx() there. I may be misreading the
3129 docs, but it looks weird. For now the profiling code will
3132 docs, but it looks weird. For now the profiling code will
3130 continue to use the standard profiler.
3133 continue to use the standard profiler.
3131
3134
3132 2004-08-23 Fernando Perez <fperez@colorado.edu>
3135 2004-08-23 Fernando Perez <fperez@colorado.edu>
3133
3136
3134 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3137 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3135 threaded shell, by John Hunter. It's not quite ready yet, but
3138 threaded shell, by John Hunter. It's not quite ready yet, but
3136 close.
3139 close.
3137
3140
3138 2004-08-22 Fernando Perez <fperez@colorado.edu>
3141 2004-08-22 Fernando Perez <fperez@colorado.edu>
3139
3142
3140 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3143 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3141 in Magic and ultraTB.
3144 in Magic and ultraTB.
3142
3145
3143 * ipython.1: document threading options in manpage.
3146 * ipython.1: document threading options in manpage.
3144
3147
3145 * scripts/ipython: Changed name of -thread option to -gthread,
3148 * scripts/ipython: Changed name of -thread option to -gthread,
3146 since this is GTK specific. I want to leave the door open for a
3149 since this is GTK specific. I want to leave the door open for a
3147 -wthread option for WX, which will most likely be necessary. This
3150 -wthread option for WX, which will most likely be necessary. This
3148 change affects usage and ipmaker as well.
3151 change affects usage and ipmaker as well.
3149
3152
3150 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3153 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3151 handle the matplotlib shell issues. Code by John Hunter
3154 handle the matplotlib shell issues. Code by John Hunter
3152 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3155 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3153 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3156 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3154 broken (and disabled for end users) for now, but it puts the
3157 broken (and disabled for end users) for now, but it puts the
3155 infrastructure in place.
3158 infrastructure in place.
3156
3159
3157 2004-08-21 Fernando Perez <fperez@colorado.edu>
3160 2004-08-21 Fernando Perez <fperez@colorado.edu>
3158
3161
3159 * ipythonrc-pylab: Add matplotlib support.
3162 * ipythonrc-pylab: Add matplotlib support.
3160
3163
3161 * matplotlib_config.py: new files for matplotlib support, part of
3164 * matplotlib_config.py: new files for matplotlib support, part of
3162 the pylab profile.
3165 the pylab profile.
3163
3166
3164 * IPython/usage.py (__doc__): documented the threading options.
3167 * IPython/usage.py (__doc__): documented the threading options.
3165
3168
3166 2004-08-20 Fernando Perez <fperez@colorado.edu>
3169 2004-08-20 Fernando Perez <fperez@colorado.edu>
3167
3170
3168 * ipython: Modified the main calling routine to handle the -thread
3171 * ipython: Modified the main calling routine to handle the -thread
3169 and -mpthread options. This needs to be done as a top-level hack,
3172 and -mpthread options. This needs to be done as a top-level hack,
3170 because it determines which class to instantiate for IPython
3173 because it determines which class to instantiate for IPython
3171 itself.
3174 itself.
3172
3175
3173 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3176 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3174 classes to support multithreaded GTK operation without blocking,
3177 classes to support multithreaded GTK operation without blocking,
3175 and matplotlib with all backends. This is a lot of still very
3178 and matplotlib with all backends. This is a lot of still very
3176 experimental code, and threads are tricky. So it may still have a
3179 experimental code, and threads are tricky. So it may still have a
3177 few rough edges... This code owes a lot to
3180 few rough edges... This code owes a lot to
3178 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3181 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3179 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3182 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3180 to John Hunter for all the matplotlib work.
3183 to John Hunter for all the matplotlib work.
3181
3184
3182 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3185 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3183 options for gtk thread and matplotlib support.
3186 options for gtk thread and matplotlib support.
3184
3187
3185 2004-08-16 Fernando Perez <fperez@colorado.edu>
3188 2004-08-16 Fernando Perez <fperez@colorado.edu>
3186
3189
3187 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3190 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3188 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3191 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3189 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3192 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3190
3193
3191 2004-08-11 Fernando Perez <fperez@colorado.edu>
3194 2004-08-11 Fernando Perez <fperez@colorado.edu>
3192
3195
3193 * setup.py (isfile): Fix build so documentation gets updated for
3196 * setup.py (isfile): Fix build so documentation gets updated for
3194 rpms (it was only done for .tgz builds).
3197 rpms (it was only done for .tgz builds).
3195
3198
3196 2004-08-10 Fernando Perez <fperez@colorado.edu>
3199 2004-08-10 Fernando Perez <fperez@colorado.edu>
3197
3200
3198 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3201 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3199
3202
3200 * iplib.py : Silence syntax error exceptions in tab-completion.
3203 * iplib.py : Silence syntax error exceptions in tab-completion.
3201
3204
3202 2004-08-05 Fernando Perez <fperez@colorado.edu>
3205 2004-08-05 Fernando Perez <fperez@colorado.edu>
3203
3206
3204 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3207 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3205 'color off' mark for continuation prompts. This was causing long
3208 'color off' mark for continuation prompts. This was causing long
3206 continuation lines to mis-wrap.
3209 continuation lines to mis-wrap.
3207
3210
3208 2004-08-01 Fernando Perez <fperez@colorado.edu>
3211 2004-08-01 Fernando Perez <fperez@colorado.edu>
3209
3212
3210 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3213 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3211 for building ipython to be a parameter. All this is necessary
3214 for building ipython to be a parameter. All this is necessary
3212 right now to have a multithreaded version, but this insane
3215 right now to have a multithreaded version, but this insane
3213 non-design will be cleaned up soon. For now, it's a hack that
3216 non-design will be cleaned up soon. For now, it's a hack that
3214 works.
3217 works.
3215
3218
3216 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3219 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3217 args in various places. No bugs so far, but it's a dangerous
3220 args in various places. No bugs so far, but it's a dangerous
3218 practice.
3221 practice.
3219
3222
3220 2004-07-31 Fernando Perez <fperez@colorado.edu>
3223 2004-07-31 Fernando Perez <fperez@colorado.edu>
3221
3224
3222 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3225 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3223 fix completion of files with dots in their names under most
3226 fix completion of files with dots in their names under most
3224 profiles (pysh was OK because the completion order is different).
3227 profiles (pysh was OK because the completion order is different).
3225
3228
3226 2004-07-27 Fernando Perez <fperez@colorado.edu>
3229 2004-07-27 Fernando Perez <fperez@colorado.edu>
3227
3230
3228 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3231 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3229 keywords manually, b/c the one in keyword.py was removed in python
3232 keywords manually, b/c the one in keyword.py was removed in python
3230 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3233 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3231 This is NOT a bug under python 2.3 and earlier.
3234 This is NOT a bug under python 2.3 and earlier.
3232
3235
3233 2004-07-26 Fernando Perez <fperez@colorado.edu>
3236 2004-07-26 Fernando Perez <fperez@colorado.edu>
3234
3237
3235 * IPython/ultraTB.py (VerboseTB.text): Add another
3238 * IPython/ultraTB.py (VerboseTB.text): Add another
3236 linecache.checkcache() call to try to prevent inspect.py from
3239 linecache.checkcache() call to try to prevent inspect.py from
3237 crashing under python 2.3. I think this fixes
3240 crashing under python 2.3. I think this fixes
3238 http://www.scipy.net/roundup/ipython/issue17.
3241 http://www.scipy.net/roundup/ipython/issue17.
3239
3242
3240 2004-07-26 *** Released version 0.6.2
3243 2004-07-26 *** Released version 0.6.2
3241
3244
3242 2004-07-26 Fernando Perez <fperez@colorado.edu>
3245 2004-07-26 Fernando Perez <fperez@colorado.edu>
3243
3246
3244 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3247 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
3245 fail for any number.
3248 fail for any number.
3246 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3249 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
3247 empty bookmarks.
3250 empty bookmarks.
3248
3251
3249 2004-07-26 *** Released version 0.6.1
3252 2004-07-26 *** Released version 0.6.1
3250
3253
3251 2004-07-26 Fernando Perez <fperez@colorado.edu>
3254 2004-07-26 Fernando Perez <fperez@colorado.edu>
3252
3255
3253 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3256 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
3254
3257
3255 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3258 * IPython/iplib.py (protect_filename): Applied Ville's patch for
3256 escaping '()[]{}' in filenames.
3259 escaping '()[]{}' in filenames.
3257
3260
3258 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3261 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
3259 Python 2.2 users who lack a proper shlex.split.
3262 Python 2.2 users who lack a proper shlex.split.
3260
3263
3261 2004-07-19 Fernando Perez <fperez@colorado.edu>
3264 2004-07-19 Fernando Perez <fperez@colorado.edu>
3262
3265
3263 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3266 * IPython/iplib.py (InteractiveShell.init_readline): Add support
3264 for reading readline's init file. I follow the normal chain:
3267 for reading readline's init file. I follow the normal chain:
3265 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3268 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
3266 report by Mike Heeter. This closes
3269 report by Mike Heeter. This closes
3267 http://www.scipy.net/roundup/ipython/issue16.
3270 http://www.scipy.net/roundup/ipython/issue16.
3268
3271
3269 2004-07-18 Fernando Perez <fperez@colorado.edu>
3272 2004-07-18 Fernando Perez <fperez@colorado.edu>
3270
3273
3271 * IPython/iplib.py (__init__): Add better handling of '\' under
3274 * IPython/iplib.py (__init__): Add better handling of '\' under
3272 Win32 for filenames. After a patch by Ville.
3275 Win32 for filenames. After a patch by Ville.
3273
3276
3274 2004-07-17 Fernando Perez <fperez@colorado.edu>
3277 2004-07-17 Fernando Perez <fperez@colorado.edu>
3275
3278
3276 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3279 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3277 autocalling would be triggered for 'foo is bar' if foo is
3280 autocalling would be triggered for 'foo is bar' if foo is
3278 callable. I also cleaned up the autocall detection code to use a
3281 callable. I also cleaned up the autocall detection code to use a
3279 regexp, which is faster. Bug reported by Alexander Schmolck.
3282 regexp, which is faster. Bug reported by Alexander Schmolck.
3280
3283
3281 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3284 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
3282 '?' in them would confuse the help system. Reported by Alex
3285 '?' in them would confuse the help system. Reported by Alex
3283 Schmolck.
3286 Schmolck.
3284
3287
3285 2004-07-16 Fernando Perez <fperez@colorado.edu>
3288 2004-07-16 Fernando Perez <fperez@colorado.edu>
3286
3289
3287 * IPython/GnuplotInteractive.py (__all__): added plot2.
3290 * IPython/GnuplotInteractive.py (__all__): added plot2.
3288
3291
3289 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3292 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
3290 plotting dictionaries, lists or tuples of 1d arrays.
3293 plotting dictionaries, lists or tuples of 1d arrays.
3291
3294
3292 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3295 * IPython/Magic.py (Magic.magic_hist): small clenaups and
3293 optimizations.
3296 optimizations.
3294
3297
3295 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3298 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
3296 the information which was there from Janko's original IPP code:
3299 the information which was there from Janko's original IPP code:
3297
3300
3298 03.05.99 20:53 porto.ifm.uni-kiel.de
3301 03.05.99 20:53 porto.ifm.uni-kiel.de
3299 --Started changelog.
3302 --Started changelog.
3300 --make clear do what it say it does
3303 --make clear do what it say it does
3301 --added pretty output of lines from inputcache
3304 --added pretty output of lines from inputcache
3302 --Made Logger a mixin class, simplifies handling of switches
3305 --Made Logger a mixin class, simplifies handling of switches
3303 --Added own completer class. .string<TAB> expands to last history
3306 --Added own completer class. .string<TAB> expands to last history
3304 line which starts with string. The new expansion is also present
3307 line which starts with string. The new expansion is also present
3305 with Ctrl-r from the readline library. But this shows, who this
3308 with Ctrl-r from the readline library. But this shows, who this
3306 can be done for other cases.
3309 can be done for other cases.
3307 --Added convention that all shell functions should accept a
3310 --Added convention that all shell functions should accept a
3308 parameter_string This opens the door for different behaviour for
3311 parameter_string This opens the door for different behaviour for
3309 each function. @cd is a good example of this.
3312 each function. @cd is a good example of this.
3310
3313
3311 04.05.99 12:12 porto.ifm.uni-kiel.de
3314 04.05.99 12:12 porto.ifm.uni-kiel.de
3312 --added logfile rotation
3315 --added logfile rotation
3313 --added new mainloop method which freezes first the namespace
3316 --added new mainloop method which freezes first the namespace
3314
3317
3315 07.05.99 21:24 porto.ifm.uni-kiel.de
3318 07.05.99 21:24 porto.ifm.uni-kiel.de
3316 --added the docreader classes. Now there is a help system.
3319 --added the docreader classes. Now there is a help system.
3317 -This is only a first try. Currently it's not easy to put new
3320 -This is only a first try. Currently it's not easy to put new
3318 stuff in the indices. But this is the way to go. Info would be
3321 stuff in the indices. But this is the way to go. Info would be
3319 better, but HTML is every where and not everybody has an info
3322 better, but HTML is every where and not everybody has an info
3320 system installed and it's not so easy to change html-docs to info.
3323 system installed and it's not so easy to change html-docs to info.
3321 --added global logfile option
3324 --added global logfile option
3322 --there is now a hook for object inspection method pinfo needs to
3325 --there is now a hook for object inspection method pinfo needs to
3323 be provided for this. Can be reached by two '??'.
3326 be provided for this. Can be reached by two '??'.
3324
3327
3325 08.05.99 20:51 porto.ifm.uni-kiel.de
3328 08.05.99 20:51 porto.ifm.uni-kiel.de
3326 --added a README
3329 --added a README
3327 --bug in rc file. Something has changed so functions in the rc
3330 --bug in rc file. Something has changed so functions in the rc
3328 file need to reference the shell and not self. Not clear if it's a
3331 file need to reference the shell and not self. Not clear if it's a
3329 bug or feature.
3332 bug or feature.
3330 --changed rc file for new behavior
3333 --changed rc file for new behavior
3331
3334
3332 2004-07-15 Fernando Perez <fperez@colorado.edu>
3335 2004-07-15 Fernando Perez <fperez@colorado.edu>
3333
3336
3334 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3337 * IPython/Logger.py (Logger.log): fixed recent bug where the input
3335 cache was falling out of sync in bizarre manners when multi-line
3338 cache was falling out of sync in bizarre manners when multi-line
3336 input was present. Minor optimizations and cleanup.
3339 input was present. Minor optimizations and cleanup.
3337
3340
3338 (Logger): Remove old Changelog info for cleanup. This is the
3341 (Logger): Remove old Changelog info for cleanup. This is the
3339 information which was there from Janko's original code:
3342 information which was there from Janko's original code:
3340
3343
3341 Changes to Logger: - made the default log filename a parameter
3344 Changes to Logger: - made the default log filename a parameter
3342
3345
3343 - put a check for lines beginning with !@? in log(). Needed
3346 - put a check for lines beginning with !@? in log(). Needed
3344 (even if the handlers properly log their lines) for mid-session
3347 (even if the handlers properly log their lines) for mid-session
3345 logging activation to work properly. Without this, lines logged
3348 logging activation to work properly. Without this, lines logged
3346 in mid session, which get read from the cache, would end up
3349 in mid session, which get read from the cache, would end up
3347 'bare' (with !@? in the open) in the log. Now they are caught
3350 'bare' (with !@? in the open) in the log. Now they are caught
3348 and prepended with a #.
3351 and prepended with a #.
3349
3352
3350 * IPython/iplib.py (InteractiveShell.init_readline): added check
3353 * IPython/iplib.py (InteractiveShell.init_readline): added check
3351 in case MagicCompleter fails to be defined, so we don't crash.
3354 in case MagicCompleter fails to be defined, so we don't crash.
3352
3355
3353 2004-07-13 Fernando Perez <fperez@colorado.edu>
3356 2004-07-13 Fernando Perez <fperez@colorado.edu>
3354
3357
3355 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3358 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
3356 of EPS if the requested filename ends in '.eps'.
3359 of EPS if the requested filename ends in '.eps'.
3357
3360
3358 2004-07-04 Fernando Perez <fperez@colorado.edu>
3361 2004-07-04 Fernando Perez <fperez@colorado.edu>
3359
3362
3360 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3363 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
3361 escaping of quotes when calling the shell.
3364 escaping of quotes when calling the shell.
3362
3365
3363 2004-07-02 Fernando Perez <fperez@colorado.edu>
3366 2004-07-02 Fernando Perez <fperez@colorado.edu>
3364
3367
3365 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3368 * IPython/Prompts.py (CachedOutput.update): Fix problem with
3366 gettext not working because we were clobbering '_'. Fixes
3369 gettext not working because we were clobbering '_'. Fixes
3367 http://www.scipy.net/roundup/ipython/issue6.
3370 http://www.scipy.net/roundup/ipython/issue6.
3368
3371
3369 2004-07-01 Fernando Perez <fperez@colorado.edu>
3372 2004-07-01 Fernando Perez <fperez@colorado.edu>
3370
3373
3371 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3374 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
3372 into @cd. Patch by Ville.
3375 into @cd. Patch by Ville.
3373
3376
3374 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3377 * IPython/iplib.py (InteractiveShell.post_config_initialization):
3375 new function to store things after ipmaker runs. Patch by Ville.
3378 new function to store things after ipmaker runs. Patch by Ville.
3376 Eventually this will go away once ipmaker is removed and the class
3379 Eventually this will go away once ipmaker is removed and the class
3377 gets cleaned up, but for now it's ok. Key functionality here is
3380 gets cleaned up, but for now it's ok. Key functionality here is
3378 the addition of the persistent storage mechanism, a dict for
3381 the addition of the persistent storage mechanism, a dict for
3379 keeping data across sessions (for now just bookmarks, but more can
3382 keeping data across sessions (for now just bookmarks, but more can
3380 be implemented later).
3383 be implemented later).
3381
3384
3382 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3385 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
3383 persistent across sections. Patch by Ville, I modified it
3386 persistent across sections. Patch by Ville, I modified it
3384 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3387 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
3385 added a '-l' option to list all bookmarks.
3388 added a '-l' option to list all bookmarks.
3386
3389
3387 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3390 * IPython/iplib.py (InteractiveShell.atexit_operations): new
3388 center for cleanup. Registered with atexit.register(). I moved
3391 center for cleanup. Registered with atexit.register(). I moved
3389 here the old exit_cleanup(). After a patch by Ville.
3392 here the old exit_cleanup(). After a patch by Ville.
3390
3393
3391 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3394 * IPython/Magic.py (get_py_filename): added '~' to the accepted
3392 characters in the hacked shlex_split for python 2.2.
3395 characters in the hacked shlex_split for python 2.2.
3393
3396
3394 * IPython/iplib.py (file_matches): more fixes to filenames with
3397 * IPython/iplib.py (file_matches): more fixes to filenames with
3395 whitespace in them. It's not perfect, but limitations in python's
3398 whitespace in them. It's not perfect, but limitations in python's
3396 readline make it impossible to go further.
3399 readline make it impossible to go further.
3397
3400
3398 2004-06-29 Fernando Perez <fperez@colorado.edu>
3401 2004-06-29 Fernando Perez <fperez@colorado.edu>
3399
3402
3400 * IPython/iplib.py (file_matches): escape whitespace correctly in
3403 * IPython/iplib.py (file_matches): escape whitespace correctly in
3401 filename completions. Bug reported by Ville.
3404 filename completions. Bug reported by Ville.
3402
3405
3403 2004-06-28 Fernando Perez <fperez@colorado.edu>
3406 2004-06-28 Fernando Perez <fperez@colorado.edu>
3404
3407
3405 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3408 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
3406 the history file will be called 'history-PROFNAME' (or just
3409 the history file will be called 'history-PROFNAME' (or just
3407 'history' if no profile is loaded). I was getting annoyed at
3410 'history' if no profile is loaded). I was getting annoyed at
3408 getting my Numerical work history clobbered by pysh sessions.
3411 getting my Numerical work history clobbered by pysh sessions.
3409
3412
3410 * IPython/iplib.py (InteractiveShell.__init__): Internal
3413 * IPython/iplib.py (InteractiveShell.__init__): Internal
3411 getoutputerror() function so that we can honor the system_verbose
3414 getoutputerror() function so that we can honor the system_verbose
3412 flag for _all_ system calls. I also added escaping of #
3415 flag for _all_ system calls. I also added escaping of #
3413 characters here to avoid confusing Itpl.
3416 characters here to avoid confusing Itpl.
3414
3417
3415 * IPython/Magic.py (shlex_split): removed call to shell in
3418 * IPython/Magic.py (shlex_split): removed call to shell in
3416 parse_options and replaced it with shlex.split(). The annoying
3419 parse_options and replaced it with shlex.split(). The annoying
3417 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3420 part was that in Python 2.2, shlex.split() doesn't exist, so I had
3418 to backport it from 2.3, with several frail hacks (the shlex
3421 to backport it from 2.3, with several frail hacks (the shlex
3419 module is rather limited in 2.2). Thanks to a suggestion by Ville
3422 module is rather limited in 2.2). Thanks to a suggestion by Ville
3420 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3423 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
3421 problem.
3424 problem.
3422
3425
3423 (Magic.magic_system_verbose): new toggle to print the actual
3426 (Magic.magic_system_verbose): new toggle to print the actual
3424 system calls made by ipython. Mainly for debugging purposes.
3427 system calls made by ipython. Mainly for debugging purposes.
3425
3428
3426 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3429 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
3427 doesn't support persistence. Reported (and fix suggested) by
3430 doesn't support persistence. Reported (and fix suggested) by
3428 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3431 Travis Caldwell <travis_caldwell2000@yahoo.com>.
3429
3432
3430 2004-06-26 Fernando Perez <fperez@colorado.edu>
3433 2004-06-26 Fernando Perez <fperez@colorado.edu>
3431
3434
3432 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3435 * IPython/Logger.py (Logger.log): fix to handle correctly empty
3433 continue prompts.
3436 continue prompts.
3434
3437
3435 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3438 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
3436 function (basically a big docstring) and a few more things here to
3439 function (basically a big docstring) and a few more things here to
3437 speedup startup. pysh.py is now very lightweight. We want because
3440 speedup startup. pysh.py is now very lightweight. We want because
3438 it gets execfile'd, while InterpreterExec gets imported, so
3441 it gets execfile'd, while InterpreterExec gets imported, so
3439 byte-compilation saves time.
3442 byte-compilation saves time.
3440
3443
3441 2004-06-25 Fernando Perez <fperez@colorado.edu>
3444 2004-06-25 Fernando Perez <fperez@colorado.edu>
3442
3445
3443 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3446 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
3444 -NUM', which was recently broken.
3447 -NUM', which was recently broken.
3445
3448
3446 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3449 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
3447 in multi-line input (but not !!, which doesn't make sense there).
3450 in multi-line input (but not !!, which doesn't make sense there).
3448
3451
3449 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3452 * IPython/UserConfig/ipythonrc: made autoindent on by default.
3450 It's just too useful, and people can turn it off in the less
3453 It's just too useful, and people can turn it off in the less
3451 common cases where it's a problem.
3454 common cases where it's a problem.
3452
3455
3453 2004-06-24 Fernando Perez <fperez@colorado.edu>
3456 2004-06-24 Fernando Perez <fperez@colorado.edu>
3454
3457
3455 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3458 * IPython/iplib.py (InteractiveShell._prefilter): big change -
3456 special syntaxes (like alias calling) is now allied in multi-line
3459 special syntaxes (like alias calling) is now allied in multi-line
3457 input. This is still _very_ experimental, but it's necessary for
3460 input. This is still _very_ experimental, but it's necessary for
3458 efficient shell usage combining python looping syntax with system
3461 efficient shell usage combining python looping syntax with system
3459 calls. For now it's restricted to aliases, I don't think it
3462 calls. For now it's restricted to aliases, I don't think it
3460 really even makes sense to have this for magics.
3463 really even makes sense to have this for magics.
3461
3464
3462 2004-06-23 Fernando Perez <fperez@colorado.edu>
3465 2004-06-23 Fernando Perez <fperez@colorado.edu>
3463
3466
3464 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3467 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
3465 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3468 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
3466
3469
3467 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3470 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
3468 extensions under Windows (after code sent by Gary Bishop). The
3471 extensions under Windows (after code sent by Gary Bishop). The
3469 extensions considered 'executable' are stored in IPython's rc
3472 extensions considered 'executable' are stored in IPython's rc
3470 structure as win_exec_ext.
3473 structure as win_exec_ext.
3471
3474
3472 * IPython/genutils.py (shell): new function, like system() but
3475 * IPython/genutils.py (shell): new function, like system() but
3473 without return value. Very useful for interactive shell work.
3476 without return value. Very useful for interactive shell work.
3474
3477
3475 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3478 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
3476 delete aliases.
3479 delete aliases.
3477
3480
3478 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3481 * IPython/iplib.py (InteractiveShell.alias_table_update): make
3479 sure that the alias table doesn't contain python keywords.
3482 sure that the alias table doesn't contain python keywords.
3480
3483
3481 2004-06-21 Fernando Perez <fperez@colorado.edu>
3484 2004-06-21 Fernando Perez <fperez@colorado.edu>
3482
3485
3483 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3486 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
3484 non-existent items are found in $PATH. Reported by Thorsten.
3487 non-existent items are found in $PATH. Reported by Thorsten.
3485
3488
3486 2004-06-20 Fernando Perez <fperez@colorado.edu>
3489 2004-06-20 Fernando Perez <fperez@colorado.edu>
3487
3490
3488 * IPython/iplib.py (complete): modified the completer so that the
3491 * IPython/iplib.py (complete): modified the completer so that the
3489 order of priorities can be easily changed at runtime.
3492 order of priorities can be easily changed at runtime.
3490
3493
3491 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3494 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
3492 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3495 Modified to auto-execute all lines beginning with '~', '/' or '.'.
3493
3496
3494 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3497 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
3495 expand Python variables prepended with $ in all system calls. The
3498 expand Python variables prepended with $ in all system calls. The
3496 same was done to InteractiveShell.handle_shell_escape. Now all
3499 same was done to InteractiveShell.handle_shell_escape. Now all
3497 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3500 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
3498 expansion of python variables and expressions according to the
3501 expansion of python variables and expressions according to the
3499 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3502 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
3500
3503
3501 Though PEP-215 has been rejected, a similar (but simpler) one
3504 Though PEP-215 has been rejected, a similar (but simpler) one
3502 seems like it will go into Python 2.4, PEP-292 -
3505 seems like it will go into Python 2.4, PEP-292 -
3503 http://www.python.org/peps/pep-0292.html.
3506 http://www.python.org/peps/pep-0292.html.
3504
3507
3505 I'll keep the full syntax of PEP-215, since IPython has since the
3508 I'll keep the full syntax of PEP-215, since IPython has since the
3506 start used Ka-Ping Yee's reference implementation discussed there
3509 start used Ka-Ping Yee's reference implementation discussed there
3507 (Itpl), and I actually like the powerful semantics it offers.
3510 (Itpl), and I actually like the powerful semantics it offers.
3508
3511
3509 In order to access normal shell variables, the $ has to be escaped
3512 In order to access normal shell variables, the $ has to be escaped
3510 via an extra $. For example:
3513 via an extra $. For example:
3511
3514
3512 In [7]: PATH='a python variable'
3515 In [7]: PATH='a python variable'
3513
3516
3514 In [8]: !echo $PATH
3517 In [8]: !echo $PATH
3515 a python variable
3518 a python variable
3516
3519
3517 In [9]: !echo $$PATH
3520 In [9]: !echo $$PATH
3518 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3521 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
3519
3522
3520 (Magic.parse_options): escape $ so the shell doesn't evaluate
3523 (Magic.parse_options): escape $ so the shell doesn't evaluate
3521 things prematurely.
3524 things prematurely.
3522
3525
3523 * IPython/iplib.py (InteractiveShell.call_alias): added the
3526 * IPython/iplib.py (InteractiveShell.call_alias): added the
3524 ability for aliases to expand python variables via $.
3527 ability for aliases to expand python variables via $.
3525
3528
3526 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3529 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
3527 system, now there's a @rehash/@rehashx pair of magics. These work
3530 system, now there's a @rehash/@rehashx pair of magics. These work
3528 like the csh rehash command, and can be invoked at any time. They
3531 like the csh rehash command, and can be invoked at any time. They
3529 build a table of aliases to everything in the user's $PATH
3532 build a table of aliases to everything in the user's $PATH
3530 (@rehash uses everything, @rehashx is slower but only adds
3533 (@rehash uses everything, @rehashx is slower but only adds
3531 executable files). With this, the pysh.py-based shell profile can
3534 executable files). With this, the pysh.py-based shell profile can
3532 now simply call rehash upon startup, and full access to all
3535 now simply call rehash upon startup, and full access to all
3533 programs in the user's path is obtained.
3536 programs in the user's path is obtained.
3534
3537
3535 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3538 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
3536 functionality is now fully in place. I removed the old dynamic
3539 functionality is now fully in place. I removed the old dynamic
3537 code generation based approach, in favor of a much lighter one
3540 code generation based approach, in favor of a much lighter one
3538 based on a simple dict. The advantage is that this allows me to
3541 based on a simple dict. The advantage is that this allows me to
3539 now have thousands of aliases with negligible cost (unthinkable
3542 now have thousands of aliases with negligible cost (unthinkable
3540 with the old system).
3543 with the old system).
3541
3544
3542 2004-06-19 Fernando Perez <fperez@colorado.edu>
3545 2004-06-19 Fernando Perez <fperez@colorado.edu>
3543
3546
3544 * IPython/iplib.py (__init__): extended MagicCompleter class to
3547 * IPython/iplib.py (__init__): extended MagicCompleter class to
3545 also complete (last in priority) on user aliases.
3548 also complete (last in priority) on user aliases.
3546
3549
3547 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3550 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
3548 call to eval.
3551 call to eval.
3549 (ItplNS.__init__): Added a new class which functions like Itpl,
3552 (ItplNS.__init__): Added a new class which functions like Itpl,
3550 but allows configuring the namespace for the evaluation to occur
3553 but allows configuring the namespace for the evaluation to occur
3551 in.
3554 in.
3552
3555
3553 2004-06-18 Fernando Perez <fperez@colorado.edu>
3556 2004-06-18 Fernando Perez <fperez@colorado.edu>
3554
3557
3555 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3558 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
3556 better message when 'exit' or 'quit' are typed (a common newbie
3559 better message when 'exit' or 'quit' are typed (a common newbie
3557 confusion).
3560 confusion).
3558
3561
3559 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3562 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
3560 check for Windows users.
3563 check for Windows users.
3561
3564
3562 * IPython/iplib.py (InteractiveShell.user_setup): removed
3565 * IPython/iplib.py (InteractiveShell.user_setup): removed
3563 disabling of colors for Windows. I'll test at runtime and issue a
3566 disabling of colors for Windows. I'll test at runtime and issue a
3564 warning if Gary's readline isn't found, as to nudge users to
3567 warning if Gary's readline isn't found, as to nudge users to
3565 download it.
3568 download it.
3566
3569
3567 2004-06-16 Fernando Perez <fperez@colorado.edu>
3570 2004-06-16 Fernando Perez <fperez@colorado.edu>
3568
3571
3569 * IPython/genutils.py (Stream.__init__): changed to print errors
3572 * IPython/genutils.py (Stream.__init__): changed to print errors
3570 to sys.stderr. I had a circular dependency here. Now it's
3573 to sys.stderr. I had a circular dependency here. Now it's
3571 possible to run ipython as IDLE's shell (consider this pre-alpha,
3574 possible to run ipython as IDLE's shell (consider this pre-alpha,
3572 since true stdout things end up in the starting terminal instead
3575 since true stdout things end up in the starting terminal instead
3573 of IDLE's out).
3576 of IDLE's out).
3574
3577
3575 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3578 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
3576 users who haven't # updated their prompt_in2 definitions. Remove
3579 users who haven't # updated their prompt_in2 definitions. Remove
3577 eventually.
3580 eventually.
3578 (multiple_replace): added credit to original ASPN recipe.
3581 (multiple_replace): added credit to original ASPN recipe.
3579
3582
3580 2004-06-15 Fernando Perez <fperez@colorado.edu>
3583 2004-06-15 Fernando Perez <fperez@colorado.edu>
3581
3584
3582 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3585 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
3583 list of auto-defined aliases.
3586 list of auto-defined aliases.
3584
3587
3585 2004-06-13 Fernando Perez <fperez@colorado.edu>
3588 2004-06-13 Fernando Perez <fperez@colorado.edu>
3586
3589
3587 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3590 * setup.py (scriptfiles): Don't trigger win_post_install unless an
3588 install was really requested (so setup.py can be used for other
3591 install was really requested (so setup.py can be used for other
3589 things under Windows).
3592 things under Windows).
3590
3593
3591 2004-06-10 Fernando Perez <fperez@colorado.edu>
3594 2004-06-10 Fernando Perez <fperez@colorado.edu>
3592
3595
3593 * IPython/Logger.py (Logger.create_log): Manually remove any old
3596 * IPython/Logger.py (Logger.create_log): Manually remove any old
3594 backup, since os.remove may fail under Windows. Fixes bug
3597 backup, since os.remove may fail under Windows. Fixes bug
3595 reported by Thorsten.
3598 reported by Thorsten.
3596
3599
3597 2004-06-09 Fernando Perez <fperez@colorado.edu>
3600 2004-06-09 Fernando Perez <fperez@colorado.edu>
3598
3601
3599 * examples/example-embed.py: fixed all references to %n (replaced
3602 * examples/example-embed.py: fixed all references to %n (replaced
3600 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3603 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
3601 for all examples and the manual as well.
3604 for all examples and the manual as well.
3602
3605
3603 2004-06-08 Fernando Perez <fperez@colorado.edu>
3606 2004-06-08 Fernando Perez <fperez@colorado.edu>
3604
3607
3605 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3608 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
3606 alignment and color management. All 3 prompt subsystems now
3609 alignment and color management. All 3 prompt subsystems now
3607 inherit from BasePrompt.
3610 inherit from BasePrompt.
3608
3611
3609 * tools/release: updates for windows installer build and tag rpms
3612 * tools/release: updates for windows installer build and tag rpms
3610 with python version (since paths are fixed).
3613 with python version (since paths are fixed).
3611
3614
3612 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3615 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
3613 which will become eventually obsolete. Also fixed the default
3616 which will become eventually obsolete. Also fixed the default
3614 prompt_in2 to use \D, so at least new users start with the correct
3617 prompt_in2 to use \D, so at least new users start with the correct
3615 defaults.
3618 defaults.
3616 WARNING: Users with existing ipythonrc files will need to apply
3619 WARNING: Users with existing ipythonrc files will need to apply
3617 this fix manually!
3620 this fix manually!
3618
3621
3619 * setup.py: make windows installer (.exe). This is finally the
3622 * setup.py: make windows installer (.exe). This is finally the
3620 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3623 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
3621 which I hadn't included because it required Python 2.3 (or recent
3624 which I hadn't included because it required Python 2.3 (or recent
3622 distutils).
3625 distutils).
3623
3626
3624 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3627 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
3625 usage of new '\D' escape.
3628 usage of new '\D' escape.
3626
3629
3627 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3630 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
3628 lacks os.getuid())
3631 lacks os.getuid())
3629 (CachedOutput.set_colors): Added the ability to turn coloring
3632 (CachedOutput.set_colors): Added the ability to turn coloring
3630 on/off with @colors even for manually defined prompt colors. It
3633 on/off with @colors even for manually defined prompt colors. It
3631 uses a nasty global, but it works safely and via the generic color
3634 uses a nasty global, but it works safely and via the generic color
3632 handling mechanism.
3635 handling mechanism.
3633 (Prompt2.__init__): Introduced new escape '\D' for continuation
3636 (Prompt2.__init__): Introduced new escape '\D' for continuation
3634 prompts. It represents the counter ('\#') as dots.
3637 prompts. It represents the counter ('\#') as dots.
3635 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3638 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
3636 need to update their ipythonrc files and replace '%n' with '\D' in
3639 need to update their ipythonrc files and replace '%n' with '\D' in
3637 their prompt_in2 settings everywhere. Sorry, but there's
3640 their prompt_in2 settings everywhere. Sorry, but there's
3638 otherwise no clean way to get all prompts to properly align. The
3641 otherwise no clean way to get all prompts to properly align. The
3639 ipythonrc shipped with IPython has been updated.
3642 ipythonrc shipped with IPython has been updated.
3640
3643
3641 2004-06-07 Fernando Perez <fperez@colorado.edu>
3644 2004-06-07 Fernando Perez <fperez@colorado.edu>
3642
3645
3643 * setup.py (isfile): Pass local_icons option to latex2html, so the
3646 * setup.py (isfile): Pass local_icons option to latex2html, so the
3644 resulting HTML file is self-contained. Thanks to
3647 resulting HTML file is self-contained. Thanks to
3645 dryice-AT-liu.com.cn for the tip.
3648 dryice-AT-liu.com.cn for the tip.
3646
3649
3647 * pysh.py: I created a new profile 'shell', which implements a
3650 * pysh.py: I created a new profile 'shell', which implements a
3648 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3651 _rudimentary_ IPython-based shell. This is in NO WAY a realy
3649 system shell, nor will it become one anytime soon. It's mainly
3652 system shell, nor will it become one anytime soon. It's mainly
3650 meant to illustrate the use of the new flexible bash-like prompts.
3653 meant to illustrate the use of the new flexible bash-like prompts.
3651 I guess it could be used by hardy souls for true shell management,
3654 I guess it could be used by hardy souls for true shell management,
3652 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3655 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
3653 profile. This uses the InterpreterExec extension provided by
3656 profile. This uses the InterpreterExec extension provided by
3654 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3657 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
3655
3658
3656 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3659 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
3657 auto-align itself with the length of the previous input prompt
3660 auto-align itself with the length of the previous input prompt
3658 (taking into account the invisible color escapes).
3661 (taking into account the invisible color escapes).
3659 (CachedOutput.__init__): Large restructuring of this class. Now
3662 (CachedOutput.__init__): Large restructuring of this class. Now
3660 all three prompts (primary1, primary2, output) are proper objects,
3663 all three prompts (primary1, primary2, output) are proper objects,
3661 managed by the 'parent' CachedOutput class. The code is still a
3664 managed by the 'parent' CachedOutput class. The code is still a
3662 bit hackish (all prompts share state via a pointer to the cache),
3665 bit hackish (all prompts share state via a pointer to the cache),
3663 but it's overall far cleaner than before.
3666 but it's overall far cleaner than before.
3664
3667
3665 * IPython/genutils.py (getoutputerror): modified to add verbose,
3668 * IPython/genutils.py (getoutputerror): modified to add verbose,
3666 debug and header options. This makes the interface of all getout*
3669 debug and header options. This makes the interface of all getout*
3667 functions uniform.
3670 functions uniform.
3668 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3671 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
3669
3672
3670 * IPython/Magic.py (Magic.default_option): added a function to
3673 * IPython/Magic.py (Magic.default_option): added a function to
3671 allow registering default options for any magic command. This
3674 allow registering default options for any magic command. This
3672 makes it easy to have profiles which customize the magics globally
3675 makes it easy to have profiles which customize the magics globally
3673 for a certain use. The values set through this function are
3676 for a certain use. The values set through this function are
3674 picked up by the parse_options() method, which all magics should
3677 picked up by the parse_options() method, which all magics should
3675 use to parse their options.
3678 use to parse their options.
3676
3679
3677 * IPython/genutils.py (warn): modified the warnings framework to
3680 * IPython/genutils.py (warn): modified the warnings framework to
3678 use the Term I/O class. I'm trying to slowly unify all of
3681 use the Term I/O class. I'm trying to slowly unify all of
3679 IPython's I/O operations to pass through Term.
3682 IPython's I/O operations to pass through Term.
3680
3683
3681 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3684 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
3682 the secondary prompt to correctly match the length of the primary
3685 the secondary prompt to correctly match the length of the primary
3683 one for any prompt. Now multi-line code will properly line up
3686 one for any prompt. Now multi-line code will properly line up
3684 even for path dependent prompts, such as the new ones available
3687 even for path dependent prompts, such as the new ones available
3685 via the prompt_specials.
3688 via the prompt_specials.
3686
3689
3687 2004-06-06 Fernando Perez <fperez@colorado.edu>
3690 2004-06-06 Fernando Perez <fperez@colorado.edu>
3688
3691
3689 * IPython/Prompts.py (prompt_specials): Added the ability to have
3692 * IPython/Prompts.py (prompt_specials): Added the ability to have
3690 bash-like special sequences in the prompts, which get
3693 bash-like special sequences in the prompts, which get
3691 automatically expanded. Things like hostname, current working
3694 automatically expanded. Things like hostname, current working
3692 directory and username are implemented already, but it's easy to
3695 directory and username are implemented already, but it's easy to
3693 add more in the future. Thanks to a patch by W.J. van der Laan
3696 add more in the future. Thanks to a patch by W.J. van der Laan
3694 <gnufnork-AT-hetdigitalegat.nl>
3697 <gnufnork-AT-hetdigitalegat.nl>
3695 (prompt_specials): Added color support for prompt strings, so
3698 (prompt_specials): Added color support for prompt strings, so
3696 users can define arbitrary color setups for their prompts.
3699 users can define arbitrary color setups for their prompts.
3697
3700
3698 2004-06-05 Fernando Perez <fperez@colorado.edu>
3701 2004-06-05 Fernando Perez <fperez@colorado.edu>
3699
3702
3700 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3703 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
3701 code to load Gary Bishop's readline and configure it
3704 code to load Gary Bishop's readline and configure it
3702 automatically. Thanks to Gary for help on this.
3705 automatically. Thanks to Gary for help on this.
3703
3706
3704 2004-06-01 Fernando Perez <fperez@colorado.edu>
3707 2004-06-01 Fernando Perez <fperez@colorado.edu>
3705
3708
3706 * IPython/Logger.py (Logger.create_log): fix bug for logging
3709 * IPython/Logger.py (Logger.create_log): fix bug for logging
3707 with no filename (previous fix was incomplete).
3710 with no filename (previous fix was incomplete).
3708
3711
3709 2004-05-25 Fernando Perez <fperez@colorado.edu>
3712 2004-05-25 Fernando Perez <fperez@colorado.edu>
3710
3713
3711 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3714 * IPython/Magic.py (Magic.parse_options): fix bug where naked
3712 parens would get passed to the shell.
3715 parens would get passed to the shell.
3713
3716
3714 2004-05-20 Fernando Perez <fperez@colorado.edu>
3717 2004-05-20 Fernando Perez <fperez@colorado.edu>
3715
3718
3716 * IPython/Magic.py (Magic.magic_prun): changed default profile
3719 * IPython/Magic.py (Magic.magic_prun): changed default profile
3717 sort order to 'time' (the more common profiling need).
3720 sort order to 'time' (the more common profiling need).
3718
3721
3719 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3722 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
3720 so that source code shown is guaranteed in sync with the file on
3723 so that source code shown is guaranteed in sync with the file on
3721 disk (also changed in psource). Similar fix to the one for
3724 disk (also changed in psource). Similar fix to the one for
3722 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3725 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
3723 <yann.ledu-AT-noos.fr>.
3726 <yann.ledu-AT-noos.fr>.
3724
3727
3725 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3728 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
3726 with a single option would not be correctly parsed. Closes
3729 with a single option would not be correctly parsed. Closes
3727 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3730 http://www.scipy.net/roundup/ipython/issue14. This bug had been
3728 introduced in 0.6.0 (on 2004-05-06).
3731 introduced in 0.6.0 (on 2004-05-06).
3729
3732
3730 2004-05-13 *** Released version 0.6.0
3733 2004-05-13 *** Released version 0.6.0
3731
3734
3732 2004-05-13 Fernando Perez <fperez@colorado.edu>
3735 2004-05-13 Fernando Perez <fperez@colorado.edu>
3733
3736
3734 * debian/: Added debian/ directory to CVS, so that debian support
3737 * debian/: Added debian/ directory to CVS, so that debian support
3735 is publicly accessible. The debian package is maintained by Jack
3738 is publicly accessible. The debian package is maintained by Jack
3736 Moffit <jack-AT-xiph.org>.
3739 Moffit <jack-AT-xiph.org>.
3737
3740
3738 * Documentation: included the notes about an ipython-based system
3741 * Documentation: included the notes about an ipython-based system
3739 shell (the hypothetical 'pysh') into the new_design.pdf document,
3742 shell (the hypothetical 'pysh') into the new_design.pdf document,
3740 so that these ideas get distributed to users along with the
3743 so that these ideas get distributed to users along with the
3741 official documentation.
3744 official documentation.
3742
3745
3743 2004-05-10 Fernando Perez <fperez@colorado.edu>
3746 2004-05-10 Fernando Perez <fperez@colorado.edu>
3744
3747
3745 * IPython/Logger.py (Logger.create_log): fix recently introduced
3748 * IPython/Logger.py (Logger.create_log): fix recently introduced
3746 bug (misindented line) where logstart would fail when not given an
3749 bug (misindented line) where logstart would fail when not given an
3747 explicit filename.
3750 explicit filename.
3748
3751
3749 2004-05-09 Fernando Perez <fperez@colorado.edu>
3752 2004-05-09 Fernando Perez <fperez@colorado.edu>
3750
3753
3751 * IPython/Magic.py (Magic.parse_options): skip system call when
3754 * IPython/Magic.py (Magic.parse_options): skip system call when
3752 there are no options to look for. Faster, cleaner for the common
3755 there are no options to look for. Faster, cleaner for the common
3753 case.
3756 case.
3754
3757
3755 * Documentation: many updates to the manual: describing Windows
3758 * Documentation: many updates to the manual: describing Windows
3756 support better, Gnuplot updates, credits, misc small stuff. Also
3759 support better, Gnuplot updates, credits, misc small stuff. Also
3757 updated the new_design doc a bit.
3760 updated the new_design doc a bit.
3758
3761
3759 2004-05-06 *** Released version 0.6.0.rc1
3762 2004-05-06 *** Released version 0.6.0.rc1
3760
3763
3761 2004-05-06 Fernando Perez <fperez@colorado.edu>
3764 2004-05-06 Fernando Perez <fperez@colorado.edu>
3762
3765
3763 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3766 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
3764 operations to use the vastly more efficient list/''.join() method.
3767 operations to use the vastly more efficient list/''.join() method.
3765 (FormattedTB.text): Fix
3768 (FormattedTB.text): Fix
3766 http://www.scipy.net/roundup/ipython/issue12 - exception source
3769 http://www.scipy.net/roundup/ipython/issue12 - exception source
3767 extract not updated after reload. Thanks to Mike Salib
3770 extract not updated after reload. Thanks to Mike Salib
3768 <msalib-AT-mit.edu> for pinning the source of the problem.
3771 <msalib-AT-mit.edu> for pinning the source of the problem.
3769 Fortunately, the solution works inside ipython and doesn't require
3772 Fortunately, the solution works inside ipython and doesn't require
3770 any changes to python proper.
3773 any changes to python proper.
3771
3774
3772 * IPython/Magic.py (Magic.parse_options): Improved to process the
3775 * IPython/Magic.py (Magic.parse_options): Improved to process the
3773 argument list as a true shell would (by actually using the
3776 argument list as a true shell would (by actually using the
3774 underlying system shell). This way, all @magics automatically get
3777 underlying system shell). This way, all @magics automatically get
3775 shell expansion for variables. Thanks to a comment by Alex
3778 shell expansion for variables. Thanks to a comment by Alex
3776 Schmolck.
3779 Schmolck.
3777
3780
3778 2004-04-04 Fernando Perez <fperez@colorado.edu>
3781 2004-04-04 Fernando Perez <fperez@colorado.edu>
3779
3782
3780 * IPython/iplib.py (InteractiveShell.interact): Added a special
3783 * IPython/iplib.py (InteractiveShell.interact): Added a special
3781 trap for a debugger quit exception, which is basically impossible
3784 trap for a debugger quit exception, which is basically impossible
3782 to handle by normal mechanisms, given what pdb does to the stack.
3785 to handle by normal mechanisms, given what pdb does to the stack.
3783 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3786 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3784
3787
3785 2004-04-03 Fernando Perez <fperez@colorado.edu>
3788 2004-04-03 Fernando Perez <fperez@colorado.edu>
3786
3789
3787 * IPython/genutils.py (Term): Standardized the names of the Term
3790 * IPython/genutils.py (Term): Standardized the names of the Term
3788 class streams to cin/cout/cerr, following C++ naming conventions
3791 class streams to cin/cout/cerr, following C++ naming conventions
3789 (I can't use in/out/err because 'in' is not a valid attribute
3792 (I can't use in/out/err because 'in' is not a valid attribute
3790 name).
3793 name).
3791
3794
3792 * IPython/iplib.py (InteractiveShell.interact): don't increment
3795 * IPython/iplib.py (InteractiveShell.interact): don't increment
3793 the prompt if there's no user input. By Daniel 'Dang' Griffith
3796 the prompt if there's no user input. By Daniel 'Dang' Griffith
3794 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3797 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3795 Francois Pinard.
3798 Francois Pinard.
3796
3799
3797 2004-04-02 Fernando Perez <fperez@colorado.edu>
3800 2004-04-02 Fernando Perez <fperez@colorado.edu>
3798
3801
3799 * IPython/genutils.py (Stream.__init__): Modified to survive at
3802 * IPython/genutils.py (Stream.__init__): Modified to survive at
3800 least importing in contexts where stdin/out/err aren't true file
3803 least importing in contexts where stdin/out/err aren't true file
3801 objects, such as PyCrust (they lack fileno() and mode). However,
3804 objects, such as PyCrust (they lack fileno() and mode). However,
3802 the recovery facilities which rely on these things existing will
3805 the recovery facilities which rely on these things existing will
3803 not work.
3806 not work.
3804
3807
3805 2004-04-01 Fernando Perez <fperez@colorado.edu>
3808 2004-04-01 Fernando Perez <fperez@colorado.edu>
3806
3809
3807 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3810 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3808 use the new getoutputerror() function, so it properly
3811 use the new getoutputerror() function, so it properly
3809 distinguishes stdout/err.
3812 distinguishes stdout/err.
3810
3813
3811 * IPython/genutils.py (getoutputerror): added a function to
3814 * IPython/genutils.py (getoutputerror): added a function to
3812 capture separately the standard output and error of a command.
3815 capture separately the standard output and error of a command.
3813 After a comment from dang on the mailing lists. This code is
3816 After a comment from dang on the mailing lists. This code is
3814 basically a modified version of commands.getstatusoutput(), from
3817 basically a modified version of commands.getstatusoutput(), from
3815 the standard library.
3818 the standard library.
3816
3819
3817 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3820 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3818 '!!' as a special syntax (shorthand) to access @sx.
3821 '!!' as a special syntax (shorthand) to access @sx.
3819
3822
3820 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3823 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3821 command and return its output as a list split on '\n'.
3824 command and return its output as a list split on '\n'.
3822
3825
3823 2004-03-31 Fernando Perez <fperez@colorado.edu>
3826 2004-03-31 Fernando Perez <fperez@colorado.edu>
3824
3827
3825 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3828 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3826 method to dictionaries used as FakeModule instances if they lack
3829 method to dictionaries used as FakeModule instances if they lack
3827 it. At least pydoc in python2.3 breaks for runtime-defined
3830 it. At least pydoc in python2.3 breaks for runtime-defined
3828 functions without this hack. At some point I need to _really_
3831 functions without this hack. At some point I need to _really_
3829 understand what FakeModule is doing, because it's a gross hack.
3832 understand what FakeModule is doing, because it's a gross hack.
3830 But it solves Arnd's problem for now...
3833 But it solves Arnd's problem for now...
3831
3834
3832 2004-02-27 Fernando Perez <fperez@colorado.edu>
3835 2004-02-27 Fernando Perez <fperez@colorado.edu>
3833
3836
3834 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3837 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3835 mode would behave erratically. Also increased the number of
3838 mode would behave erratically. Also increased the number of
3836 possible logs in rotate mod to 999. Thanks to Rod Holland
3839 possible logs in rotate mod to 999. Thanks to Rod Holland
3837 <rhh@StructureLABS.com> for the report and fixes.
3840 <rhh@StructureLABS.com> for the report and fixes.
3838
3841
3839 2004-02-26 Fernando Perez <fperez@colorado.edu>
3842 2004-02-26 Fernando Perez <fperez@colorado.edu>
3840
3843
3841 * IPython/genutils.py (page): Check that the curses module really
3844 * IPython/genutils.py (page): Check that the curses module really
3842 has the initscr attribute before trying to use it. For some
3845 has the initscr attribute before trying to use it. For some
3843 reason, the Solaris curses module is missing this. I think this
3846 reason, the Solaris curses module is missing this. I think this
3844 should be considered a Solaris python bug, but I'm not sure.
3847 should be considered a Solaris python bug, but I'm not sure.
3845
3848
3846 2004-01-17 Fernando Perez <fperez@colorado.edu>
3849 2004-01-17 Fernando Perez <fperez@colorado.edu>
3847
3850
3848 * IPython/genutils.py (Stream.__init__): Changes to try to make
3851 * IPython/genutils.py (Stream.__init__): Changes to try to make
3849 ipython robust against stdin/out/err being closed by the user.
3852 ipython robust against stdin/out/err being closed by the user.
3850 This is 'user error' (and blocks a normal python session, at least
3853 This is 'user error' (and blocks a normal python session, at least
3851 the stdout case). However, Ipython should be able to survive such
3854 the stdout case). However, Ipython should be able to survive such
3852 instances of abuse as gracefully as possible. To simplify the
3855 instances of abuse as gracefully as possible. To simplify the
3853 coding and maintain compatibility with Gary Bishop's Term
3856 coding and maintain compatibility with Gary Bishop's Term
3854 contributions, I've made use of classmethods for this. I think
3857 contributions, I've made use of classmethods for this. I think
3855 this introduces a dependency on python 2.2.
3858 this introduces a dependency on python 2.2.
3856
3859
3857 2004-01-13 Fernando Perez <fperez@colorado.edu>
3860 2004-01-13 Fernando Perez <fperez@colorado.edu>
3858
3861
3859 * IPython/numutils.py (exp_safe): simplified the code a bit and
3862 * IPython/numutils.py (exp_safe): simplified the code a bit and
3860 removed the need for importing the kinds module altogether.
3863 removed the need for importing the kinds module altogether.
3861
3864
3862 2004-01-06 Fernando Perez <fperez@colorado.edu>
3865 2004-01-06 Fernando Perez <fperez@colorado.edu>
3863
3866
3864 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3867 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3865 a magic function instead, after some community feedback. No
3868 a magic function instead, after some community feedback. No
3866 special syntax will exist for it, but its name is deliberately
3869 special syntax will exist for it, but its name is deliberately
3867 very short.
3870 very short.
3868
3871
3869 2003-12-20 Fernando Perez <fperez@colorado.edu>
3872 2003-12-20 Fernando Perez <fperez@colorado.edu>
3870
3873
3871 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3874 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3872 new functionality, to automagically assign the result of a shell
3875 new functionality, to automagically assign the result of a shell
3873 command to a variable. I'll solicit some community feedback on
3876 command to a variable. I'll solicit some community feedback on
3874 this before making it permanent.
3877 this before making it permanent.
3875
3878
3876 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3879 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3877 requested about callables for which inspect couldn't obtain a
3880 requested about callables for which inspect couldn't obtain a
3878 proper argspec. Thanks to a crash report sent by Etienne
3881 proper argspec. Thanks to a crash report sent by Etienne
3879 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3882 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3880
3883
3881 2003-12-09 Fernando Perez <fperez@colorado.edu>
3884 2003-12-09 Fernando Perez <fperez@colorado.edu>
3882
3885
3883 * IPython/genutils.py (page): patch for the pager to work across
3886 * IPython/genutils.py (page): patch for the pager to work across
3884 various versions of Windows. By Gary Bishop.
3887 various versions of Windows. By Gary Bishop.
3885
3888
3886 2003-12-04 Fernando Perez <fperez@colorado.edu>
3889 2003-12-04 Fernando Perez <fperez@colorado.edu>
3887
3890
3888 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3891 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3889 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3892 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3890 While I tested this and it looks ok, there may still be corner
3893 While I tested this and it looks ok, there may still be corner
3891 cases I've missed.
3894 cases I've missed.
3892
3895
3893 2003-12-01 Fernando Perez <fperez@colorado.edu>
3896 2003-12-01 Fernando Perez <fperez@colorado.edu>
3894
3897
3895 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3898 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3896 where a line like 'p,q=1,2' would fail because the automagic
3899 where a line like 'p,q=1,2' would fail because the automagic
3897 system would be triggered for @p.
3900 system would be triggered for @p.
3898
3901
3899 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3902 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3900 cleanups, code unmodified.
3903 cleanups, code unmodified.
3901
3904
3902 * IPython/genutils.py (Term): added a class for IPython to handle
3905 * IPython/genutils.py (Term): added a class for IPython to handle
3903 output. In most cases it will just be a proxy for stdout/err, but
3906 output. In most cases it will just be a proxy for stdout/err, but
3904 having this allows modifications to be made for some platforms,
3907 having this allows modifications to be made for some platforms,
3905 such as handling color escapes under Windows. All of this code
3908 such as handling color escapes under Windows. All of this code
3906 was contributed by Gary Bishop, with minor modifications by me.
3909 was contributed by Gary Bishop, with minor modifications by me.
3907 The actual changes affect many files.
3910 The actual changes affect many files.
3908
3911
3909 2003-11-30 Fernando Perez <fperez@colorado.edu>
3912 2003-11-30 Fernando Perez <fperez@colorado.edu>
3910
3913
3911 * IPython/iplib.py (file_matches): new completion code, courtesy
3914 * IPython/iplib.py (file_matches): new completion code, courtesy
3912 of Jeff Collins. This enables filename completion again under
3915 of Jeff Collins. This enables filename completion again under
3913 python 2.3, which disabled it at the C level.
3916 python 2.3, which disabled it at the C level.
3914
3917
3915 2003-11-11 Fernando Perez <fperez@colorado.edu>
3918 2003-11-11 Fernando Perez <fperez@colorado.edu>
3916
3919
3917 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3920 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3918 for Numeric.array(map(...)), but often convenient.
3921 for Numeric.array(map(...)), but often convenient.
3919
3922
3920 2003-11-05 Fernando Perez <fperez@colorado.edu>
3923 2003-11-05 Fernando Perez <fperez@colorado.edu>
3921
3924
3922 * IPython/numutils.py (frange): Changed a call from int() to
3925 * IPython/numutils.py (frange): Changed a call from int() to
3923 int(round()) to prevent a problem reported with arange() in the
3926 int(round()) to prevent a problem reported with arange() in the
3924 numpy list.
3927 numpy list.
3925
3928
3926 2003-10-06 Fernando Perez <fperez@colorado.edu>
3929 2003-10-06 Fernando Perez <fperez@colorado.edu>
3927
3930
3928 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3931 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3929 prevent crashes if sys lacks an argv attribute (it happens with
3932 prevent crashes if sys lacks an argv attribute (it happens with
3930 embedded interpreters which build a bare-bones sys module).
3933 embedded interpreters which build a bare-bones sys module).
3931 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3934 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3932
3935
3933 2003-09-24 Fernando Perez <fperez@colorado.edu>
3936 2003-09-24 Fernando Perez <fperez@colorado.edu>
3934
3937
3935 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3938 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3936 to protect against poorly written user objects where __getattr__
3939 to protect against poorly written user objects where __getattr__
3937 raises exceptions other than AttributeError. Thanks to a bug
3940 raises exceptions other than AttributeError. Thanks to a bug
3938 report by Oliver Sander <osander-AT-gmx.de>.
3941 report by Oliver Sander <osander-AT-gmx.de>.
3939
3942
3940 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3943 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3941 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3944 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3942
3945
3943 2003-09-09 Fernando Perez <fperez@colorado.edu>
3946 2003-09-09 Fernando Perez <fperez@colorado.edu>
3944
3947
3945 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3948 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3946 unpacking a list whith a callable as first element would
3949 unpacking a list whith a callable as first element would
3947 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3950 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3948 Collins.
3951 Collins.
3949
3952
3950 2003-08-25 *** Released version 0.5.0
3953 2003-08-25 *** Released version 0.5.0
3951
3954
3952 2003-08-22 Fernando Perez <fperez@colorado.edu>
3955 2003-08-22 Fernando Perez <fperez@colorado.edu>
3953
3956
3954 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3957 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3955 improperly defined user exceptions. Thanks to feedback from Mark
3958 improperly defined user exceptions. Thanks to feedback from Mark
3956 Russell <mrussell-AT-verio.net>.
3959 Russell <mrussell-AT-verio.net>.
3957
3960
3958 2003-08-20 Fernando Perez <fperez@colorado.edu>
3961 2003-08-20 Fernando Perez <fperez@colorado.edu>
3959
3962
3960 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3963 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3961 printing so that it would print multi-line string forms starting
3964 printing so that it would print multi-line string forms starting
3962 with a new line. This way the formatting is better respected for
3965 with a new line. This way the formatting is better respected for
3963 objects which work hard to make nice string forms.
3966 objects which work hard to make nice string forms.
3964
3967
3965 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3968 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3966 autocall would overtake data access for objects with both
3969 autocall would overtake data access for objects with both
3967 __getitem__ and __call__.
3970 __getitem__ and __call__.
3968
3971
3969 2003-08-19 *** Released version 0.5.0-rc1
3972 2003-08-19 *** Released version 0.5.0-rc1
3970
3973
3971 2003-08-19 Fernando Perez <fperez@colorado.edu>
3974 2003-08-19 Fernando Perez <fperez@colorado.edu>
3972
3975
3973 * IPython/deep_reload.py (load_tail): single tiny change here
3976 * IPython/deep_reload.py (load_tail): single tiny change here
3974 seems to fix the long-standing bug of dreload() failing to work
3977 seems to fix the long-standing bug of dreload() failing to work
3975 for dotted names. But this module is pretty tricky, so I may have
3978 for dotted names. But this module is pretty tricky, so I may have
3976 missed some subtlety. Needs more testing!.
3979 missed some subtlety. Needs more testing!.
3977
3980
3978 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3981 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3979 exceptions which have badly implemented __str__ methods.
3982 exceptions which have badly implemented __str__ methods.
3980 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3983 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3981 which I've been getting reports about from Python 2.3 users. I
3984 which I've been getting reports about from Python 2.3 users. I
3982 wish I had a simple test case to reproduce the problem, so I could
3985 wish I had a simple test case to reproduce the problem, so I could
3983 either write a cleaner workaround or file a bug report if
3986 either write a cleaner workaround or file a bug report if
3984 necessary.
3987 necessary.
3985
3988
3986 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3989 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3987 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3990 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3988 a bug report by Tjabo Kloppenburg.
3991 a bug report by Tjabo Kloppenburg.
3989
3992
3990 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3993 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3991 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3994 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3992 seems rather unstable. Thanks to a bug report by Tjabo
3995 seems rather unstable. Thanks to a bug report by Tjabo
3993 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3996 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3994
3997
3995 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3998 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3996 this out soon because of the critical fixes in the inner loop for
3999 this out soon because of the critical fixes in the inner loop for
3997 generators.
4000 generators.
3998
4001
3999 * IPython/Magic.py (Magic.getargspec): removed. This (and
4002 * IPython/Magic.py (Magic.getargspec): removed. This (and
4000 _get_def) have been obsoleted by OInspect for a long time, I
4003 _get_def) have been obsoleted by OInspect for a long time, I
4001 hadn't noticed that they were dead code.
4004 hadn't noticed that they were dead code.
4002 (Magic._ofind): restored _ofind functionality for a few literals
4005 (Magic._ofind): restored _ofind functionality for a few literals
4003 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4006 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4004 for things like "hello".capitalize?, since that would require a
4007 for things like "hello".capitalize?, since that would require a
4005 potentially dangerous eval() again.
4008 potentially dangerous eval() again.
4006
4009
4007 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4010 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4008 logic a bit more to clean up the escapes handling and minimize the
4011 logic a bit more to clean up the escapes handling and minimize the
4009 use of _ofind to only necessary cases. The interactive 'feel' of
4012 use of _ofind to only necessary cases. The interactive 'feel' of
4010 IPython should have improved quite a bit with the changes in
4013 IPython should have improved quite a bit with the changes in
4011 _prefilter and _ofind (besides being far safer than before).
4014 _prefilter and _ofind (besides being far safer than before).
4012
4015
4013 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4016 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4014 obscure, never reported). Edit would fail to find the object to
4017 obscure, never reported). Edit would fail to find the object to
4015 edit under some circumstances.
4018 edit under some circumstances.
4016 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4019 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4017 which were causing double-calling of generators. Those eval calls
4020 which were causing double-calling of generators. Those eval calls
4018 were _very_ dangerous, since code with side effects could be
4021 were _very_ dangerous, since code with side effects could be
4019 triggered. As they say, 'eval is evil'... These were the
4022 triggered. As they say, 'eval is evil'... These were the
4020 nastiest evals in IPython. Besides, _ofind is now far simpler,
4023 nastiest evals in IPython. Besides, _ofind is now far simpler,
4021 and it should also be quite a bit faster. Its use of inspect is
4024 and it should also be quite a bit faster. Its use of inspect is
4022 also safer, so perhaps some of the inspect-related crashes I've
4025 also safer, so perhaps some of the inspect-related crashes I've
4023 seen lately with Python 2.3 might be taken care of. That will
4026 seen lately with Python 2.3 might be taken care of. That will
4024 need more testing.
4027 need more testing.
4025
4028
4026 2003-08-17 Fernando Perez <fperez@colorado.edu>
4029 2003-08-17 Fernando Perez <fperez@colorado.edu>
4027
4030
4028 * IPython/iplib.py (InteractiveShell._prefilter): significant
4031 * IPython/iplib.py (InteractiveShell._prefilter): significant
4029 simplifications to the logic for handling user escapes. Faster
4032 simplifications to the logic for handling user escapes. Faster
4030 and simpler code.
4033 and simpler code.
4031
4034
4032 2003-08-14 Fernando Perez <fperez@colorado.edu>
4035 2003-08-14 Fernando Perez <fperez@colorado.edu>
4033
4036
4034 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4037 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4035 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4038 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4036 but it should be quite a bit faster. And the recursive version
4039 but it should be quite a bit faster. And the recursive version
4037 generated O(log N) intermediate storage for all rank>1 arrays,
4040 generated O(log N) intermediate storage for all rank>1 arrays,
4038 even if they were contiguous.
4041 even if they were contiguous.
4039 (l1norm): Added this function.
4042 (l1norm): Added this function.
4040 (norm): Added this function for arbitrary norms (including
4043 (norm): Added this function for arbitrary norms (including
4041 l-infinity). l1 and l2 are still special cases for convenience
4044 l-infinity). l1 and l2 are still special cases for convenience
4042 and speed.
4045 and speed.
4043
4046
4044 2003-08-03 Fernando Perez <fperez@colorado.edu>
4047 2003-08-03 Fernando Perez <fperez@colorado.edu>
4045
4048
4046 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4049 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4047 exceptions, which now raise PendingDeprecationWarnings in Python
4050 exceptions, which now raise PendingDeprecationWarnings in Python
4048 2.3. There were some in Magic and some in Gnuplot2.
4051 2.3. There were some in Magic and some in Gnuplot2.
4049
4052
4050 2003-06-30 Fernando Perez <fperez@colorado.edu>
4053 2003-06-30 Fernando Perez <fperez@colorado.edu>
4051
4054
4052 * IPython/genutils.py (page): modified to call curses only for
4055 * IPython/genutils.py (page): modified to call curses only for
4053 terminals where TERM=='xterm'. After problems under many other
4056 terminals where TERM=='xterm'. After problems under many other
4054 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4057 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4055
4058
4056 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4059 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4057 would be triggered when readline was absent. This was just an old
4060 would be triggered when readline was absent. This was just an old
4058 debugging statement I'd forgotten to take out.
4061 debugging statement I'd forgotten to take out.
4059
4062
4060 2003-06-20 Fernando Perez <fperez@colorado.edu>
4063 2003-06-20 Fernando Perez <fperez@colorado.edu>
4061
4064
4062 * IPython/genutils.py (clock): modified to return only user time
4065 * IPython/genutils.py (clock): modified to return only user time
4063 (not counting system time), after a discussion on scipy. While
4066 (not counting system time), after a discussion on scipy. While
4064 system time may be a useful quantity occasionally, it may much
4067 system time may be a useful quantity occasionally, it may much
4065 more easily be skewed by occasional swapping or other similar
4068 more easily be skewed by occasional swapping or other similar
4066 activity.
4069 activity.
4067
4070
4068 2003-06-05 Fernando Perez <fperez@colorado.edu>
4071 2003-06-05 Fernando Perez <fperez@colorado.edu>
4069
4072
4070 * IPython/numutils.py (identity): new function, for building
4073 * IPython/numutils.py (identity): new function, for building
4071 arbitrary rank Kronecker deltas (mostly backwards compatible with
4074 arbitrary rank Kronecker deltas (mostly backwards compatible with
4072 Numeric.identity)
4075 Numeric.identity)
4073
4076
4074 2003-06-03 Fernando Perez <fperez@colorado.edu>
4077 2003-06-03 Fernando Perez <fperez@colorado.edu>
4075
4078
4076 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4079 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4077 arguments passed to magics with spaces, to allow trailing '\' to
4080 arguments passed to magics with spaces, to allow trailing '\' to
4078 work normally (mainly for Windows users).
4081 work normally (mainly for Windows users).
4079
4082
4080 2003-05-29 Fernando Perez <fperez@colorado.edu>
4083 2003-05-29 Fernando Perez <fperez@colorado.edu>
4081
4084
4082 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4085 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4083 instead of pydoc.help. This fixes a bizarre behavior where
4086 instead of pydoc.help. This fixes a bizarre behavior where
4084 printing '%s' % locals() would trigger the help system. Now
4087 printing '%s' % locals() would trigger the help system. Now
4085 ipython behaves like normal python does.
4088 ipython behaves like normal python does.
4086
4089
4087 Note that if one does 'from pydoc import help', the bizarre
4090 Note that if one does 'from pydoc import help', the bizarre
4088 behavior returns, but this will also happen in normal python, so
4091 behavior returns, but this will also happen in normal python, so
4089 it's not an ipython bug anymore (it has to do with how pydoc.help
4092 it's not an ipython bug anymore (it has to do with how pydoc.help
4090 is implemented).
4093 is implemented).
4091
4094
4092 2003-05-22 Fernando Perez <fperez@colorado.edu>
4095 2003-05-22 Fernando Perez <fperez@colorado.edu>
4093
4096
4094 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4097 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4095 return [] instead of None when nothing matches, also match to end
4098 return [] instead of None when nothing matches, also match to end
4096 of line. Patch by Gary Bishop.
4099 of line. Patch by Gary Bishop.
4097
4100
4098 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4101 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4099 protection as before, for files passed on the command line. This
4102 protection as before, for files passed on the command line. This
4100 prevents the CrashHandler from kicking in if user files call into
4103 prevents the CrashHandler from kicking in if user files call into
4101 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4104 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4102 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4105 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4103
4106
4104 2003-05-20 *** Released version 0.4.0
4107 2003-05-20 *** Released version 0.4.0
4105
4108
4106 2003-05-20 Fernando Perez <fperez@colorado.edu>
4109 2003-05-20 Fernando Perez <fperez@colorado.edu>
4107
4110
4108 * setup.py: added support for manpages. It's a bit hackish b/c of
4111 * setup.py: added support for manpages. It's a bit hackish b/c of
4109 a bug in the way the bdist_rpm distutils target handles gzipped
4112 a bug in the way the bdist_rpm distutils target handles gzipped
4110 manpages, but it works. After a patch by Jack.
4113 manpages, but it works. After a patch by Jack.
4111
4114
4112 2003-05-19 Fernando Perez <fperez@colorado.edu>
4115 2003-05-19 Fernando Perez <fperez@colorado.edu>
4113
4116
4114 * IPython/numutils.py: added a mockup of the kinds module, since
4117 * IPython/numutils.py: added a mockup of the kinds module, since
4115 it was recently removed from Numeric. This way, numutils will
4118 it was recently removed from Numeric. This way, numutils will
4116 work for all users even if they are missing kinds.
4119 work for all users even if they are missing kinds.
4117
4120
4118 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4121 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4119 failure, which can occur with SWIG-wrapped extensions. After a
4122 failure, which can occur with SWIG-wrapped extensions. After a
4120 crash report from Prabhu.
4123 crash report from Prabhu.
4121
4124
4122 2003-05-16 Fernando Perez <fperez@colorado.edu>
4125 2003-05-16 Fernando Perez <fperez@colorado.edu>
4123
4126
4124 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4127 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4125 protect ipython from user code which may call directly
4128 protect ipython from user code which may call directly
4126 sys.excepthook (this looks like an ipython crash to the user, even
4129 sys.excepthook (this looks like an ipython crash to the user, even
4127 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4130 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4128 This is especially important to help users of WxWindows, but may
4131 This is especially important to help users of WxWindows, but may
4129 also be useful in other cases.
4132 also be useful in other cases.
4130
4133
4131 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4134 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4132 an optional tb_offset to be specified, and to preserve exception
4135 an optional tb_offset to be specified, and to preserve exception
4133 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4136 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4134
4137
4135 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4138 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4136
4139
4137 2003-05-15 Fernando Perez <fperez@colorado.edu>
4140 2003-05-15 Fernando Perez <fperez@colorado.edu>
4138
4141
4139 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4142 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4140 installing for a new user under Windows.
4143 installing for a new user under Windows.
4141
4144
4142 2003-05-12 Fernando Perez <fperez@colorado.edu>
4145 2003-05-12 Fernando Perez <fperez@colorado.edu>
4143
4146
4144 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4147 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4145 handler for Emacs comint-based lines. Currently it doesn't do
4148 handler for Emacs comint-based lines. Currently it doesn't do
4146 much (but importantly, it doesn't update the history cache). In
4149 much (but importantly, it doesn't update the history cache). In
4147 the future it may be expanded if Alex needs more functionality
4150 the future it may be expanded if Alex needs more functionality
4148 there.
4151 there.
4149
4152
4150 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4153 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4151 info to crash reports.
4154 info to crash reports.
4152
4155
4153 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4156 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4154 just like Python's -c. Also fixed crash with invalid -color
4157 just like Python's -c. Also fixed crash with invalid -color
4155 option value at startup. Thanks to Will French
4158 option value at startup. Thanks to Will French
4156 <wfrench-AT-bestweb.net> for the bug report.
4159 <wfrench-AT-bestweb.net> for the bug report.
4157
4160
4158 2003-05-09 Fernando Perez <fperez@colorado.edu>
4161 2003-05-09 Fernando Perez <fperez@colorado.edu>
4159
4162
4160 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4163 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4161 to EvalDict (it's a mapping, after all) and simplified its code
4164 to EvalDict (it's a mapping, after all) and simplified its code
4162 quite a bit, after a nice discussion on c.l.py where Gustavo
4165 quite a bit, after a nice discussion on c.l.py where Gustavo
4163 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4166 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4164
4167
4165 2003-04-30 Fernando Perez <fperez@colorado.edu>
4168 2003-04-30 Fernando Perez <fperez@colorado.edu>
4166
4169
4167 * IPython/genutils.py (timings_out): modified it to reduce its
4170 * IPython/genutils.py (timings_out): modified it to reduce its
4168 overhead in the common reps==1 case.
4171 overhead in the common reps==1 case.
4169
4172
4170 2003-04-29 Fernando Perez <fperez@colorado.edu>
4173 2003-04-29 Fernando Perez <fperez@colorado.edu>
4171
4174
4172 * IPython/genutils.py (timings_out): Modified to use the resource
4175 * IPython/genutils.py (timings_out): Modified to use the resource
4173 module, which avoids the wraparound problems of time.clock().
4176 module, which avoids the wraparound problems of time.clock().
4174
4177
4175 2003-04-17 *** Released version 0.2.15pre4
4178 2003-04-17 *** Released version 0.2.15pre4
4176
4179
4177 2003-04-17 Fernando Perez <fperez@colorado.edu>
4180 2003-04-17 Fernando Perez <fperez@colorado.edu>
4178
4181
4179 * setup.py (scriptfiles): Split windows-specific stuff over to a
4182 * setup.py (scriptfiles): Split windows-specific stuff over to a
4180 separate file, in an attempt to have a Windows GUI installer.
4183 separate file, in an attempt to have a Windows GUI installer.
4181 That didn't work, but part of the groundwork is done.
4184 That didn't work, but part of the groundwork is done.
4182
4185
4183 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4186 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4184 indent/unindent with 4 spaces. Particularly useful in combination
4187 indent/unindent with 4 spaces. Particularly useful in combination
4185 with the new auto-indent option.
4188 with the new auto-indent option.
4186
4189
4187 2003-04-16 Fernando Perez <fperez@colorado.edu>
4190 2003-04-16 Fernando Perez <fperez@colorado.edu>
4188
4191
4189 * IPython/Magic.py: various replacements of self.rc for
4192 * IPython/Magic.py: various replacements of self.rc for
4190 self.shell.rc. A lot more remains to be done to fully disentangle
4193 self.shell.rc. A lot more remains to be done to fully disentangle
4191 this class from the main Shell class.
4194 this class from the main Shell class.
4192
4195
4193 * IPython/GnuplotRuntime.py: added checks for mouse support so
4196 * IPython/GnuplotRuntime.py: added checks for mouse support so
4194 that we don't try to enable it if the current gnuplot doesn't
4197 that we don't try to enable it if the current gnuplot doesn't
4195 really support it. Also added checks so that we don't try to
4198 really support it. Also added checks so that we don't try to
4196 enable persist under Windows (where Gnuplot doesn't recognize the
4199 enable persist under Windows (where Gnuplot doesn't recognize the
4197 option).
4200 option).
4198
4201
4199 * IPython/iplib.py (InteractiveShell.interact): Added optional
4202 * IPython/iplib.py (InteractiveShell.interact): Added optional
4200 auto-indenting code, after a patch by King C. Shu
4203 auto-indenting code, after a patch by King C. Shu
4201 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4204 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4202 get along well with pasting indented code. If I ever figure out
4205 get along well with pasting indented code. If I ever figure out
4203 how to make that part go well, it will become on by default.
4206 how to make that part go well, it will become on by default.
4204
4207
4205 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4208 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4206 crash ipython if there was an unmatched '%' in the user's prompt
4209 crash ipython if there was an unmatched '%' in the user's prompt
4207 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4210 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4208
4211
4209 * IPython/iplib.py (InteractiveShell.interact): removed the
4212 * IPython/iplib.py (InteractiveShell.interact): removed the
4210 ability to ask the user whether he wants to crash or not at the
4213 ability to ask the user whether he wants to crash or not at the
4211 'last line' exception handler. Calling functions at that point
4214 'last line' exception handler. Calling functions at that point
4212 changes the stack, and the error reports would have incorrect
4215 changes the stack, and the error reports would have incorrect
4213 tracebacks.
4216 tracebacks.
4214
4217
4215 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4218 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4216 pass through a peger a pretty-printed form of any object. After a
4219 pass through a peger a pretty-printed form of any object. After a
4217 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4220 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4218
4221
4219 2003-04-14 Fernando Perez <fperez@colorado.edu>
4222 2003-04-14 Fernando Perez <fperez@colorado.edu>
4220
4223
4221 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4224 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4222 all files in ~ would be modified at first install (instead of
4225 all files in ~ would be modified at first install (instead of
4223 ~/.ipython). This could be potentially disastrous, as the
4226 ~/.ipython). This could be potentially disastrous, as the
4224 modification (make line-endings native) could damage binary files.
4227 modification (make line-endings native) could damage binary files.
4225
4228
4226 2003-04-10 Fernando Perez <fperez@colorado.edu>
4229 2003-04-10 Fernando Perez <fperez@colorado.edu>
4227
4230
4228 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4231 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4229 handle only lines which are invalid python. This now means that
4232 handle only lines which are invalid python. This now means that
4230 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4233 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4231 for the bug report.
4234 for the bug report.
4232
4235
4233 2003-04-01 Fernando Perez <fperez@colorado.edu>
4236 2003-04-01 Fernando Perez <fperez@colorado.edu>
4234
4237
4235 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4238 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4236 where failing to set sys.last_traceback would crash pdb.pm().
4239 where failing to set sys.last_traceback would crash pdb.pm().
4237 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4240 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4238 report.
4241 report.
4239
4242
4240 2003-03-25 Fernando Perez <fperez@colorado.edu>
4243 2003-03-25 Fernando Perez <fperez@colorado.edu>
4241
4244
4242 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4245 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
4243 before printing it (it had a lot of spurious blank lines at the
4246 before printing it (it had a lot of spurious blank lines at the
4244 end).
4247 end).
4245
4248
4246 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4249 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
4247 output would be sent 21 times! Obviously people don't use this
4250 output would be sent 21 times! Obviously people don't use this
4248 too often, or I would have heard about it.
4251 too often, or I would have heard about it.
4249
4252
4250 2003-03-24 Fernando Perez <fperez@colorado.edu>
4253 2003-03-24 Fernando Perez <fperez@colorado.edu>
4251
4254
4252 * setup.py (scriptfiles): renamed the data_files parameter from
4255 * setup.py (scriptfiles): renamed the data_files parameter from
4253 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4256 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
4254 for the patch.
4257 for the patch.
4255
4258
4256 2003-03-20 Fernando Perez <fperez@colorado.edu>
4259 2003-03-20 Fernando Perez <fperez@colorado.edu>
4257
4260
4258 * IPython/genutils.py (error): added error() and fatal()
4261 * IPython/genutils.py (error): added error() and fatal()
4259 functions.
4262 functions.
4260
4263
4261 2003-03-18 *** Released version 0.2.15pre3
4264 2003-03-18 *** Released version 0.2.15pre3
4262
4265
4263 2003-03-18 Fernando Perez <fperez@colorado.edu>
4266 2003-03-18 Fernando Perez <fperez@colorado.edu>
4264
4267
4265 * setupext/install_data_ext.py
4268 * setupext/install_data_ext.py
4266 (install_data_ext.initialize_options): Class contributed by Jack
4269 (install_data_ext.initialize_options): Class contributed by Jack
4267 Moffit for fixing the old distutils hack. He is sending this to
4270 Moffit for fixing the old distutils hack. He is sending this to
4268 the distutils folks so in the future we may not need it as a
4271 the distutils folks so in the future we may not need it as a
4269 private fix.
4272 private fix.
4270
4273
4271 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4274 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
4272 changes for Debian packaging. See his patch for full details.
4275 changes for Debian packaging. See his patch for full details.
4273 The old distutils hack of making the ipythonrc* files carry a
4276 The old distutils hack of making the ipythonrc* files carry a
4274 bogus .py extension is gone, at last. Examples were moved to a
4277 bogus .py extension is gone, at last. Examples were moved to a
4275 separate subdir under doc/, and the separate executable scripts
4278 separate subdir under doc/, and the separate executable scripts
4276 now live in their own directory. Overall a great cleanup. The
4279 now live in their own directory. Overall a great cleanup. The
4277 manual was updated to use the new files, and setup.py has been
4280 manual was updated to use the new files, and setup.py has been
4278 fixed for this setup.
4281 fixed for this setup.
4279
4282
4280 * IPython/PyColorize.py (Parser.usage): made non-executable and
4283 * IPython/PyColorize.py (Parser.usage): made non-executable and
4281 created a pycolor wrapper around it to be included as a script.
4284 created a pycolor wrapper around it to be included as a script.
4282
4285
4283 2003-03-12 *** Released version 0.2.15pre2
4286 2003-03-12 *** Released version 0.2.15pre2
4284
4287
4285 2003-03-12 Fernando Perez <fperez@colorado.edu>
4288 2003-03-12 Fernando Perez <fperez@colorado.edu>
4286
4289
4287 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4290 * IPython/ColorANSI.py (make_color_table): Finally fixed the
4288 long-standing problem with garbage characters in some terminals.
4291 long-standing problem with garbage characters in some terminals.
4289 The issue was really that the \001 and \002 escapes must _only_ be
4292 The issue was really that the \001 and \002 escapes must _only_ be
4290 passed to input prompts (which call readline), but _never_ to
4293 passed to input prompts (which call readline), but _never_ to
4291 normal text to be printed on screen. I changed ColorANSI to have
4294 normal text to be printed on screen. I changed ColorANSI to have
4292 two classes: TermColors and InputTermColors, each with the
4295 two classes: TermColors and InputTermColors, each with the
4293 appropriate escapes for input prompts or normal text. The code in
4296 appropriate escapes for input prompts or normal text. The code in
4294 Prompts.py got slightly more complicated, but this very old and
4297 Prompts.py got slightly more complicated, but this very old and
4295 annoying bug is finally fixed.
4298 annoying bug is finally fixed.
4296
4299
4297 All the credit for nailing down the real origin of this problem
4300 All the credit for nailing down the real origin of this problem
4298 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4301 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
4299 *Many* thanks to him for spending quite a bit of effort on this.
4302 *Many* thanks to him for spending quite a bit of effort on this.
4300
4303
4301 2003-03-05 *** Released version 0.2.15pre1
4304 2003-03-05 *** Released version 0.2.15pre1
4302
4305
4303 2003-03-03 Fernando Perez <fperez@colorado.edu>
4306 2003-03-03 Fernando Perez <fperez@colorado.edu>
4304
4307
4305 * IPython/FakeModule.py: Moved the former _FakeModule to a
4308 * IPython/FakeModule.py: Moved the former _FakeModule to a
4306 separate file, because it's also needed by Magic (to fix a similar
4309 separate file, because it's also needed by Magic (to fix a similar
4307 pickle-related issue in @run).
4310 pickle-related issue in @run).
4308
4311
4309 2003-03-02 Fernando Perez <fperez@colorado.edu>
4312 2003-03-02 Fernando Perez <fperez@colorado.edu>
4310
4313
4311 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4314 * IPython/Magic.py (Magic.magic_autocall): new magic to control
4312 the autocall option at runtime.
4315 the autocall option at runtime.
4313 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4316 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
4314 across Magic.py to start separating Magic from InteractiveShell.
4317 across Magic.py to start separating Magic from InteractiveShell.
4315 (Magic._ofind): Fixed to return proper namespace for dotted
4318 (Magic._ofind): Fixed to return proper namespace for dotted
4316 names. Before, a dotted name would always return 'not currently
4319 names. Before, a dotted name would always return 'not currently
4317 defined', because it would find the 'parent'. s.x would be found,
4320 defined', because it would find the 'parent'. s.x would be found,
4318 but since 'x' isn't defined by itself, it would get confused.
4321 but since 'x' isn't defined by itself, it would get confused.
4319 (Magic.magic_run): Fixed pickling problems reported by Ralf
4322 (Magic.magic_run): Fixed pickling problems reported by Ralf
4320 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4323 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
4321 that I'd used when Mike Heeter reported similar issues at the
4324 that I'd used when Mike Heeter reported similar issues at the
4322 top-level, but now for @run. It boils down to injecting the
4325 top-level, but now for @run. It boils down to injecting the
4323 namespace where code is being executed with something that looks
4326 namespace where code is being executed with something that looks
4324 enough like a module to fool pickle.dump(). Since a pickle stores
4327 enough like a module to fool pickle.dump(). Since a pickle stores
4325 a named reference to the importing module, we need this for
4328 a named reference to the importing module, we need this for
4326 pickles to save something sensible.
4329 pickles to save something sensible.
4327
4330
4328 * IPython/ipmaker.py (make_IPython): added an autocall option.
4331 * IPython/ipmaker.py (make_IPython): added an autocall option.
4329
4332
4330 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4333 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
4331 the auto-eval code. Now autocalling is an option, and the code is
4334 the auto-eval code. Now autocalling is an option, and the code is
4332 also vastly safer. There is no more eval() involved at all.
4335 also vastly safer. There is no more eval() involved at all.
4333
4336
4334 2003-03-01 Fernando Perez <fperez@colorado.edu>
4337 2003-03-01 Fernando Perez <fperez@colorado.edu>
4335
4338
4336 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4339 * IPython/Magic.py (Magic._ofind): Changed interface to return a
4337 dict with named keys instead of a tuple.
4340 dict with named keys instead of a tuple.
4338
4341
4339 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4342 * IPython: Started using CVS for IPython as of 0.2.15pre1.
4340
4343
4341 * setup.py (make_shortcut): Fixed message about directories
4344 * setup.py (make_shortcut): Fixed message about directories
4342 created during Windows installation (the directories were ok, just
4345 created during Windows installation (the directories were ok, just
4343 the printed message was misleading). Thanks to Chris Liechti
4346 the printed message was misleading). Thanks to Chris Liechti
4344 <cliechti-AT-gmx.net> for the heads up.
4347 <cliechti-AT-gmx.net> for the heads up.
4345
4348
4346 2003-02-21 Fernando Perez <fperez@colorado.edu>
4349 2003-02-21 Fernando Perez <fperez@colorado.edu>
4347
4350
4348 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4351 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
4349 of ValueError exception when checking for auto-execution. This
4352 of ValueError exception when checking for auto-execution. This
4350 one is raised by things like Numeric arrays arr.flat when the
4353 one is raised by things like Numeric arrays arr.flat when the
4351 array is non-contiguous.
4354 array is non-contiguous.
4352
4355
4353 2003-01-31 Fernando Perez <fperez@colorado.edu>
4356 2003-01-31 Fernando Perez <fperez@colorado.edu>
4354
4357
4355 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4358 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
4356 not return any value at all (even though the command would get
4359 not return any value at all (even though the command would get
4357 executed).
4360 executed).
4358 (xsys): Flush stdout right after printing the command to ensure
4361 (xsys): Flush stdout right after printing the command to ensure
4359 proper ordering of commands and command output in the total
4362 proper ordering of commands and command output in the total
4360 output.
4363 output.
4361 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4364 (SystemExec/xsys/bq): Switched the names of xsys/bq and
4362 system/getoutput as defaults. The old ones are kept for
4365 system/getoutput as defaults. The old ones are kept for
4363 compatibility reasons, so no code which uses this library needs
4366 compatibility reasons, so no code which uses this library needs
4364 changing.
4367 changing.
4365
4368
4366 2003-01-27 *** Released version 0.2.14
4369 2003-01-27 *** Released version 0.2.14
4367
4370
4368 2003-01-25 Fernando Perez <fperez@colorado.edu>
4371 2003-01-25 Fernando Perez <fperez@colorado.edu>
4369
4372
4370 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4373 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
4371 functions defined in previous edit sessions could not be re-edited
4374 functions defined in previous edit sessions could not be re-edited
4372 (because the temp files were immediately removed). Now temp files
4375 (because the temp files were immediately removed). Now temp files
4373 are removed only at IPython's exit.
4376 are removed only at IPython's exit.
4374 (Magic.magic_run): Improved @run to perform shell-like expansions
4377 (Magic.magic_run): Improved @run to perform shell-like expansions
4375 on its arguments (~users and $VARS). With this, @run becomes more
4378 on its arguments (~users and $VARS). With this, @run becomes more
4376 like a normal command-line.
4379 like a normal command-line.
4377
4380
4378 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4381 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
4379 bugs related to embedding and cleaned up that code. A fairly
4382 bugs related to embedding and cleaned up that code. A fairly
4380 important one was the impossibility to access the global namespace
4383 important one was the impossibility to access the global namespace
4381 through the embedded IPython (only local variables were visible).
4384 through the embedded IPython (only local variables were visible).
4382
4385
4383 2003-01-14 Fernando Perez <fperez@colorado.edu>
4386 2003-01-14 Fernando Perez <fperez@colorado.edu>
4384
4387
4385 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4388 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
4386 auto-calling to be a bit more conservative. Now it doesn't get
4389 auto-calling to be a bit more conservative. Now it doesn't get
4387 triggered if any of '!=()<>' are in the rest of the input line, to
4390 triggered if any of '!=()<>' are in the rest of the input line, to
4388 allow comparing callables. Thanks to Alex for the heads up.
4391 allow comparing callables. Thanks to Alex for the heads up.
4389
4392
4390 2003-01-07 Fernando Perez <fperez@colorado.edu>
4393 2003-01-07 Fernando Perez <fperez@colorado.edu>
4391
4394
4392 * IPython/genutils.py (page): fixed estimation of the number of
4395 * IPython/genutils.py (page): fixed estimation of the number of
4393 lines in a string to be paged to simply count newlines. This
4396 lines in a string to be paged to simply count newlines. This
4394 prevents over-guessing due to embedded escape sequences. A better
4397 prevents over-guessing due to embedded escape sequences. A better
4395 long-term solution would involve stripping out the control chars
4398 long-term solution would involve stripping out the control chars
4396 for the count, but it's potentially so expensive I just don't
4399 for the count, but it's potentially so expensive I just don't
4397 think it's worth doing.
4400 think it's worth doing.
4398
4401
4399 2002-12-19 *** Released version 0.2.14pre50
4402 2002-12-19 *** Released version 0.2.14pre50
4400
4403
4401 2002-12-19 Fernando Perez <fperez@colorado.edu>
4404 2002-12-19 Fernando Perez <fperez@colorado.edu>
4402
4405
4403 * tools/release (version): Changed release scripts to inform
4406 * tools/release (version): Changed release scripts to inform
4404 Andrea and build a NEWS file with a list of recent changes.
4407 Andrea and build a NEWS file with a list of recent changes.
4405
4408
4406 * IPython/ColorANSI.py (__all__): changed terminal detection
4409 * IPython/ColorANSI.py (__all__): changed terminal detection
4407 code. Seems to work better for xterms without breaking
4410 code. Seems to work better for xterms without breaking
4408 konsole. Will need more testing to determine if WinXP and Mac OSX
4411 konsole. Will need more testing to determine if WinXP and Mac OSX
4409 also work ok.
4412 also work ok.
4410
4413
4411 2002-12-18 *** Released version 0.2.14pre49
4414 2002-12-18 *** Released version 0.2.14pre49
4412
4415
4413 2002-12-18 Fernando Perez <fperez@colorado.edu>
4416 2002-12-18 Fernando Perez <fperez@colorado.edu>
4414
4417
4415 * Docs: added new info about Mac OSX, from Andrea.
4418 * Docs: added new info about Mac OSX, from Andrea.
4416
4419
4417 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4420 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
4418 allow direct plotting of python strings whose format is the same
4421 allow direct plotting of python strings whose format is the same
4419 of gnuplot data files.
4422 of gnuplot data files.
4420
4423
4421 2002-12-16 Fernando Perez <fperez@colorado.edu>
4424 2002-12-16 Fernando Perez <fperez@colorado.edu>
4422
4425
4423 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4426 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
4424 value of exit question to be acknowledged.
4427 value of exit question to be acknowledged.
4425
4428
4426 2002-12-03 Fernando Perez <fperez@colorado.edu>
4429 2002-12-03 Fernando Perez <fperez@colorado.edu>
4427
4430
4428 * IPython/ipmaker.py: removed generators, which had been added
4431 * IPython/ipmaker.py: removed generators, which had been added
4429 by mistake in an earlier debugging run. This was causing trouble
4432 by mistake in an earlier debugging run. This was causing trouble
4430 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4433 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
4431 for pointing this out.
4434 for pointing this out.
4432
4435
4433 2002-11-17 Fernando Perez <fperez@colorado.edu>
4436 2002-11-17 Fernando Perez <fperez@colorado.edu>
4434
4437
4435 * Manual: updated the Gnuplot section.
4438 * Manual: updated the Gnuplot section.
4436
4439
4437 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4440 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
4438 a much better split of what goes in Runtime and what goes in
4441 a much better split of what goes in Runtime and what goes in
4439 Interactive.
4442 Interactive.
4440
4443
4441 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4444 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
4442 being imported from iplib.
4445 being imported from iplib.
4443
4446
4444 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4447 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
4445 for command-passing. Now the global Gnuplot instance is called
4448 for command-passing. Now the global Gnuplot instance is called
4446 'gp' instead of 'g', which was really a far too fragile and
4449 'gp' instead of 'g', which was really a far too fragile and
4447 common name.
4450 common name.
4448
4451
4449 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4452 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
4450 bounding boxes generated by Gnuplot for square plots.
4453 bounding boxes generated by Gnuplot for square plots.
4451
4454
4452 * IPython/genutils.py (popkey): new function added. I should
4455 * IPython/genutils.py (popkey): new function added. I should
4453 suggest this on c.l.py as a dict method, it seems useful.
4456 suggest this on c.l.py as a dict method, it seems useful.
4454
4457
4455 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4458 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
4456 to transparently handle PostScript generation. MUCH better than
4459 to transparently handle PostScript generation. MUCH better than
4457 the previous plot_eps/replot_eps (which I removed now). The code
4460 the previous plot_eps/replot_eps (which I removed now). The code
4458 is also fairly clean and well documented now (including
4461 is also fairly clean and well documented now (including
4459 docstrings).
4462 docstrings).
4460
4463
4461 2002-11-13 Fernando Perez <fperez@colorado.edu>
4464 2002-11-13 Fernando Perez <fperez@colorado.edu>
4462
4465
4463 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4466 * IPython/Magic.py (Magic.magic_edit): fixed docstring
4464 (inconsistent with options).
4467 (inconsistent with options).
4465
4468
4466 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4469 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
4467 manually disabled, I don't know why. Fixed it.
4470 manually disabled, I don't know why. Fixed it.
4468 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4471 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
4469 eps output.
4472 eps output.
4470
4473
4471 2002-11-12 Fernando Perez <fperez@colorado.edu>
4474 2002-11-12 Fernando Perez <fperez@colorado.edu>
4472
4475
4473 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4476 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
4474 don't propagate up to caller. Fixes crash reported by François
4477 don't propagate up to caller. Fixes crash reported by François
4475 Pinard.
4478 Pinard.
4476
4479
4477 2002-11-09 Fernando Perez <fperez@colorado.edu>
4480 2002-11-09 Fernando Perez <fperez@colorado.edu>
4478
4481
4479 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4482 * IPython/ipmaker.py (make_IPython): fixed problem with writing
4480 history file for new users.
4483 history file for new users.
4481 (make_IPython): fixed bug where initial install would leave the
4484 (make_IPython): fixed bug where initial install would leave the
4482 user running in the .ipython dir.
4485 user running in the .ipython dir.
4483 (make_IPython): fixed bug where config dir .ipython would be
4486 (make_IPython): fixed bug where config dir .ipython would be
4484 created regardless of the given -ipythondir option. Thanks to Cory
4487 created regardless of the given -ipythondir option. Thanks to Cory
4485 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4488 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
4486
4489
4487 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4490 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
4488 type confirmations. Will need to use it in all of IPython's code
4491 type confirmations. Will need to use it in all of IPython's code
4489 consistently.
4492 consistently.
4490
4493
4491 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4494 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
4492 context to print 31 lines instead of the default 5. This will make
4495 context to print 31 lines instead of the default 5. This will make
4493 the crash reports extremely detailed in case the problem is in
4496 the crash reports extremely detailed in case the problem is in
4494 libraries I don't have access to.
4497 libraries I don't have access to.
4495
4498
4496 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4499 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
4497 line of defense' code to still crash, but giving users fair
4500 line of defense' code to still crash, but giving users fair
4498 warning. I don't want internal errors to go unreported: if there's
4501 warning. I don't want internal errors to go unreported: if there's
4499 an internal problem, IPython should crash and generate a full
4502 an internal problem, IPython should crash and generate a full
4500 report.
4503 report.
4501
4504
4502 2002-11-08 Fernando Perez <fperez@colorado.edu>
4505 2002-11-08 Fernando Perez <fperez@colorado.edu>
4503
4506
4504 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4507 * IPython/iplib.py (InteractiveShell.interact): added code to trap
4505 otherwise uncaught exceptions which can appear if people set
4508 otherwise uncaught exceptions which can appear if people set
4506 sys.stdout to something badly broken. Thanks to a crash report
4509 sys.stdout to something badly broken. Thanks to a crash report
4507 from henni-AT-mail.brainbot.com.
4510 from henni-AT-mail.brainbot.com.
4508
4511
4509 2002-11-04 Fernando Perez <fperez@colorado.edu>
4512 2002-11-04 Fernando Perez <fperez@colorado.edu>
4510
4513
4511 * IPython/iplib.py (InteractiveShell.interact): added
4514 * IPython/iplib.py (InteractiveShell.interact): added
4512 __IPYTHON__active to the builtins. It's a flag which goes on when
4515 __IPYTHON__active to the builtins. It's a flag which goes on when
4513 the interaction starts and goes off again when it stops. This
4516 the interaction starts and goes off again when it stops. This
4514 allows embedding code to detect being inside IPython. Before this
4517 allows embedding code to detect being inside IPython. Before this
4515 was done via __IPYTHON__, but that only shows that an IPython
4518 was done via __IPYTHON__, but that only shows that an IPython
4516 instance has been created.
4519 instance has been created.
4517
4520
4518 * IPython/Magic.py (Magic.magic_env): I realized that in a
4521 * IPython/Magic.py (Magic.magic_env): I realized that in a
4519 UserDict, instance.data holds the data as a normal dict. So I
4522 UserDict, instance.data holds the data as a normal dict. So I
4520 modified @env to return os.environ.data instead of rebuilding a
4523 modified @env to return os.environ.data instead of rebuilding a
4521 dict by hand.
4524 dict by hand.
4522
4525
4523 2002-11-02 Fernando Perez <fperez@colorado.edu>
4526 2002-11-02 Fernando Perez <fperez@colorado.edu>
4524
4527
4525 * IPython/genutils.py (warn): changed so that level 1 prints no
4528 * IPython/genutils.py (warn): changed so that level 1 prints no
4526 header. Level 2 is now the default (with 'WARNING' header, as
4529 header. Level 2 is now the default (with 'WARNING' header, as
4527 before). I think I tracked all places where changes were needed in
4530 before). I think I tracked all places where changes were needed in
4528 IPython, but outside code using the old level numbering may have
4531 IPython, but outside code using the old level numbering may have
4529 broken.
4532 broken.
4530
4533
4531 * IPython/iplib.py (InteractiveShell.runcode): added this to
4534 * IPython/iplib.py (InteractiveShell.runcode): added this to
4532 handle the tracebacks in SystemExit traps correctly. The previous
4535 handle the tracebacks in SystemExit traps correctly. The previous
4533 code (through interact) was printing more of the stack than
4536 code (through interact) was printing more of the stack than
4534 necessary, showing IPython internal code to the user.
4537 necessary, showing IPython internal code to the user.
4535
4538
4536 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4539 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
4537 default. Now that the default at the confirmation prompt is yes,
4540 default. Now that the default at the confirmation prompt is yes,
4538 it's not so intrusive. François' argument that ipython sessions
4541 it's not so intrusive. François' argument that ipython sessions
4539 tend to be complex enough not to lose them from an accidental C-d,
4542 tend to be complex enough not to lose them from an accidental C-d,
4540 is a valid one.
4543 is a valid one.
4541
4544
4542 * IPython/iplib.py (InteractiveShell.interact): added a
4545 * IPython/iplib.py (InteractiveShell.interact): added a
4543 showtraceback() call to the SystemExit trap, and modified the exit
4546 showtraceback() call to the SystemExit trap, and modified the exit
4544 confirmation to have yes as the default.
4547 confirmation to have yes as the default.
4545
4548
4546 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4549 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
4547 this file. It's been gone from the code for a long time, this was
4550 this file. It's been gone from the code for a long time, this was
4548 simply leftover junk.
4551 simply leftover junk.
4549
4552
4550 2002-11-01 Fernando Perez <fperez@colorado.edu>
4553 2002-11-01 Fernando Perez <fperez@colorado.edu>
4551
4554
4552 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4555 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
4553 added. If set, IPython now traps EOF and asks for
4556 added. If set, IPython now traps EOF and asks for
4554 confirmation. After a request by François Pinard.
4557 confirmation. After a request by François Pinard.
4555
4558
4556 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4559 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
4557 of @abort, and with a new (better) mechanism for handling the
4560 of @abort, and with a new (better) mechanism for handling the
4558 exceptions.
4561 exceptions.
4559
4562
4560 2002-10-27 Fernando Perez <fperez@colorado.edu>
4563 2002-10-27 Fernando Perez <fperez@colorado.edu>
4561
4564
4562 * IPython/usage.py (__doc__): updated the --help information and
4565 * IPython/usage.py (__doc__): updated the --help information and
4563 the ipythonrc file to indicate that -log generates
4566 the ipythonrc file to indicate that -log generates
4564 ./ipython.log. Also fixed the corresponding info in @logstart.
4567 ./ipython.log. Also fixed the corresponding info in @logstart.
4565 This and several other fixes in the manuals thanks to reports by
4568 This and several other fixes in the manuals thanks to reports by
4566 François Pinard <pinard-AT-iro.umontreal.ca>.
4569 François Pinard <pinard-AT-iro.umontreal.ca>.
4567
4570
4568 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4571 * IPython/Logger.py (Logger.switch_log): Fixed error message to
4569 refer to @logstart (instead of @log, which doesn't exist).
4572 refer to @logstart (instead of @log, which doesn't exist).
4570
4573
4571 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4574 * IPython/iplib.py (InteractiveShell._prefilter): fixed
4572 AttributeError crash. Thanks to Christopher Armstrong
4575 AttributeError crash. Thanks to Christopher Armstrong
4573 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4576 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
4574 introduced recently (in 0.2.14pre37) with the fix to the eval
4577 introduced recently (in 0.2.14pre37) with the fix to the eval
4575 problem mentioned below.
4578 problem mentioned below.
4576
4579
4577 2002-10-17 Fernando Perez <fperez@colorado.edu>
4580 2002-10-17 Fernando Perez <fperez@colorado.edu>
4578
4581
4579 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4582 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
4580 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4583 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
4581
4584
4582 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4585 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
4583 this function to fix a problem reported by Alex Schmolck. He saw
4586 this function to fix a problem reported by Alex Schmolck. He saw
4584 it with list comprehensions and generators, which were getting
4587 it with list comprehensions and generators, which were getting
4585 called twice. The real problem was an 'eval' call in testing for
4588 called twice. The real problem was an 'eval' call in testing for
4586 automagic which was evaluating the input line silently.
4589 automagic which was evaluating the input line silently.
4587
4590
4588 This is a potentially very nasty bug, if the input has side
4591 This is a potentially very nasty bug, if the input has side
4589 effects which must not be repeated. The code is much cleaner now,
4592 effects which must not be repeated. The code is much cleaner now,
4590 without any blanket 'except' left and with a regexp test for
4593 without any blanket 'except' left and with a regexp test for
4591 actual function names.
4594 actual function names.
4592
4595
4593 But an eval remains, which I'm not fully comfortable with. I just
4596 But an eval remains, which I'm not fully comfortable with. I just
4594 don't know how to find out if an expression could be a callable in
4597 don't know how to find out if an expression could be a callable in
4595 the user's namespace without doing an eval on the string. However
4598 the user's namespace without doing an eval on the string. However
4596 that string is now much more strictly checked so that no code
4599 that string is now much more strictly checked so that no code
4597 slips by, so the eval should only happen for things that can
4600 slips by, so the eval should only happen for things that can
4598 really be only function/method names.
4601 really be only function/method names.
4599
4602
4600 2002-10-15 Fernando Perez <fperez@colorado.edu>
4603 2002-10-15 Fernando Perez <fperez@colorado.edu>
4601
4604
4602 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4605 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
4603 OSX information to main manual, removed README_Mac_OSX file from
4606 OSX information to main manual, removed README_Mac_OSX file from
4604 distribution. Also updated credits for recent additions.
4607 distribution. Also updated credits for recent additions.
4605
4608
4606 2002-10-10 Fernando Perez <fperez@colorado.edu>
4609 2002-10-10 Fernando Perez <fperez@colorado.edu>
4607
4610
4608 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4611 * README_Mac_OSX: Added a README for Mac OSX users for fixing
4609 terminal-related issues. Many thanks to Andrea Riciputi
4612 terminal-related issues. Many thanks to Andrea Riciputi
4610 <andrea.riciputi-AT-libero.it> for writing it.
4613 <andrea.riciputi-AT-libero.it> for writing it.
4611
4614
4612 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4615 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
4613 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4616 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4614
4617
4615 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4618 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
4616 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4619 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
4617 <syver-en-AT-online.no> who both submitted patches for this problem.
4620 <syver-en-AT-online.no> who both submitted patches for this problem.
4618
4621
4619 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4622 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
4620 global embedding to make sure that things don't overwrite user
4623 global embedding to make sure that things don't overwrite user
4621 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4624 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
4622
4625
4623 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4626 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
4624 compatibility. Thanks to Hayden Callow
4627 compatibility. Thanks to Hayden Callow
4625 <h.callow-AT-elec.canterbury.ac.nz>
4628 <h.callow-AT-elec.canterbury.ac.nz>
4626
4629
4627 2002-10-04 Fernando Perez <fperez@colorado.edu>
4630 2002-10-04 Fernando Perez <fperez@colorado.edu>
4628
4631
4629 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4632 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
4630 Gnuplot.File objects.
4633 Gnuplot.File objects.
4631
4634
4632 2002-07-23 Fernando Perez <fperez@colorado.edu>
4635 2002-07-23 Fernando Perez <fperez@colorado.edu>
4633
4636
4634 * IPython/genutils.py (timing): Added timings() and timing() for
4637 * IPython/genutils.py (timing): Added timings() and timing() for
4635 quick access to the most commonly needed data, the execution
4638 quick access to the most commonly needed data, the execution
4636 times. Old timing() renamed to timings_out().
4639 times. Old timing() renamed to timings_out().
4637
4640
4638 2002-07-18 Fernando Perez <fperez@colorado.edu>
4641 2002-07-18 Fernando Perez <fperez@colorado.edu>
4639
4642
4640 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4643 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
4641 bug with nested instances disrupting the parent's tab completion.
4644 bug with nested instances disrupting the parent's tab completion.
4642
4645
4643 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4646 * IPython/iplib.py (all_completions): Added Alex Schmolck's
4644 all_completions code to begin the emacs integration.
4647 all_completions code to begin the emacs integration.
4645
4648
4646 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4649 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
4647 argument to allow titling individual arrays when plotting.
4650 argument to allow titling individual arrays when plotting.
4648
4651
4649 2002-07-15 Fernando Perez <fperez@colorado.edu>
4652 2002-07-15 Fernando Perez <fperez@colorado.edu>
4650
4653
4651 * setup.py (make_shortcut): changed to retrieve the value of
4654 * setup.py (make_shortcut): changed to retrieve the value of
4652 'Program Files' directory from the registry (this value changes in
4655 'Program Files' directory from the registry (this value changes in
4653 non-english versions of Windows). Thanks to Thomas Fanslau
4656 non-english versions of Windows). Thanks to Thomas Fanslau
4654 <tfanslau-AT-gmx.de> for the report.
4657 <tfanslau-AT-gmx.de> for the report.
4655
4658
4656 2002-07-10 Fernando Perez <fperez@colorado.edu>
4659 2002-07-10 Fernando Perez <fperez@colorado.edu>
4657
4660
4658 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4661 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
4659 a bug in pdb, which crashes if a line with only whitespace is
4662 a bug in pdb, which crashes if a line with only whitespace is
4660 entered. Bug report submitted to sourceforge.
4663 entered. Bug report submitted to sourceforge.
4661
4664
4662 2002-07-09 Fernando Perez <fperez@colorado.edu>
4665 2002-07-09 Fernando Perez <fperez@colorado.edu>
4663
4666
4664 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4667 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
4665 reporting exceptions (it's a bug in inspect.py, I just set a
4668 reporting exceptions (it's a bug in inspect.py, I just set a
4666 workaround).
4669 workaround).
4667
4670
4668 2002-07-08 Fernando Perez <fperez@colorado.edu>
4671 2002-07-08 Fernando Perez <fperez@colorado.edu>
4669
4672
4670 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4673 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
4671 __IPYTHON__ in __builtins__ to show up in user_ns.
4674 __IPYTHON__ in __builtins__ to show up in user_ns.
4672
4675
4673 2002-07-03 Fernando Perez <fperez@colorado.edu>
4676 2002-07-03 Fernando Perez <fperez@colorado.edu>
4674
4677
4675 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4678 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
4676 name from @gp_set_instance to @gp_set_default.
4679 name from @gp_set_instance to @gp_set_default.
4677
4680
4678 * IPython/ipmaker.py (make_IPython): default editor value set to
4681 * IPython/ipmaker.py (make_IPython): default editor value set to
4679 '0' (a string), to match the rc file. Otherwise will crash when
4682 '0' (a string), to match the rc file. Otherwise will crash when
4680 .strip() is called on it.
4683 .strip() is called on it.
4681
4684
4682
4685
4683 2002-06-28 Fernando Perez <fperez@colorado.edu>
4686 2002-06-28 Fernando Perez <fperez@colorado.edu>
4684
4687
4685 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4688 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
4686 of files in current directory when a file is executed via
4689 of files in current directory when a file is executed via
4687 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4690 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
4688
4691
4689 * setup.py (manfiles): fix for rpm builds, submitted by RA
4692 * setup.py (manfiles): fix for rpm builds, submitted by RA
4690 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4693 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
4691
4694
4692 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4695 * IPython/ipmaker.py (make_IPython): fixed lookup of default
4693 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4696 editor when set to '0'. Problem was, '0' evaluates to True (it's a
4694 string!). A. Schmolck caught this one.
4697 string!). A. Schmolck caught this one.
4695
4698
4696 2002-06-27 Fernando Perez <fperez@colorado.edu>
4699 2002-06-27 Fernando Perez <fperez@colorado.edu>
4697
4700
4698 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4701 * IPython/ipmaker.py (make_IPython): fixed bug when running user
4699 defined files at the cmd line. __name__ wasn't being set to
4702 defined files at the cmd line. __name__ wasn't being set to
4700 __main__.
4703 __main__.
4701
4704
4702 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4705 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
4703 regular lists and tuples besides Numeric arrays.
4706 regular lists and tuples besides Numeric arrays.
4704
4707
4705 * IPython/Prompts.py (CachedOutput.__call__): Added output
4708 * IPython/Prompts.py (CachedOutput.__call__): Added output
4706 supression for input ending with ';'. Similar to Mathematica and
4709 supression for input ending with ';'. Similar to Mathematica and
4707 Matlab. The _* vars and Out[] list are still updated, just like
4710 Matlab. The _* vars and Out[] list are still updated, just like
4708 Mathematica behaves.
4711 Mathematica behaves.
4709
4712
4710 2002-06-25 Fernando Perez <fperez@colorado.edu>
4713 2002-06-25 Fernando Perez <fperez@colorado.edu>
4711
4714
4712 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4715 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
4713 .ini extensions for profiels under Windows.
4716 .ini extensions for profiels under Windows.
4714
4717
4715 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4718 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
4716 string form. Fix contributed by Alexander Schmolck
4719 string form. Fix contributed by Alexander Schmolck
4717 <a.schmolck-AT-gmx.net>
4720 <a.schmolck-AT-gmx.net>
4718
4721
4719 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4722 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
4720 pre-configured Gnuplot instance.
4723 pre-configured Gnuplot instance.
4721
4724
4722 2002-06-21 Fernando Perez <fperez@colorado.edu>
4725 2002-06-21 Fernando Perez <fperez@colorado.edu>
4723
4726
4724 * IPython/numutils.py (exp_safe): new function, works around the
4727 * IPython/numutils.py (exp_safe): new function, works around the
4725 underflow problems in Numeric.
4728 underflow problems in Numeric.
4726 (log2): New fn. Safe log in base 2: returns exact integer answer
4729 (log2): New fn. Safe log in base 2: returns exact integer answer
4727 for exact integer powers of 2.
4730 for exact integer powers of 2.
4728
4731
4729 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4732 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
4730 properly.
4733 properly.
4731
4734
4732 2002-06-20 Fernando Perez <fperez@colorado.edu>
4735 2002-06-20 Fernando Perez <fperez@colorado.edu>
4733
4736
4734 * IPython/genutils.py (timing): new function like
4737 * IPython/genutils.py (timing): new function like
4735 Mathematica's. Similar to time_test, but returns more info.
4738 Mathematica's. Similar to time_test, but returns more info.
4736
4739
4737 2002-06-18 Fernando Perez <fperez@colorado.edu>
4740 2002-06-18 Fernando Perez <fperez@colorado.edu>
4738
4741
4739 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4742 * IPython/Magic.py (Magic.magic_save): modified @save and @r
4740 according to Mike Heeter's suggestions.
4743 according to Mike Heeter's suggestions.
4741
4744
4742 2002-06-16 Fernando Perez <fperez@colorado.edu>
4745 2002-06-16 Fernando Perez <fperez@colorado.edu>
4743
4746
4744 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4747 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
4745 system. GnuplotMagic is gone as a user-directory option. New files
4748 system. GnuplotMagic is gone as a user-directory option. New files
4746 make it easier to use all the gnuplot stuff both from external
4749 make it easier to use all the gnuplot stuff both from external
4747 programs as well as from IPython. Had to rewrite part of
4750 programs as well as from IPython. Had to rewrite part of
4748 hardcopy() b/c of a strange bug: often the ps files simply don't
4751 hardcopy() b/c of a strange bug: often the ps files simply don't
4749 get created, and require a repeat of the command (often several
4752 get created, and require a repeat of the command (often several
4750 times).
4753 times).
4751
4754
4752 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4755 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
4753 resolve output channel at call time, so that if sys.stderr has
4756 resolve output channel at call time, so that if sys.stderr has
4754 been redirected by user this gets honored.
4757 been redirected by user this gets honored.
4755
4758
4756 2002-06-13 Fernando Perez <fperez@colorado.edu>
4759 2002-06-13 Fernando Perez <fperez@colorado.edu>
4757
4760
4758 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4761 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
4759 IPShell. Kept a copy with the old names to avoid breaking people's
4762 IPShell. Kept a copy with the old names to avoid breaking people's
4760 embedded code.
4763 embedded code.
4761
4764
4762 * IPython/ipython: simplified it to the bare minimum after
4765 * IPython/ipython: simplified it to the bare minimum after
4763 Holger's suggestions. Added info about how to use it in
4766 Holger's suggestions. Added info about how to use it in
4764 PYTHONSTARTUP.
4767 PYTHONSTARTUP.
4765
4768
4766 * IPython/Shell.py (IPythonShell): changed the options passing
4769 * IPython/Shell.py (IPythonShell): changed the options passing
4767 from a string with funky %s replacements to a straight list. Maybe
4770 from a string with funky %s replacements to a straight list. Maybe
4768 a bit more typing, but it follows sys.argv conventions, so there's
4771 a bit more typing, but it follows sys.argv conventions, so there's
4769 less special-casing to remember.
4772 less special-casing to remember.
4770
4773
4771 2002-06-12 Fernando Perez <fperez@colorado.edu>
4774 2002-06-12 Fernando Perez <fperez@colorado.edu>
4772
4775
4773 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4776 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
4774 command. Thanks to a suggestion by Mike Heeter.
4777 command. Thanks to a suggestion by Mike Heeter.
4775 (Magic.magic_pfile): added behavior to look at filenames if given
4778 (Magic.magic_pfile): added behavior to look at filenames if given
4776 arg is not a defined object.
4779 arg is not a defined object.
4777 (Magic.magic_save): New @save function to save code snippets. Also
4780 (Magic.magic_save): New @save function to save code snippets. Also
4778 a Mike Heeter idea.
4781 a Mike Heeter idea.
4779
4782
4780 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4783 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4781 plot() and replot(). Much more convenient now, especially for
4784 plot() and replot(). Much more convenient now, especially for
4782 interactive use.
4785 interactive use.
4783
4786
4784 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4787 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4785 filenames.
4788 filenames.
4786
4789
4787 2002-06-02 Fernando Perez <fperez@colorado.edu>
4790 2002-06-02 Fernando Perez <fperez@colorado.edu>
4788
4791
4789 * IPython/Struct.py (Struct.__init__): modified to admit
4792 * IPython/Struct.py (Struct.__init__): modified to admit
4790 initialization via another struct.
4793 initialization via another struct.
4791
4794
4792 * IPython/genutils.py (SystemExec.__init__): New stateful
4795 * IPython/genutils.py (SystemExec.__init__): New stateful
4793 interface to xsys and bq. Useful for writing system scripts.
4796 interface to xsys and bq. Useful for writing system scripts.
4794
4797
4795 2002-05-30 Fernando Perez <fperez@colorado.edu>
4798 2002-05-30 Fernando Perez <fperez@colorado.edu>
4796
4799
4797 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4800 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4798 documents. This will make the user download smaller (it's getting
4801 documents. This will make the user download smaller (it's getting
4799 too big).
4802 too big).
4800
4803
4801 2002-05-29 Fernando Perez <fperez@colorado.edu>
4804 2002-05-29 Fernando Perez <fperez@colorado.edu>
4802
4805
4803 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4806 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4804 fix problems with shelve and pickle. Seems to work, but I don't
4807 fix problems with shelve and pickle. Seems to work, but I don't
4805 know if corner cases break it. Thanks to Mike Heeter
4808 know if corner cases break it. Thanks to Mike Heeter
4806 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4809 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4807
4810
4808 2002-05-24 Fernando Perez <fperez@colorado.edu>
4811 2002-05-24 Fernando Perez <fperez@colorado.edu>
4809
4812
4810 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4813 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4811 macros having broken.
4814 macros having broken.
4812
4815
4813 2002-05-21 Fernando Perez <fperez@colorado.edu>
4816 2002-05-21 Fernando Perez <fperez@colorado.edu>
4814
4817
4815 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4818 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4816 introduced logging bug: all history before logging started was
4819 introduced logging bug: all history before logging started was
4817 being written one character per line! This came from the redesign
4820 being written one character per line! This came from the redesign
4818 of the input history as a special list which slices to strings,
4821 of the input history as a special list which slices to strings,
4819 not to lists.
4822 not to lists.
4820
4823
4821 2002-05-20 Fernando Perez <fperez@colorado.edu>
4824 2002-05-20 Fernando Perez <fperez@colorado.edu>
4822
4825
4823 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4826 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4824 be an attribute of all classes in this module. The design of these
4827 be an attribute of all classes in this module. The design of these
4825 classes needs some serious overhauling.
4828 classes needs some serious overhauling.
4826
4829
4827 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4830 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4828 which was ignoring '_' in option names.
4831 which was ignoring '_' in option names.
4829
4832
4830 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4833 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4831 'Verbose_novars' to 'Context' and made it the new default. It's a
4834 'Verbose_novars' to 'Context' and made it the new default. It's a
4832 bit more readable and also safer than verbose.
4835 bit more readable and also safer than verbose.
4833
4836
4834 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4837 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4835 triple-quoted strings.
4838 triple-quoted strings.
4836
4839
4837 * IPython/OInspect.py (__all__): new module exposing the object
4840 * IPython/OInspect.py (__all__): new module exposing the object
4838 introspection facilities. Now the corresponding magics are dummy
4841 introspection facilities. Now the corresponding magics are dummy
4839 wrappers around this. Having this module will make it much easier
4842 wrappers around this. Having this module will make it much easier
4840 to put these functions into our modified pdb.
4843 to put these functions into our modified pdb.
4841 This new object inspector system uses the new colorizing module,
4844 This new object inspector system uses the new colorizing module,
4842 so source code and other things are nicely syntax highlighted.
4845 so source code and other things are nicely syntax highlighted.
4843
4846
4844 2002-05-18 Fernando Perez <fperez@colorado.edu>
4847 2002-05-18 Fernando Perez <fperez@colorado.edu>
4845
4848
4846 * IPython/ColorANSI.py: Split the coloring tools into a separate
4849 * IPython/ColorANSI.py: Split the coloring tools into a separate
4847 module so I can use them in other code easier (they were part of
4850 module so I can use them in other code easier (they were part of
4848 ultraTB).
4851 ultraTB).
4849
4852
4850 2002-05-17 Fernando Perez <fperez@colorado.edu>
4853 2002-05-17 Fernando Perez <fperez@colorado.edu>
4851
4854
4852 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4855 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4853 fixed it to set the global 'g' also to the called instance, as
4856 fixed it to set the global 'g' also to the called instance, as
4854 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4857 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4855 user's 'g' variables).
4858 user's 'g' variables).
4856
4859
4857 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4860 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4858 global variables (aliases to _ih,_oh) so that users which expect
4861 global variables (aliases to _ih,_oh) so that users which expect
4859 In[5] or Out[7] to work aren't unpleasantly surprised.
4862 In[5] or Out[7] to work aren't unpleasantly surprised.
4860 (InputList.__getslice__): new class to allow executing slices of
4863 (InputList.__getslice__): new class to allow executing slices of
4861 input history directly. Very simple class, complements the use of
4864 input history directly. Very simple class, complements the use of
4862 macros.
4865 macros.
4863
4866
4864 2002-05-16 Fernando Perez <fperez@colorado.edu>
4867 2002-05-16 Fernando Perez <fperez@colorado.edu>
4865
4868
4866 * setup.py (docdirbase): make doc directory be just doc/IPython
4869 * setup.py (docdirbase): make doc directory be just doc/IPython
4867 without version numbers, it will reduce clutter for users.
4870 without version numbers, it will reduce clutter for users.
4868
4871
4869 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4872 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4870 execfile call to prevent possible memory leak. See for details:
4873 execfile call to prevent possible memory leak. See for details:
4871 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4874 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4872
4875
4873 2002-05-15 Fernando Perez <fperez@colorado.edu>
4876 2002-05-15 Fernando Perez <fperez@colorado.edu>
4874
4877
4875 * IPython/Magic.py (Magic.magic_psource): made the object
4878 * IPython/Magic.py (Magic.magic_psource): made the object
4876 introspection names be more standard: pdoc, pdef, pfile and
4879 introspection names be more standard: pdoc, pdef, pfile and
4877 psource. They all print/page their output, and it makes
4880 psource. They all print/page their output, and it makes
4878 remembering them easier. Kept old names for compatibility as
4881 remembering them easier. Kept old names for compatibility as
4879 aliases.
4882 aliases.
4880
4883
4881 2002-05-14 Fernando Perez <fperez@colorado.edu>
4884 2002-05-14 Fernando Perez <fperez@colorado.edu>
4882
4885
4883 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4886 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4884 what the mouse problem was. The trick is to use gnuplot with temp
4887 what the mouse problem was. The trick is to use gnuplot with temp
4885 files and NOT with pipes (for data communication), because having
4888 files and NOT with pipes (for data communication), because having
4886 both pipes and the mouse on is bad news.
4889 both pipes and the mouse on is bad news.
4887
4890
4888 2002-05-13 Fernando Perez <fperez@colorado.edu>
4891 2002-05-13 Fernando Perez <fperez@colorado.edu>
4889
4892
4890 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4893 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4891 bug. Information would be reported about builtins even when
4894 bug. Information would be reported about builtins even when
4892 user-defined functions overrode them.
4895 user-defined functions overrode them.
4893
4896
4894 2002-05-11 Fernando Perez <fperez@colorado.edu>
4897 2002-05-11 Fernando Perez <fperez@colorado.edu>
4895
4898
4896 * IPython/__init__.py (__all__): removed FlexCompleter from
4899 * IPython/__init__.py (__all__): removed FlexCompleter from
4897 __all__ so that things don't fail in platforms without readline.
4900 __all__ so that things don't fail in platforms without readline.
4898
4901
4899 2002-05-10 Fernando Perez <fperez@colorado.edu>
4902 2002-05-10 Fernando Perez <fperez@colorado.edu>
4900
4903
4901 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4904 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4902 it requires Numeric, effectively making Numeric a dependency for
4905 it requires Numeric, effectively making Numeric a dependency for
4903 IPython.
4906 IPython.
4904
4907
4905 * Released 0.2.13
4908 * Released 0.2.13
4906
4909
4907 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4910 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4908 profiler interface. Now all the major options from the profiler
4911 profiler interface. Now all the major options from the profiler
4909 module are directly supported in IPython, both for single
4912 module are directly supported in IPython, both for single
4910 expressions (@prun) and for full programs (@run -p).
4913 expressions (@prun) and for full programs (@run -p).
4911
4914
4912 2002-05-09 Fernando Perez <fperez@colorado.edu>
4915 2002-05-09 Fernando Perez <fperez@colorado.edu>
4913
4916
4914 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4917 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4915 magic properly formatted for screen.
4918 magic properly formatted for screen.
4916
4919
4917 * setup.py (make_shortcut): Changed things to put pdf version in
4920 * setup.py (make_shortcut): Changed things to put pdf version in
4918 doc/ instead of doc/manual (had to change lyxport a bit).
4921 doc/ instead of doc/manual (had to change lyxport a bit).
4919
4922
4920 * IPython/Magic.py (Profile.string_stats): made profile runs go
4923 * IPython/Magic.py (Profile.string_stats): made profile runs go
4921 through pager (they are long and a pager allows searching, saving,
4924 through pager (they are long and a pager allows searching, saving,
4922 etc.)
4925 etc.)
4923
4926
4924 2002-05-08 Fernando Perez <fperez@colorado.edu>
4927 2002-05-08 Fernando Perez <fperez@colorado.edu>
4925
4928
4926 * Released 0.2.12
4929 * Released 0.2.12
4927
4930
4928 2002-05-06 Fernando Perez <fperez@colorado.edu>
4931 2002-05-06 Fernando Perez <fperez@colorado.edu>
4929
4932
4930 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4933 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4931 introduced); 'hist n1 n2' was broken.
4934 introduced); 'hist n1 n2' was broken.
4932 (Magic.magic_pdb): added optional on/off arguments to @pdb
4935 (Magic.magic_pdb): added optional on/off arguments to @pdb
4933 (Magic.magic_run): added option -i to @run, which executes code in
4936 (Magic.magic_run): added option -i to @run, which executes code in
4934 the IPython namespace instead of a clean one. Also added @irun as
4937 the IPython namespace instead of a clean one. Also added @irun as
4935 an alias to @run -i.
4938 an alias to @run -i.
4936
4939
4937 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4940 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4938 fixed (it didn't really do anything, the namespaces were wrong).
4941 fixed (it didn't really do anything, the namespaces were wrong).
4939
4942
4940 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4943 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4941
4944
4942 * IPython/__init__.py (__all__): Fixed package namespace, now
4945 * IPython/__init__.py (__all__): Fixed package namespace, now
4943 'import IPython' does give access to IPython.<all> as
4946 'import IPython' does give access to IPython.<all> as
4944 expected. Also renamed __release__ to Release.
4947 expected. Also renamed __release__ to Release.
4945
4948
4946 * IPython/Debugger.py (__license__): created new Pdb class which
4949 * IPython/Debugger.py (__license__): created new Pdb class which
4947 functions like a drop-in for the normal pdb.Pdb but does NOT
4950 functions like a drop-in for the normal pdb.Pdb but does NOT
4948 import readline by default. This way it doesn't muck up IPython's
4951 import readline by default. This way it doesn't muck up IPython's
4949 readline handling, and now tab-completion finally works in the
4952 readline handling, and now tab-completion finally works in the
4950 debugger -- sort of. It completes things globally visible, but the
4953 debugger -- sort of. It completes things globally visible, but the
4951 completer doesn't track the stack as pdb walks it. That's a bit
4954 completer doesn't track the stack as pdb walks it. That's a bit
4952 tricky, and I'll have to implement it later.
4955 tricky, and I'll have to implement it later.
4953
4956
4954 2002-05-05 Fernando Perez <fperez@colorado.edu>
4957 2002-05-05 Fernando Perez <fperez@colorado.edu>
4955
4958
4956 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4959 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4957 magic docstrings when printed via ? (explicit \'s were being
4960 magic docstrings when printed via ? (explicit \'s were being
4958 printed).
4961 printed).
4959
4962
4960 * IPython/ipmaker.py (make_IPython): fixed namespace
4963 * IPython/ipmaker.py (make_IPython): fixed namespace
4961 identification bug. Now variables loaded via logs or command-line
4964 identification bug. Now variables loaded via logs or command-line
4962 files are recognized in the interactive namespace by @who.
4965 files are recognized in the interactive namespace by @who.
4963
4966
4964 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4967 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4965 log replay system stemming from the string form of Structs.
4968 log replay system stemming from the string form of Structs.
4966
4969
4967 * IPython/Magic.py (Macro.__init__): improved macros to properly
4970 * IPython/Magic.py (Macro.__init__): improved macros to properly
4968 handle magic commands in them.
4971 handle magic commands in them.
4969 (Magic.magic_logstart): usernames are now expanded so 'logstart
4972 (Magic.magic_logstart): usernames are now expanded so 'logstart
4970 ~/mylog' now works.
4973 ~/mylog' now works.
4971
4974
4972 * IPython/iplib.py (complete): fixed bug where paths starting with
4975 * IPython/iplib.py (complete): fixed bug where paths starting with
4973 '/' would be completed as magic names.
4976 '/' would be completed as magic names.
4974
4977
4975 2002-05-04 Fernando Perez <fperez@colorado.edu>
4978 2002-05-04 Fernando Perez <fperez@colorado.edu>
4976
4979
4977 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4980 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4978 allow running full programs under the profiler's control.
4981 allow running full programs under the profiler's control.
4979
4982
4980 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4983 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4981 mode to report exceptions verbosely but without formatting
4984 mode to report exceptions verbosely but without formatting
4982 variables. This addresses the issue of ipython 'freezing' (it's
4985 variables. This addresses the issue of ipython 'freezing' (it's
4983 not frozen, but caught in an expensive formatting loop) when huge
4986 not frozen, but caught in an expensive formatting loop) when huge
4984 variables are in the context of an exception.
4987 variables are in the context of an exception.
4985 (VerboseTB.text): Added '--->' markers at line where exception was
4988 (VerboseTB.text): Added '--->' markers at line where exception was
4986 triggered. Much clearer to read, especially in NoColor modes.
4989 triggered. Much clearer to read, especially in NoColor modes.
4987
4990
4988 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4991 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4989 implemented in reverse when changing to the new parse_options().
4992 implemented in reverse when changing to the new parse_options().
4990
4993
4991 2002-05-03 Fernando Perez <fperez@colorado.edu>
4994 2002-05-03 Fernando Perez <fperez@colorado.edu>
4992
4995
4993 * IPython/Magic.py (Magic.parse_options): new function so that
4996 * IPython/Magic.py (Magic.parse_options): new function so that
4994 magics can parse options easier.
4997 magics can parse options easier.
4995 (Magic.magic_prun): new function similar to profile.run(),
4998 (Magic.magic_prun): new function similar to profile.run(),
4996 suggested by Chris Hart.
4999 suggested by Chris Hart.
4997 (Magic.magic_cd): fixed behavior so that it only changes if
5000 (Magic.magic_cd): fixed behavior so that it only changes if
4998 directory actually is in history.
5001 directory actually is in history.
4999
5002
5000 * IPython/usage.py (__doc__): added information about potential
5003 * IPython/usage.py (__doc__): added information about potential
5001 slowness of Verbose exception mode when there are huge data
5004 slowness of Verbose exception mode when there are huge data
5002 structures to be formatted (thanks to Archie Paulson).
5005 structures to be formatted (thanks to Archie Paulson).
5003
5006
5004 * IPython/ipmaker.py (make_IPython): Changed default logging
5007 * IPython/ipmaker.py (make_IPython): Changed default logging
5005 (when simply called with -log) to use curr_dir/ipython.log in
5008 (when simply called with -log) to use curr_dir/ipython.log in
5006 rotate mode. Fixed crash which was occuring with -log before
5009 rotate mode. Fixed crash which was occuring with -log before
5007 (thanks to Jim Boyle).
5010 (thanks to Jim Boyle).
5008
5011
5009 2002-05-01 Fernando Perez <fperez@colorado.edu>
5012 2002-05-01 Fernando Perez <fperez@colorado.edu>
5010
5013
5011 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5014 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5012 was nasty -- though somewhat of a corner case).
5015 was nasty -- though somewhat of a corner case).
5013
5016
5014 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5017 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5015 text (was a bug).
5018 text (was a bug).
5016
5019
5017 2002-04-30 Fernando Perez <fperez@colorado.edu>
5020 2002-04-30 Fernando Perez <fperez@colorado.edu>
5018
5021
5019 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5022 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5020 a print after ^D or ^C from the user so that the In[] prompt
5023 a print after ^D or ^C from the user so that the In[] prompt
5021 doesn't over-run the gnuplot one.
5024 doesn't over-run the gnuplot one.
5022
5025
5023 2002-04-29 Fernando Perez <fperez@colorado.edu>
5026 2002-04-29 Fernando Perez <fperez@colorado.edu>
5024
5027
5025 * Released 0.2.10
5028 * Released 0.2.10
5026
5029
5027 * IPython/__release__.py (version): get date dynamically.
5030 * IPython/__release__.py (version): get date dynamically.
5028
5031
5029 * Misc. documentation updates thanks to Arnd's comments. Also ran
5032 * Misc. documentation updates thanks to Arnd's comments. Also ran
5030 a full spellcheck on the manual (hadn't been done in a while).
5033 a full spellcheck on the manual (hadn't been done in a while).
5031
5034
5032 2002-04-27 Fernando Perez <fperez@colorado.edu>
5035 2002-04-27 Fernando Perez <fperez@colorado.edu>
5033
5036
5034 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5037 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5035 starting a log in mid-session would reset the input history list.
5038 starting a log in mid-session would reset the input history list.
5036
5039
5037 2002-04-26 Fernando Perez <fperez@colorado.edu>
5040 2002-04-26 Fernando Perez <fperez@colorado.edu>
5038
5041
5039 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5042 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5040 all files were being included in an update. Now anything in
5043 all files were being included in an update. Now anything in
5041 UserConfig that matches [A-Za-z]*.py will go (this excludes
5044 UserConfig that matches [A-Za-z]*.py will go (this excludes
5042 __init__.py)
5045 __init__.py)
5043
5046
5044 2002-04-25 Fernando Perez <fperez@colorado.edu>
5047 2002-04-25 Fernando Perez <fperez@colorado.edu>
5045
5048
5046 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5049 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5047 to __builtins__ so that any form of embedded or imported code can
5050 to __builtins__ so that any form of embedded or imported code can
5048 test for being inside IPython.
5051 test for being inside IPython.
5049
5052
5050 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5053 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5051 changed to GnuplotMagic because it's now an importable module,
5054 changed to GnuplotMagic because it's now an importable module,
5052 this makes the name follow that of the standard Gnuplot module.
5055 this makes the name follow that of the standard Gnuplot module.
5053 GnuplotMagic can now be loaded at any time in mid-session.
5056 GnuplotMagic can now be loaded at any time in mid-session.
5054
5057
5055 2002-04-24 Fernando Perez <fperez@colorado.edu>
5058 2002-04-24 Fernando Perez <fperez@colorado.edu>
5056
5059
5057 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5060 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5058 the globals (IPython has its own namespace) and the
5061 the globals (IPython has its own namespace) and the
5059 PhysicalQuantity stuff is much better anyway.
5062 PhysicalQuantity stuff is much better anyway.
5060
5063
5061 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5064 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5062 embedding example to standard user directory for
5065 embedding example to standard user directory for
5063 distribution. Also put it in the manual.
5066 distribution. Also put it in the manual.
5064
5067
5065 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5068 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5066 instance as first argument (so it doesn't rely on some obscure
5069 instance as first argument (so it doesn't rely on some obscure
5067 hidden global).
5070 hidden global).
5068
5071
5069 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5072 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5070 delimiters. While it prevents ().TAB from working, it allows
5073 delimiters. While it prevents ().TAB from working, it allows
5071 completions in open (... expressions. This is by far a more common
5074 completions in open (... expressions. This is by far a more common
5072 case.
5075 case.
5073
5076
5074 2002-04-23 Fernando Perez <fperez@colorado.edu>
5077 2002-04-23 Fernando Perez <fperez@colorado.edu>
5075
5078
5076 * IPython/Extensions/InterpreterPasteInput.py: new
5079 * IPython/Extensions/InterpreterPasteInput.py: new
5077 syntax-processing module for pasting lines with >>> or ... at the
5080 syntax-processing module for pasting lines with >>> or ... at the
5078 start.
5081 start.
5079
5082
5080 * IPython/Extensions/PhysicalQ_Interactive.py
5083 * IPython/Extensions/PhysicalQ_Interactive.py
5081 (PhysicalQuantityInteractive.__int__): fixed to work with either
5084 (PhysicalQuantityInteractive.__int__): fixed to work with either
5082 Numeric or math.
5085 Numeric or math.
5083
5086
5084 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5087 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5085 provided profiles. Now we have:
5088 provided profiles. Now we have:
5086 -math -> math module as * and cmath with its own namespace.
5089 -math -> math module as * and cmath with its own namespace.
5087 -numeric -> Numeric as *, plus gnuplot & grace
5090 -numeric -> Numeric as *, plus gnuplot & grace
5088 -physics -> same as before
5091 -physics -> same as before
5089
5092
5090 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5093 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5091 user-defined magics wouldn't be found by @magic if they were
5094 user-defined magics wouldn't be found by @magic if they were
5092 defined as class methods. Also cleaned up the namespace search
5095 defined as class methods. Also cleaned up the namespace search
5093 logic and the string building (to use %s instead of many repeated
5096 logic and the string building (to use %s instead of many repeated
5094 string adds).
5097 string adds).
5095
5098
5096 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5099 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5097 of user-defined magics to operate with class methods (cleaner, in
5100 of user-defined magics to operate with class methods (cleaner, in
5098 line with the gnuplot code).
5101 line with the gnuplot code).
5099
5102
5100 2002-04-22 Fernando Perez <fperez@colorado.edu>
5103 2002-04-22 Fernando Perez <fperez@colorado.edu>
5101
5104
5102 * setup.py: updated dependency list so that manual is updated when
5105 * setup.py: updated dependency list so that manual is updated when
5103 all included files change.
5106 all included files change.
5104
5107
5105 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5108 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5106 the delimiter removal option (the fix is ugly right now).
5109 the delimiter removal option (the fix is ugly right now).
5107
5110
5108 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5111 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5109 all of the math profile (quicker loading, no conflict between
5112 all of the math profile (quicker loading, no conflict between
5110 g-9.8 and g-gnuplot).
5113 g-9.8 and g-gnuplot).
5111
5114
5112 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5115 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5113 name of post-mortem files to IPython_crash_report.txt.
5116 name of post-mortem files to IPython_crash_report.txt.
5114
5117
5115 * Cleanup/update of the docs. Added all the new readline info and
5118 * Cleanup/update of the docs. Added all the new readline info and
5116 formatted all lists as 'real lists'.
5119 formatted all lists as 'real lists'.
5117
5120
5118 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5121 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5119 tab-completion options, since the full readline parse_and_bind is
5122 tab-completion options, since the full readline parse_and_bind is
5120 now accessible.
5123 now accessible.
5121
5124
5122 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5125 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5123 handling of readline options. Now users can specify any string to
5126 handling of readline options. Now users can specify any string to
5124 be passed to parse_and_bind(), as well as the delimiters to be
5127 be passed to parse_and_bind(), as well as the delimiters to be
5125 removed.
5128 removed.
5126 (InteractiveShell.__init__): Added __name__ to the global
5129 (InteractiveShell.__init__): Added __name__ to the global
5127 namespace so that things like Itpl which rely on its existence
5130 namespace so that things like Itpl which rely on its existence
5128 don't crash.
5131 don't crash.
5129 (InteractiveShell._prefilter): Defined the default with a _ so
5132 (InteractiveShell._prefilter): Defined the default with a _ so
5130 that prefilter() is easier to override, while the default one
5133 that prefilter() is easier to override, while the default one
5131 remains available.
5134 remains available.
5132
5135
5133 2002-04-18 Fernando Perez <fperez@colorado.edu>
5136 2002-04-18 Fernando Perez <fperez@colorado.edu>
5134
5137
5135 * Added information about pdb in the docs.
5138 * Added information about pdb in the docs.
5136
5139
5137 2002-04-17 Fernando Perez <fperez@colorado.edu>
5140 2002-04-17 Fernando Perez <fperez@colorado.edu>
5138
5141
5139 * IPython/ipmaker.py (make_IPython): added rc_override option to
5142 * IPython/ipmaker.py (make_IPython): added rc_override option to
5140 allow passing config options at creation time which may override
5143 allow passing config options at creation time which may override
5141 anything set in the config files or command line. This is
5144 anything set in the config files or command line. This is
5142 particularly useful for configuring embedded instances.
5145 particularly useful for configuring embedded instances.
5143
5146
5144 2002-04-15 Fernando Perez <fperez@colorado.edu>
5147 2002-04-15 Fernando Perez <fperez@colorado.edu>
5145
5148
5146 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5149 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5147 crash embedded instances because of the input cache falling out of
5150 crash embedded instances because of the input cache falling out of
5148 sync with the output counter.
5151 sync with the output counter.
5149
5152
5150 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5153 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5151 mode which calls pdb after an uncaught exception in IPython itself.
5154 mode which calls pdb after an uncaught exception in IPython itself.
5152
5155
5153 2002-04-14 Fernando Perez <fperez@colorado.edu>
5156 2002-04-14 Fernando Perez <fperez@colorado.edu>
5154
5157
5155 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5158 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5156 readline, fix it back after each call.
5159 readline, fix it back after each call.
5157
5160
5158 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5161 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5159 method to force all access via __call__(), which guarantees that
5162 method to force all access via __call__(), which guarantees that
5160 traceback references are properly deleted.
5163 traceback references are properly deleted.
5161
5164
5162 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5165 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5163 improve printing when pprint is in use.
5166 improve printing when pprint is in use.
5164
5167
5165 2002-04-13 Fernando Perez <fperez@colorado.edu>
5168 2002-04-13 Fernando Perez <fperez@colorado.edu>
5166
5169
5167 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5170 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5168 exceptions aren't caught anymore. If the user triggers one, he
5171 exceptions aren't caught anymore. If the user triggers one, he
5169 should know why he's doing it and it should go all the way up,
5172 should know why he's doing it and it should go all the way up,
5170 just like any other exception. So now @abort will fully kill the
5173 just like any other exception. So now @abort will fully kill the
5171 embedded interpreter and the embedding code (unless that happens
5174 embedded interpreter and the embedding code (unless that happens
5172 to catch SystemExit).
5175 to catch SystemExit).
5173
5176
5174 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5177 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5175 and a debugger() method to invoke the interactive pdb debugger
5178 and a debugger() method to invoke the interactive pdb debugger
5176 after printing exception information. Also added the corresponding
5179 after printing exception information. Also added the corresponding
5177 -pdb option and @pdb magic to control this feature, and updated
5180 -pdb option and @pdb magic to control this feature, and updated
5178 the docs. After a suggestion from Christopher Hart
5181 the docs. After a suggestion from Christopher Hart
5179 (hart-AT-caltech.edu).
5182 (hart-AT-caltech.edu).
5180
5183
5181 2002-04-12 Fernando Perez <fperez@colorado.edu>
5184 2002-04-12 Fernando Perez <fperez@colorado.edu>
5182
5185
5183 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5186 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5184 the exception handlers defined by the user (not the CrashHandler)
5187 the exception handlers defined by the user (not the CrashHandler)
5185 so that user exceptions don't trigger an ipython bug report.
5188 so that user exceptions don't trigger an ipython bug report.
5186
5189
5187 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5190 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5188 configurable (it should have always been so).
5191 configurable (it should have always been so).
5189
5192
5190 2002-03-26 Fernando Perez <fperez@colorado.edu>
5193 2002-03-26 Fernando Perez <fperez@colorado.edu>
5191
5194
5192 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5195 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5193 and there to fix embedding namespace issues. This should all be
5196 and there to fix embedding namespace issues. This should all be
5194 done in a more elegant way.
5197 done in a more elegant way.
5195
5198
5196 2002-03-25 Fernando Perez <fperez@colorado.edu>
5199 2002-03-25 Fernando Perez <fperez@colorado.edu>
5197
5200
5198 * IPython/genutils.py (get_home_dir): Try to make it work under
5201 * IPython/genutils.py (get_home_dir): Try to make it work under
5199 win9x also.
5202 win9x also.
5200
5203
5201 2002-03-20 Fernando Perez <fperez@colorado.edu>
5204 2002-03-20 Fernando Perez <fperez@colorado.edu>
5202
5205
5203 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5206 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5204 sys.displayhook untouched upon __init__.
5207 sys.displayhook untouched upon __init__.
5205
5208
5206 2002-03-19 Fernando Perez <fperez@colorado.edu>
5209 2002-03-19 Fernando Perez <fperez@colorado.edu>
5207
5210
5208 * Released 0.2.9 (for embedding bug, basically).
5211 * Released 0.2.9 (for embedding bug, basically).
5209
5212
5210 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5213 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5211 exceptions so that enclosing shell's state can be restored.
5214 exceptions so that enclosing shell's state can be restored.
5212
5215
5213 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5216 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5214 naming conventions in the .ipython/ dir.
5217 naming conventions in the .ipython/ dir.
5215
5218
5216 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5219 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5217 from delimiters list so filenames with - in them get expanded.
5220 from delimiters list so filenames with - in them get expanded.
5218
5221
5219 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5222 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5220 sys.displayhook not being properly restored after an embedded call.
5223 sys.displayhook not being properly restored after an embedded call.
5221
5224
5222 2002-03-18 Fernando Perez <fperez@colorado.edu>
5225 2002-03-18 Fernando Perez <fperez@colorado.edu>
5223
5226
5224 * Released 0.2.8
5227 * Released 0.2.8
5225
5228
5226 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5229 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5227 some files weren't being included in a -upgrade.
5230 some files weren't being included in a -upgrade.
5228 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5231 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5229 on' so that the first tab completes.
5232 on' so that the first tab completes.
5230 (InteractiveShell.handle_magic): fixed bug with spaces around
5233 (InteractiveShell.handle_magic): fixed bug with spaces around
5231 quotes breaking many magic commands.
5234 quotes breaking many magic commands.
5232
5235
5233 * setup.py: added note about ignoring the syntax error messages at
5236 * setup.py: added note about ignoring the syntax error messages at
5234 installation.
5237 installation.
5235
5238
5236 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5239 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5237 streamlining the gnuplot interface, now there's only one magic @gp.
5240 streamlining the gnuplot interface, now there's only one magic @gp.
5238
5241
5239 2002-03-17 Fernando Perez <fperez@colorado.edu>
5242 2002-03-17 Fernando Perez <fperez@colorado.edu>
5240
5243
5241 * IPython/UserConfig/magic_gnuplot.py: new name for the
5244 * IPython/UserConfig/magic_gnuplot.py: new name for the
5242 example-magic_pm.py file. Much enhanced system, now with a shell
5245 example-magic_pm.py file. Much enhanced system, now with a shell
5243 for communicating directly with gnuplot, one command at a time.
5246 for communicating directly with gnuplot, one command at a time.
5244
5247
5245 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5248 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
5246 setting __name__=='__main__'.
5249 setting __name__=='__main__'.
5247
5250
5248 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5251 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
5249 mini-shell for accessing gnuplot from inside ipython. Should
5252 mini-shell for accessing gnuplot from inside ipython. Should
5250 extend it later for grace access too. Inspired by Arnd's
5253 extend it later for grace access too. Inspired by Arnd's
5251 suggestion.
5254 suggestion.
5252
5255
5253 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5256 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
5254 calling magic functions with () in their arguments. Thanks to Arnd
5257 calling magic functions with () in their arguments. Thanks to Arnd
5255 Baecker for pointing this to me.
5258 Baecker for pointing this to me.
5256
5259
5257 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5260 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
5258 infinitely for integer or complex arrays (only worked with floats).
5261 infinitely for integer or complex arrays (only worked with floats).
5259
5262
5260 2002-03-16 Fernando Perez <fperez@colorado.edu>
5263 2002-03-16 Fernando Perez <fperez@colorado.edu>
5261
5264
5262 * setup.py: Merged setup and setup_windows into a single script
5265 * setup.py: Merged setup and setup_windows into a single script
5263 which properly handles things for windows users.
5266 which properly handles things for windows users.
5264
5267
5265 2002-03-15 Fernando Perez <fperez@colorado.edu>
5268 2002-03-15 Fernando Perez <fperez@colorado.edu>
5266
5269
5267 * Big change to the manual: now the magics are all automatically
5270 * Big change to the manual: now the magics are all automatically
5268 documented. This information is generated from their docstrings
5271 documented. This information is generated from their docstrings
5269 and put in a latex file included by the manual lyx file. This way
5272 and put in a latex file included by the manual lyx file. This way
5270 we get always up to date information for the magics. The manual
5273 we get always up to date information for the magics. The manual
5271 now also has proper version information, also auto-synced.
5274 now also has proper version information, also auto-synced.
5272
5275
5273 For this to work, an undocumented --magic_docstrings option was added.
5276 For this to work, an undocumented --magic_docstrings option was added.
5274
5277
5275 2002-03-13 Fernando Perez <fperez@colorado.edu>
5278 2002-03-13 Fernando Perez <fperez@colorado.edu>
5276
5279
5277 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5280 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
5278 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5281 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
5279
5282
5280 2002-03-12 Fernando Perez <fperez@colorado.edu>
5283 2002-03-12 Fernando Perez <fperez@colorado.edu>
5281
5284
5282 * IPython/ultraTB.py (TermColors): changed color escapes again to
5285 * IPython/ultraTB.py (TermColors): changed color escapes again to
5283 fix the (old, reintroduced) line-wrapping bug. Basically, if
5286 fix the (old, reintroduced) line-wrapping bug. Basically, if
5284 \001..\002 aren't given in the color escapes, lines get wrapped
5287 \001..\002 aren't given in the color escapes, lines get wrapped
5285 weirdly. But giving those screws up old xterms and emacs terms. So
5288 weirdly. But giving those screws up old xterms and emacs terms. So
5286 I added some logic for emacs terms to be ok, but I can't identify old
5289 I added some logic for emacs terms to be ok, but I can't identify old
5287 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5290 xterms separately ($TERM=='xterm' for many terminals, like konsole).
5288
5291
5289 2002-03-10 Fernando Perez <fperez@colorado.edu>
5292 2002-03-10 Fernando Perez <fperez@colorado.edu>
5290
5293
5291 * IPython/usage.py (__doc__): Various documentation cleanups and
5294 * IPython/usage.py (__doc__): Various documentation cleanups and
5292 updates, both in usage docstrings and in the manual.
5295 updates, both in usage docstrings and in the manual.
5293
5296
5294 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5297 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
5295 handling of caching. Set minimum acceptabe value for having a
5298 handling of caching. Set minimum acceptabe value for having a
5296 cache at 20 values.
5299 cache at 20 values.
5297
5300
5298 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5301 * IPython/iplib.py (InteractiveShell.user_setup): moved the
5299 install_first_time function to a method, renamed it and added an
5302 install_first_time function to a method, renamed it and added an
5300 'upgrade' mode. Now people can update their config directory with
5303 'upgrade' mode. Now people can update their config directory with
5301 a simple command line switch (-upgrade, also new).
5304 a simple command line switch (-upgrade, also new).
5302
5305
5303 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5306 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
5304 @file (convenient for automagic users under Python >= 2.2).
5307 @file (convenient for automagic users under Python >= 2.2).
5305 Removed @files (it seemed more like a plural than an abbrev. of
5308 Removed @files (it seemed more like a plural than an abbrev. of
5306 'file show').
5309 'file show').
5307
5310
5308 * IPython/iplib.py (install_first_time): Fixed crash if there were
5311 * IPython/iplib.py (install_first_time): Fixed crash if there were
5309 backup files ('~') in .ipython/ install directory.
5312 backup files ('~') in .ipython/ install directory.
5310
5313
5311 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5314 * IPython/ipmaker.py (make_IPython): fixes for new prompt
5312 system. Things look fine, but these changes are fairly
5315 system. Things look fine, but these changes are fairly
5313 intrusive. Test them for a few days.
5316 intrusive. Test them for a few days.
5314
5317
5315 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5318 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
5316 the prompts system. Now all in/out prompt strings are user
5319 the prompts system. Now all in/out prompt strings are user
5317 controllable. This is particularly useful for embedding, as one
5320 controllable. This is particularly useful for embedding, as one
5318 can tag embedded instances with particular prompts.
5321 can tag embedded instances with particular prompts.
5319
5322
5320 Also removed global use of sys.ps1/2, which now allows nested
5323 Also removed global use of sys.ps1/2, which now allows nested
5321 embeddings without any problems. Added command-line options for
5324 embeddings without any problems. Added command-line options for
5322 the prompt strings.
5325 the prompt strings.
5323
5326
5324 2002-03-08 Fernando Perez <fperez@colorado.edu>
5327 2002-03-08 Fernando Perez <fperez@colorado.edu>
5325
5328
5326 * IPython/UserConfig/example-embed-short.py (ipshell): added
5329 * IPython/UserConfig/example-embed-short.py (ipshell): added
5327 example file with the bare minimum code for embedding.
5330 example file with the bare minimum code for embedding.
5328
5331
5329 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5332 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
5330 functionality for the embeddable shell to be activated/deactivated
5333 functionality for the embeddable shell to be activated/deactivated
5331 either globally or at each call.
5334 either globally or at each call.
5332
5335
5333 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5336 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
5334 rewriting the prompt with '--->' for auto-inputs with proper
5337 rewriting the prompt with '--->' for auto-inputs with proper
5335 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5338 coloring. Now the previous UGLY hack in handle_auto() is gone, and
5336 this is handled by the prompts class itself, as it should.
5339 this is handled by the prompts class itself, as it should.
5337
5340
5338 2002-03-05 Fernando Perez <fperez@colorado.edu>
5341 2002-03-05 Fernando Perez <fperez@colorado.edu>
5339
5342
5340 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5343 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
5341 @logstart to avoid name clashes with the math log function.
5344 @logstart to avoid name clashes with the math log function.
5342
5345
5343 * Big updates to X/Emacs section of the manual.
5346 * Big updates to X/Emacs section of the manual.
5344
5347
5345 * Removed ipython_emacs. Milan explained to me how to pass
5348 * Removed ipython_emacs. Milan explained to me how to pass
5346 arguments to ipython through Emacs. Some day I'm going to end up
5349 arguments to ipython through Emacs. Some day I'm going to end up
5347 learning some lisp...
5350 learning some lisp...
5348
5351
5349 2002-03-04 Fernando Perez <fperez@colorado.edu>
5352 2002-03-04 Fernando Perez <fperez@colorado.edu>
5350
5353
5351 * IPython/ipython_emacs: Created script to be used as the
5354 * IPython/ipython_emacs: Created script to be used as the
5352 py-python-command Emacs variable so we can pass IPython
5355 py-python-command Emacs variable so we can pass IPython
5353 parameters. I can't figure out how to tell Emacs directly to pass
5356 parameters. I can't figure out how to tell Emacs directly to pass
5354 parameters to IPython, so a dummy shell script will do it.
5357 parameters to IPython, so a dummy shell script will do it.
5355
5358
5356 Other enhancements made for things to work better under Emacs'
5359 Other enhancements made for things to work better under Emacs'
5357 various types of terminals. Many thanks to Milan Zamazal
5360 various types of terminals. Many thanks to Milan Zamazal
5358 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5361 <pdm-AT-zamazal.org> for all the suggestions and pointers.
5359
5362
5360 2002-03-01 Fernando Perez <fperez@colorado.edu>
5363 2002-03-01 Fernando Perez <fperez@colorado.edu>
5361
5364
5362 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5365 * IPython/ipmaker.py (make_IPython): added a --readline! option so
5363 that loading of readline is now optional. This gives better
5366 that loading of readline is now optional. This gives better
5364 control to emacs users.
5367 control to emacs users.
5365
5368
5366 * IPython/ultraTB.py (__date__): Modified color escape sequences
5369 * IPython/ultraTB.py (__date__): Modified color escape sequences
5367 and now things work fine under xterm and in Emacs' term buffers
5370 and now things work fine under xterm and in Emacs' term buffers
5368 (though not shell ones). Well, in emacs you get colors, but all
5371 (though not shell ones). Well, in emacs you get colors, but all
5369 seem to be 'light' colors (no difference between dark and light
5372 seem to be 'light' colors (no difference between dark and light
5370 ones). But the garbage chars are gone, and also in xterms. It
5373 ones). But the garbage chars are gone, and also in xterms. It
5371 seems that now I'm using 'cleaner' ansi sequences.
5374 seems that now I'm using 'cleaner' ansi sequences.
5372
5375
5373 2002-02-21 Fernando Perez <fperez@colorado.edu>
5376 2002-02-21 Fernando Perez <fperez@colorado.edu>
5374
5377
5375 * Released 0.2.7 (mainly to publish the scoping fix).
5378 * Released 0.2.7 (mainly to publish the scoping fix).
5376
5379
5377 * IPython/Logger.py (Logger.logstate): added. A corresponding
5380 * IPython/Logger.py (Logger.logstate): added. A corresponding
5378 @logstate magic was created.
5381 @logstate magic was created.
5379
5382
5380 * IPython/Magic.py: fixed nested scoping problem under Python
5383 * IPython/Magic.py: fixed nested scoping problem under Python
5381 2.1.x (automagic wasn't working).
5384 2.1.x (automagic wasn't working).
5382
5385
5383 2002-02-20 Fernando Perez <fperez@colorado.edu>
5386 2002-02-20 Fernando Perez <fperez@colorado.edu>
5384
5387
5385 * Released 0.2.6.
5388 * Released 0.2.6.
5386
5389
5387 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5390 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
5388 option so that logs can come out without any headers at all.
5391 option so that logs can come out without any headers at all.
5389
5392
5390 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5393 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
5391 SciPy.
5394 SciPy.
5392
5395
5393 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5396 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
5394 that embedded IPython calls don't require vars() to be explicitly
5397 that embedded IPython calls don't require vars() to be explicitly
5395 passed. Now they are extracted from the caller's frame (code
5398 passed. Now they are extracted from the caller's frame (code
5396 snatched from Eric Jones' weave). Added better documentation to
5399 snatched from Eric Jones' weave). Added better documentation to
5397 the section on embedding and the example file.
5400 the section on embedding and the example file.
5398
5401
5399 * IPython/genutils.py (page): Changed so that under emacs, it just
5402 * IPython/genutils.py (page): Changed so that under emacs, it just
5400 prints the string. You can then page up and down in the emacs
5403 prints the string. You can then page up and down in the emacs
5401 buffer itself. This is how the builtin help() works.
5404 buffer itself. This is how the builtin help() works.
5402
5405
5403 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5406 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
5404 macro scoping: macros need to be executed in the user's namespace
5407 macro scoping: macros need to be executed in the user's namespace
5405 to work as if they had been typed by the user.
5408 to work as if they had been typed by the user.
5406
5409
5407 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5410 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
5408 execute automatically (no need to type 'exec...'). They then
5411 execute automatically (no need to type 'exec...'). They then
5409 behave like 'true macros'. The printing system was also modified
5412 behave like 'true macros'. The printing system was also modified
5410 for this to work.
5413 for this to work.
5411
5414
5412 2002-02-19 Fernando Perez <fperez@colorado.edu>
5415 2002-02-19 Fernando Perez <fperez@colorado.edu>
5413
5416
5414 * IPython/genutils.py (page_file): new function for paging files
5417 * IPython/genutils.py (page_file): new function for paging files
5415 in an OS-independent way. Also necessary for file viewing to work
5418 in an OS-independent way. Also necessary for file viewing to work
5416 well inside Emacs buffers.
5419 well inside Emacs buffers.
5417 (page): Added checks for being in an emacs buffer.
5420 (page): Added checks for being in an emacs buffer.
5418 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5421 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
5419 same bug in iplib.
5422 same bug in iplib.
5420
5423
5421 2002-02-18 Fernando Perez <fperez@colorado.edu>
5424 2002-02-18 Fernando Perez <fperez@colorado.edu>
5422
5425
5423 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5426 * IPython/iplib.py (InteractiveShell.init_readline): modified use
5424 of readline so that IPython can work inside an Emacs buffer.
5427 of readline so that IPython can work inside an Emacs buffer.
5425
5428
5426 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5429 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
5427 method signatures (they weren't really bugs, but it looks cleaner
5430 method signatures (they weren't really bugs, but it looks cleaner
5428 and keeps PyChecker happy).
5431 and keeps PyChecker happy).
5429
5432
5430 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5433 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
5431 for implementing various user-defined hooks. Currently only
5434 for implementing various user-defined hooks. Currently only
5432 display is done.
5435 display is done.
5433
5436
5434 * IPython/Prompts.py (CachedOutput._display): changed display
5437 * IPython/Prompts.py (CachedOutput._display): changed display
5435 functions so that they can be dynamically changed by users easily.
5438 functions so that they can be dynamically changed by users easily.
5436
5439
5437 * IPython/Extensions/numeric_formats.py (num_display): added an
5440 * IPython/Extensions/numeric_formats.py (num_display): added an
5438 extension for printing NumPy arrays in flexible manners. It
5441 extension for printing NumPy arrays in flexible manners. It
5439 doesn't do anything yet, but all the structure is in
5442 doesn't do anything yet, but all the structure is in
5440 place. Ultimately the plan is to implement output format control
5443 place. Ultimately the plan is to implement output format control
5441 like in Octave.
5444 like in Octave.
5442
5445
5443 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5446 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
5444 methods are found at run-time by all the automatic machinery.
5447 methods are found at run-time by all the automatic machinery.
5445
5448
5446 2002-02-17 Fernando Perez <fperez@colorado.edu>
5449 2002-02-17 Fernando Perez <fperez@colorado.edu>
5447
5450
5448 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5451 * setup_Windows.py (make_shortcut): documented. Cleaned up the
5449 whole file a little.
5452 whole file a little.
5450
5453
5451 * ToDo: closed this document. Now there's a new_design.lyx
5454 * ToDo: closed this document. Now there's a new_design.lyx
5452 document for all new ideas. Added making a pdf of it for the
5455 document for all new ideas. Added making a pdf of it for the
5453 end-user distro.
5456 end-user distro.
5454
5457
5455 * IPython/Logger.py (Logger.switch_log): Created this to replace
5458 * IPython/Logger.py (Logger.switch_log): Created this to replace
5456 logon() and logoff(). It also fixes a nasty crash reported by
5459 logon() and logoff(). It also fixes a nasty crash reported by
5457 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5460 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
5458
5461
5459 * IPython/iplib.py (complete): got auto-completion to work with
5462 * IPython/iplib.py (complete): got auto-completion to work with
5460 automagic (I had wanted this for a long time).
5463 automagic (I had wanted this for a long time).
5461
5464
5462 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5465 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
5463 to @file, since file() is now a builtin and clashes with automagic
5466 to @file, since file() is now a builtin and clashes with automagic
5464 for @file.
5467 for @file.
5465
5468
5466 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5469 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
5467 of this was previously in iplib, which had grown to more than 2000
5470 of this was previously in iplib, which had grown to more than 2000
5468 lines, way too long. No new functionality, but it makes managing
5471 lines, way too long. No new functionality, but it makes managing
5469 the code a bit easier.
5472 the code a bit easier.
5470
5473
5471 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5474 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
5472 information to crash reports.
5475 information to crash reports.
5473
5476
5474 2002-02-12 Fernando Perez <fperez@colorado.edu>
5477 2002-02-12 Fernando Perez <fperez@colorado.edu>
5475
5478
5476 * Released 0.2.5.
5479 * Released 0.2.5.
5477
5480
5478 2002-02-11 Fernando Perez <fperez@colorado.edu>
5481 2002-02-11 Fernando Perez <fperez@colorado.edu>
5479
5482
5480 * Wrote a relatively complete Windows installer. It puts
5483 * Wrote a relatively complete Windows installer. It puts
5481 everything in place, creates Start Menu entries and fixes the
5484 everything in place, creates Start Menu entries and fixes the
5482 color issues. Nothing fancy, but it works.
5485 color issues. Nothing fancy, but it works.
5483
5486
5484 2002-02-10 Fernando Perez <fperez@colorado.edu>
5487 2002-02-10 Fernando Perez <fperez@colorado.edu>
5485
5488
5486 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5489 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
5487 os.path.expanduser() call so that we can type @run ~/myfile.py and
5490 os.path.expanduser() call so that we can type @run ~/myfile.py and
5488 have thigs work as expected.
5491 have thigs work as expected.
5489
5492
5490 * IPython/genutils.py (page): fixed exception handling so things
5493 * IPython/genutils.py (page): fixed exception handling so things
5491 work both in Unix and Windows correctly. Quitting a pager triggers
5494 work both in Unix and Windows correctly. Quitting a pager triggers
5492 an IOError/broken pipe in Unix, and in windows not finding a pager
5495 an IOError/broken pipe in Unix, and in windows not finding a pager
5493 is also an IOError, so I had to actually look at the return value
5496 is also an IOError, so I had to actually look at the return value
5494 of the exception, not just the exception itself. Should be ok now.
5497 of the exception, not just the exception itself. Should be ok now.
5495
5498
5496 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5499 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
5497 modified to allow case-insensitive color scheme changes.
5500 modified to allow case-insensitive color scheme changes.
5498
5501
5499 2002-02-09 Fernando Perez <fperez@colorado.edu>
5502 2002-02-09 Fernando Perez <fperez@colorado.edu>
5500
5503
5501 * IPython/genutils.py (native_line_ends): new function to leave
5504 * IPython/genutils.py (native_line_ends): new function to leave
5502 user config files with os-native line-endings.
5505 user config files with os-native line-endings.
5503
5506
5504 * README and manual updates.
5507 * README and manual updates.
5505
5508
5506 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5509 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
5507 instead of StringType to catch Unicode strings.
5510 instead of StringType to catch Unicode strings.
5508
5511
5509 * IPython/genutils.py (filefind): fixed bug for paths with
5512 * IPython/genutils.py (filefind): fixed bug for paths with
5510 embedded spaces (very common in Windows).
5513 embedded spaces (very common in Windows).
5511
5514
5512 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5515 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
5513 files under Windows, so that they get automatically associated
5516 files under Windows, so that they get automatically associated
5514 with a text editor. Windows makes it a pain to handle
5517 with a text editor. Windows makes it a pain to handle
5515 extension-less files.
5518 extension-less files.
5516
5519
5517 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5520 * IPython/iplib.py (InteractiveShell.init_readline): Made the
5518 warning about readline only occur for Posix. In Windows there's no
5521 warning about readline only occur for Posix. In Windows there's no
5519 way to get readline, so why bother with the warning.
5522 way to get readline, so why bother with the warning.
5520
5523
5521 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5524 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
5522 for __str__ instead of dir(self), since dir() changed in 2.2.
5525 for __str__ instead of dir(self), since dir() changed in 2.2.
5523
5526
5524 * Ported to Windows! Tested on XP, I suspect it should work fine
5527 * Ported to Windows! Tested on XP, I suspect it should work fine
5525 on NT/2000, but I don't think it will work on 98 et al. That
5528 on NT/2000, but I don't think it will work on 98 et al. That
5526 series of Windows is such a piece of junk anyway that I won't try
5529 series of Windows is such a piece of junk anyway that I won't try
5527 porting it there. The XP port was straightforward, showed a few
5530 porting it there. The XP port was straightforward, showed a few
5528 bugs here and there (fixed all), in particular some string
5531 bugs here and there (fixed all), in particular some string
5529 handling stuff which required considering Unicode strings (which
5532 handling stuff which required considering Unicode strings (which
5530 Windows uses). This is good, but hasn't been too tested :) No
5533 Windows uses). This is good, but hasn't been too tested :) No
5531 fancy installer yet, I'll put a note in the manual so people at
5534 fancy installer yet, I'll put a note in the manual so people at
5532 least make manually a shortcut.
5535 least make manually a shortcut.
5533
5536
5534 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5537 * IPython/iplib.py (Magic.magic_colors): Unified the color options
5535 into a single one, "colors". This now controls both prompt and
5538 into a single one, "colors". This now controls both prompt and
5536 exception color schemes, and can be changed both at startup
5539 exception color schemes, and can be changed both at startup
5537 (either via command-line switches or via ipythonrc files) and at
5540 (either via command-line switches or via ipythonrc files) and at
5538 runtime, with @colors.
5541 runtime, with @colors.
5539 (Magic.magic_run): renamed @prun to @run and removed the old
5542 (Magic.magic_run): renamed @prun to @run and removed the old
5540 @run. The two were too similar to warrant keeping both.
5543 @run. The two were too similar to warrant keeping both.
5541
5544
5542 2002-02-03 Fernando Perez <fperez@colorado.edu>
5545 2002-02-03 Fernando Perez <fperez@colorado.edu>
5543
5546
5544 * IPython/iplib.py (install_first_time): Added comment on how to
5547 * IPython/iplib.py (install_first_time): Added comment on how to
5545 configure the color options for first-time users. Put a <return>
5548 configure the color options for first-time users. Put a <return>
5546 request at the end so that small-terminal users get a chance to
5549 request at the end so that small-terminal users get a chance to
5547 read the startup info.
5550 read the startup info.
5548
5551
5549 2002-01-23 Fernando Perez <fperez@colorado.edu>
5552 2002-01-23 Fernando Perez <fperez@colorado.edu>
5550
5553
5551 * IPython/iplib.py (CachedOutput.update): Changed output memory
5554 * IPython/iplib.py (CachedOutput.update): Changed output memory
5552 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5555 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
5553 input history we still use _i. Did this b/c these variable are
5556 input history we still use _i. Did this b/c these variable are
5554 very commonly used in interactive work, so the less we need to
5557 very commonly used in interactive work, so the less we need to
5555 type the better off we are.
5558 type the better off we are.
5556 (Magic.magic_prun): updated @prun to better handle the namespaces
5559 (Magic.magic_prun): updated @prun to better handle the namespaces
5557 the file will run in, including a fix for __name__ not being set
5560 the file will run in, including a fix for __name__ not being set
5558 before.
5561 before.
5559
5562
5560 2002-01-20 Fernando Perez <fperez@colorado.edu>
5563 2002-01-20 Fernando Perez <fperez@colorado.edu>
5561
5564
5562 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5565 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
5563 extra garbage for Python 2.2. Need to look more carefully into
5566 extra garbage for Python 2.2. Need to look more carefully into
5564 this later.
5567 this later.
5565
5568
5566 2002-01-19 Fernando Perez <fperez@colorado.edu>
5569 2002-01-19 Fernando Perez <fperez@colorado.edu>
5567
5570
5568 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5571 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
5569 display SyntaxError exceptions properly formatted when they occur
5572 display SyntaxError exceptions properly formatted when they occur
5570 (they can be triggered by imported code).
5573 (they can be triggered by imported code).
5571
5574
5572 2002-01-18 Fernando Perez <fperez@colorado.edu>
5575 2002-01-18 Fernando Perez <fperez@colorado.edu>
5573
5576
5574 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5577 * IPython/iplib.py (InteractiveShell.safe_execfile): now
5575 SyntaxError exceptions are reported nicely formatted, instead of
5578 SyntaxError exceptions are reported nicely formatted, instead of
5576 spitting out only offset information as before.
5579 spitting out only offset information as before.
5577 (Magic.magic_prun): Added the @prun function for executing
5580 (Magic.magic_prun): Added the @prun function for executing
5578 programs with command line args inside IPython.
5581 programs with command line args inside IPython.
5579
5582
5580 2002-01-16 Fernando Perez <fperez@colorado.edu>
5583 2002-01-16 Fernando Perez <fperez@colorado.edu>
5581
5584
5582 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5585 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
5583 to *not* include the last item given in a range. This brings their
5586 to *not* include the last item given in a range. This brings their
5584 behavior in line with Python's slicing:
5587 behavior in line with Python's slicing:
5585 a[n1:n2] -> a[n1]...a[n2-1]
5588 a[n1:n2] -> a[n1]...a[n2-1]
5586 It may be a bit less convenient, but I prefer to stick to Python's
5589 It may be a bit less convenient, but I prefer to stick to Python's
5587 conventions *everywhere*, so users never have to wonder.
5590 conventions *everywhere*, so users never have to wonder.
5588 (Magic.magic_macro): Added @macro function to ease the creation of
5591 (Magic.magic_macro): Added @macro function to ease the creation of
5589 macros.
5592 macros.
5590
5593
5591 2002-01-05 Fernando Perez <fperez@colorado.edu>
5594 2002-01-05 Fernando Perez <fperez@colorado.edu>
5592
5595
5593 * Released 0.2.4.
5596 * Released 0.2.4.
5594
5597
5595 * IPython/iplib.py (Magic.magic_pdef):
5598 * IPython/iplib.py (Magic.magic_pdef):
5596 (InteractiveShell.safe_execfile): report magic lines and error
5599 (InteractiveShell.safe_execfile): report magic lines and error
5597 lines without line numbers so one can easily copy/paste them for
5600 lines without line numbers so one can easily copy/paste them for
5598 re-execution.
5601 re-execution.
5599
5602
5600 * Updated manual with recent changes.
5603 * Updated manual with recent changes.
5601
5604
5602 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5605 * IPython/iplib.py (Magic.magic_oinfo): added constructor
5603 docstring printing when class? is called. Very handy for knowing
5606 docstring printing when class? is called. Very handy for knowing
5604 how to create class instances (as long as __init__ is well
5607 how to create class instances (as long as __init__ is well
5605 documented, of course :)
5608 documented, of course :)
5606 (Magic.magic_doc): print both class and constructor docstrings.
5609 (Magic.magic_doc): print both class and constructor docstrings.
5607 (Magic.magic_pdef): give constructor info if passed a class and
5610 (Magic.magic_pdef): give constructor info if passed a class and
5608 __call__ info for callable object instances.
5611 __call__ info for callable object instances.
5609
5612
5610 2002-01-04 Fernando Perez <fperez@colorado.edu>
5613 2002-01-04 Fernando Perez <fperez@colorado.edu>
5611
5614
5612 * Made deep_reload() off by default. It doesn't always work
5615 * Made deep_reload() off by default. It doesn't always work
5613 exactly as intended, so it's probably safer to have it off. It's
5616 exactly as intended, so it's probably safer to have it off. It's
5614 still available as dreload() anyway, so nothing is lost.
5617 still available as dreload() anyway, so nothing is lost.
5615
5618
5616 2002-01-02 Fernando Perez <fperez@colorado.edu>
5619 2002-01-02 Fernando Perez <fperez@colorado.edu>
5617
5620
5618 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5621 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
5619 so I wanted an updated release).
5622 so I wanted an updated release).
5620
5623
5621 2001-12-27 Fernando Perez <fperez@colorado.edu>
5624 2001-12-27 Fernando Perez <fperez@colorado.edu>
5622
5625
5623 * IPython/iplib.py (InteractiveShell.interact): Added the original
5626 * IPython/iplib.py (InteractiveShell.interact): Added the original
5624 code from 'code.py' for this module in order to change the
5627 code from 'code.py' for this module in order to change the
5625 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5628 handling of a KeyboardInterrupt. This was necessary b/c otherwise
5626 the history cache would break when the user hit Ctrl-C, and
5629 the history cache would break when the user hit Ctrl-C, and
5627 interact() offers no way to add any hooks to it.
5630 interact() offers no way to add any hooks to it.
5628
5631
5629 2001-12-23 Fernando Perez <fperez@colorado.edu>
5632 2001-12-23 Fernando Perez <fperez@colorado.edu>
5630
5633
5631 * setup.py: added check for 'MANIFEST' before trying to remove
5634 * setup.py: added check for 'MANIFEST' before trying to remove
5632 it. Thanks to Sean Reifschneider.
5635 it. Thanks to Sean Reifschneider.
5633
5636
5634 2001-12-22 Fernando Perez <fperez@colorado.edu>
5637 2001-12-22 Fernando Perez <fperez@colorado.edu>
5635
5638
5636 * Released 0.2.2.
5639 * Released 0.2.2.
5637
5640
5638 * Finished (reasonably) writing the manual. Later will add the
5641 * Finished (reasonably) writing the manual. Later will add the
5639 python-standard navigation stylesheets, but for the time being
5642 python-standard navigation stylesheets, but for the time being
5640 it's fairly complete. Distribution will include html and pdf
5643 it's fairly complete. Distribution will include html and pdf
5641 versions.
5644 versions.
5642
5645
5643 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5646 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
5644 (MayaVi author).
5647 (MayaVi author).
5645
5648
5646 2001-12-21 Fernando Perez <fperez@colorado.edu>
5649 2001-12-21 Fernando Perez <fperez@colorado.edu>
5647
5650
5648 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5651 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
5649 good public release, I think (with the manual and the distutils
5652 good public release, I think (with the manual and the distutils
5650 installer). The manual can use some work, but that can go
5653 installer). The manual can use some work, but that can go
5651 slowly. Otherwise I think it's quite nice for end users. Next
5654 slowly. Otherwise I think it's quite nice for end users. Next
5652 summer, rewrite the guts of it...
5655 summer, rewrite the guts of it...
5653
5656
5654 * Changed format of ipythonrc files to use whitespace as the
5657 * Changed format of ipythonrc files to use whitespace as the
5655 separator instead of an explicit '='. Cleaner.
5658 separator instead of an explicit '='. Cleaner.
5656
5659
5657 2001-12-20 Fernando Perez <fperez@colorado.edu>
5660 2001-12-20 Fernando Perez <fperez@colorado.edu>
5658
5661
5659 * Started a manual in LyX. For now it's just a quick merge of the
5662 * Started a manual in LyX. For now it's just a quick merge of the
5660 various internal docstrings and READMEs. Later it may grow into a
5663 various internal docstrings and READMEs. Later it may grow into a
5661 nice, full-blown manual.
5664 nice, full-blown manual.
5662
5665
5663 * Set up a distutils based installer. Installation should now be
5666 * Set up a distutils based installer. Installation should now be
5664 trivially simple for end-users.
5667 trivially simple for end-users.
5665
5668
5666 2001-12-11 Fernando Perez <fperez@colorado.edu>
5669 2001-12-11 Fernando Perez <fperez@colorado.edu>
5667
5670
5668 * Released 0.2.0. First public release, announced it at
5671 * Released 0.2.0. First public release, announced it at
5669 comp.lang.python. From now on, just bugfixes...
5672 comp.lang.python. From now on, just bugfixes...
5670
5673
5671 * Went through all the files, set copyright/license notices and
5674 * Went through all the files, set copyright/license notices and
5672 cleaned up things. Ready for release.
5675 cleaned up things. Ready for release.
5673
5676
5674 2001-12-10 Fernando Perez <fperez@colorado.edu>
5677 2001-12-10 Fernando Perez <fperez@colorado.edu>
5675
5678
5676 * Changed the first-time installer not to use tarfiles. It's more
5679 * Changed the first-time installer not to use tarfiles. It's more
5677 robust now and less unix-dependent. Also makes it easier for
5680 robust now and less unix-dependent. Also makes it easier for
5678 people to later upgrade versions.
5681 people to later upgrade versions.
5679
5682
5680 * Changed @exit to @abort to reflect the fact that it's pretty
5683 * Changed @exit to @abort to reflect the fact that it's pretty
5681 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5684 brutal (a sys.exit()). The difference between @abort and Ctrl-D
5682 becomes significant only when IPyhton is embedded: in that case,
5685 becomes significant only when IPyhton is embedded: in that case,
5683 C-D closes IPython only, but @abort kills the enclosing program
5686 C-D closes IPython only, but @abort kills the enclosing program
5684 too (unless it had called IPython inside a try catching
5687 too (unless it had called IPython inside a try catching
5685 SystemExit).
5688 SystemExit).
5686
5689
5687 * Created Shell module which exposes the actuall IPython Shell
5690 * Created Shell module which exposes the actuall IPython Shell
5688 classes, currently the normal and the embeddable one. This at
5691 classes, currently the normal and the embeddable one. This at
5689 least offers a stable interface we won't need to change when
5692 least offers a stable interface we won't need to change when
5690 (later) the internals are rewritten. That rewrite will be confined
5693 (later) the internals are rewritten. That rewrite will be confined
5691 to iplib and ipmaker, but the Shell interface should remain as is.
5694 to iplib and ipmaker, but the Shell interface should remain as is.
5692
5695
5693 * Added embed module which offers an embeddable IPShell object,
5696 * Added embed module which offers an embeddable IPShell object,
5694 useful to fire up IPython *inside* a running program. Great for
5697 useful to fire up IPython *inside* a running program. Great for
5695 debugging or dynamical data analysis.
5698 debugging or dynamical data analysis.
5696
5699
5697 2001-12-08 Fernando Perez <fperez@colorado.edu>
5700 2001-12-08 Fernando Perez <fperez@colorado.edu>
5698
5701
5699 * Fixed small bug preventing seeing info from methods of defined
5702 * Fixed small bug preventing seeing info from methods of defined
5700 objects (incorrect namespace in _ofind()).
5703 objects (incorrect namespace in _ofind()).
5701
5704
5702 * Documentation cleanup. Moved the main usage docstrings to a
5705 * Documentation cleanup. Moved the main usage docstrings to a
5703 separate file, usage.py (cleaner to maintain, and hopefully in the
5706 separate file, usage.py (cleaner to maintain, and hopefully in the
5704 future some perlpod-like way of producing interactive, man and
5707 future some perlpod-like way of producing interactive, man and
5705 html docs out of it will be found).
5708 html docs out of it will be found).
5706
5709
5707 * Added @profile to see your profile at any time.
5710 * Added @profile to see your profile at any time.
5708
5711
5709 * Added @p as an alias for 'print'. It's especially convenient if
5712 * Added @p as an alias for 'print'. It's especially convenient if
5710 using automagic ('p x' prints x).
5713 using automagic ('p x' prints x).
5711
5714
5712 * Small cleanups and fixes after a pychecker run.
5715 * Small cleanups and fixes after a pychecker run.
5713
5716
5714 * Changed the @cd command to handle @cd - and @cd -<n> for
5717 * Changed the @cd command to handle @cd - and @cd -<n> for
5715 visiting any directory in _dh.
5718 visiting any directory in _dh.
5716
5719
5717 * Introduced _dh, a history of visited directories. @dhist prints
5720 * Introduced _dh, a history of visited directories. @dhist prints
5718 it out with numbers.
5721 it out with numbers.
5719
5722
5720 2001-12-07 Fernando Perez <fperez@colorado.edu>
5723 2001-12-07 Fernando Perez <fperez@colorado.edu>
5721
5724
5722 * Released 0.1.22
5725 * Released 0.1.22
5723
5726
5724 * Made initialization a bit more robust against invalid color
5727 * Made initialization a bit more robust against invalid color
5725 options in user input (exit, not traceback-crash).
5728 options in user input (exit, not traceback-crash).
5726
5729
5727 * Changed the bug crash reporter to write the report only in the
5730 * Changed the bug crash reporter to write the report only in the
5728 user's .ipython directory. That way IPython won't litter people's
5731 user's .ipython directory. That way IPython won't litter people's
5729 hard disks with crash files all over the place. Also print on
5732 hard disks with crash files all over the place. Also print on
5730 screen the necessary mail command.
5733 screen the necessary mail command.
5731
5734
5732 * With the new ultraTB, implemented LightBG color scheme for light
5735 * With the new ultraTB, implemented LightBG color scheme for light
5733 background terminals. A lot of people like white backgrounds, so I
5736 background terminals. A lot of people like white backgrounds, so I
5734 guess we should at least give them something readable.
5737 guess we should at least give them something readable.
5735
5738
5736 2001-12-06 Fernando Perez <fperez@colorado.edu>
5739 2001-12-06 Fernando Perez <fperez@colorado.edu>
5737
5740
5738 * Modified the structure of ultraTB. Now there's a proper class
5741 * Modified the structure of ultraTB. Now there's a proper class
5739 for tables of color schemes which allow adding schemes easily and
5742 for tables of color schemes which allow adding schemes easily and
5740 switching the active scheme without creating a new instance every
5743 switching the active scheme without creating a new instance every
5741 time (which was ridiculous). The syntax for creating new schemes
5744 time (which was ridiculous). The syntax for creating new schemes
5742 is also cleaner. I think ultraTB is finally done, with a clean
5745 is also cleaner. I think ultraTB is finally done, with a clean
5743 class structure. Names are also much cleaner (now there's proper
5746 class structure. Names are also much cleaner (now there's proper
5744 color tables, no need for every variable to also have 'color' in
5747 color tables, no need for every variable to also have 'color' in
5745 its name).
5748 its name).
5746
5749
5747 * Broke down genutils into separate files. Now genutils only
5750 * Broke down genutils into separate files. Now genutils only
5748 contains utility functions, and classes have been moved to their
5751 contains utility functions, and classes have been moved to their
5749 own files (they had enough independent functionality to warrant
5752 own files (they had enough independent functionality to warrant
5750 it): ConfigLoader, OutputTrap, Struct.
5753 it): ConfigLoader, OutputTrap, Struct.
5751
5754
5752 2001-12-05 Fernando Perez <fperez@colorado.edu>
5755 2001-12-05 Fernando Perez <fperez@colorado.edu>
5753
5756
5754 * IPython turns 21! Released version 0.1.21, as a candidate for
5757 * IPython turns 21! Released version 0.1.21, as a candidate for
5755 public consumption. If all goes well, release in a few days.
5758 public consumption. If all goes well, release in a few days.
5756
5759
5757 * Fixed path bug (files in Extensions/ directory wouldn't be found
5760 * Fixed path bug (files in Extensions/ directory wouldn't be found
5758 unless IPython/ was explicitly in sys.path).
5761 unless IPython/ was explicitly in sys.path).
5759
5762
5760 * Extended the FlexCompleter class as MagicCompleter to allow
5763 * Extended the FlexCompleter class as MagicCompleter to allow
5761 completion of @-starting lines.
5764 completion of @-starting lines.
5762
5765
5763 * Created __release__.py file as a central repository for release
5766 * Created __release__.py file as a central repository for release
5764 info that other files can read from.
5767 info that other files can read from.
5765
5768
5766 * Fixed small bug in logging: when logging was turned on in
5769 * Fixed small bug in logging: when logging was turned on in
5767 mid-session, old lines with special meanings (!@?) were being
5770 mid-session, old lines with special meanings (!@?) were being
5768 logged without the prepended comment, which is necessary since
5771 logged without the prepended comment, which is necessary since
5769 they are not truly valid python syntax. This should make session
5772 they are not truly valid python syntax. This should make session
5770 restores produce less errors.
5773 restores produce less errors.
5771
5774
5772 * The namespace cleanup forced me to make a FlexCompleter class
5775 * The namespace cleanup forced me to make a FlexCompleter class
5773 which is nothing but a ripoff of rlcompleter, but with selectable
5776 which is nothing but a ripoff of rlcompleter, but with selectable
5774 namespace (rlcompleter only works in __main__.__dict__). I'll try
5777 namespace (rlcompleter only works in __main__.__dict__). I'll try
5775 to submit a note to the authors to see if this change can be
5778 to submit a note to the authors to see if this change can be
5776 incorporated in future rlcompleter releases (Dec.6: done)
5779 incorporated in future rlcompleter releases (Dec.6: done)
5777
5780
5778 * More fixes to namespace handling. It was a mess! Now all
5781 * More fixes to namespace handling. It was a mess! Now all
5779 explicit references to __main__.__dict__ are gone (except when
5782 explicit references to __main__.__dict__ are gone (except when
5780 really needed) and everything is handled through the namespace
5783 really needed) and everything is handled through the namespace
5781 dicts in the IPython instance. We seem to be getting somewhere
5784 dicts in the IPython instance. We seem to be getting somewhere
5782 with this, finally...
5785 with this, finally...
5783
5786
5784 * Small documentation updates.
5787 * Small documentation updates.
5785
5788
5786 * Created the Extensions directory under IPython (with an
5789 * Created the Extensions directory under IPython (with an
5787 __init__.py). Put the PhysicalQ stuff there. This directory should
5790 __init__.py). Put the PhysicalQ stuff there. This directory should
5788 be used for all special-purpose extensions.
5791 be used for all special-purpose extensions.
5789
5792
5790 * File renaming:
5793 * File renaming:
5791 ipythonlib --> ipmaker
5794 ipythonlib --> ipmaker
5792 ipplib --> iplib
5795 ipplib --> iplib
5793 This makes a bit more sense in terms of what these files actually do.
5796 This makes a bit more sense in terms of what these files actually do.
5794
5797
5795 * Moved all the classes and functions in ipythonlib to ipplib, so
5798 * Moved all the classes and functions in ipythonlib to ipplib, so
5796 now ipythonlib only has make_IPython(). This will ease up its
5799 now ipythonlib only has make_IPython(). This will ease up its
5797 splitting in smaller functional chunks later.
5800 splitting in smaller functional chunks later.
5798
5801
5799 * Cleaned up (done, I think) output of @whos. Better column
5802 * Cleaned up (done, I think) output of @whos. Better column
5800 formatting, and now shows str(var) for as much as it can, which is
5803 formatting, and now shows str(var) for as much as it can, which is
5801 typically what one gets with a 'print var'.
5804 typically what one gets with a 'print var'.
5802
5805
5803 2001-12-04 Fernando Perez <fperez@colorado.edu>
5806 2001-12-04 Fernando Perez <fperez@colorado.edu>
5804
5807
5805 * Fixed namespace problems. Now builtin/IPyhton/user names get
5808 * Fixed namespace problems. Now builtin/IPyhton/user names get
5806 properly reported in their namespace. Internal namespace handling
5809 properly reported in their namespace. Internal namespace handling
5807 is finally getting decent (not perfect yet, but much better than
5810 is finally getting decent (not perfect yet, but much better than
5808 the ad-hoc mess we had).
5811 the ad-hoc mess we had).
5809
5812
5810 * Removed -exit option. If people just want to run a python
5813 * Removed -exit option. If people just want to run a python
5811 script, that's what the normal interpreter is for. Less
5814 script, that's what the normal interpreter is for. Less
5812 unnecessary options, less chances for bugs.
5815 unnecessary options, less chances for bugs.
5813
5816
5814 * Added a crash handler which generates a complete post-mortem if
5817 * Added a crash handler which generates a complete post-mortem if
5815 IPython crashes. This will help a lot in tracking bugs down the
5818 IPython crashes. This will help a lot in tracking bugs down the
5816 road.
5819 road.
5817
5820
5818 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5821 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5819 which were boud to functions being reassigned would bypass the
5822 which were boud to functions being reassigned would bypass the
5820 logger, breaking the sync of _il with the prompt counter. This
5823 logger, breaking the sync of _il with the prompt counter. This
5821 would then crash IPython later when a new line was logged.
5824 would then crash IPython later when a new line was logged.
5822
5825
5823 2001-12-02 Fernando Perez <fperez@colorado.edu>
5826 2001-12-02 Fernando Perez <fperez@colorado.edu>
5824
5827
5825 * Made IPython a package. This means people don't have to clutter
5828 * Made IPython a package. This means people don't have to clutter
5826 their sys.path with yet another directory. Changed the INSTALL
5829 their sys.path with yet another directory. Changed the INSTALL
5827 file accordingly.
5830 file accordingly.
5828
5831
5829 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5832 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5830 sorts its output (so @who shows it sorted) and @whos formats the
5833 sorts its output (so @who shows it sorted) and @whos formats the
5831 table according to the width of the first column. Nicer, easier to
5834 table according to the width of the first column. Nicer, easier to
5832 read. Todo: write a generic table_format() which takes a list of
5835 read. Todo: write a generic table_format() which takes a list of
5833 lists and prints it nicely formatted, with optional row/column
5836 lists and prints it nicely formatted, with optional row/column
5834 separators and proper padding and justification.
5837 separators and proper padding and justification.
5835
5838
5836 * Released 0.1.20
5839 * Released 0.1.20
5837
5840
5838 * Fixed bug in @log which would reverse the inputcache list (a
5841 * Fixed bug in @log which would reverse the inputcache list (a
5839 copy operation was missing).
5842 copy operation was missing).
5840
5843
5841 * Code cleanup. @config was changed to use page(). Better, since
5844 * Code cleanup. @config was changed to use page(). Better, since
5842 its output is always quite long.
5845 its output is always quite long.
5843
5846
5844 * Itpl is back as a dependency. I was having too many problems
5847 * Itpl is back as a dependency. I was having too many problems
5845 getting the parametric aliases to work reliably, and it's just
5848 getting the parametric aliases to work reliably, and it's just
5846 easier to code weird string operations with it than playing %()s
5849 easier to code weird string operations with it than playing %()s
5847 games. It's only ~6k, so I don't think it's too big a deal.
5850 games. It's only ~6k, so I don't think it's too big a deal.
5848
5851
5849 * Found (and fixed) a very nasty bug with history. !lines weren't
5852 * Found (and fixed) a very nasty bug with history. !lines weren't
5850 getting cached, and the out of sync caches would crash
5853 getting cached, and the out of sync caches would crash
5851 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5854 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5852 division of labor a bit better. Bug fixed, cleaner structure.
5855 division of labor a bit better. Bug fixed, cleaner structure.
5853
5856
5854 2001-12-01 Fernando Perez <fperez@colorado.edu>
5857 2001-12-01 Fernando Perez <fperez@colorado.edu>
5855
5858
5856 * Released 0.1.19
5859 * Released 0.1.19
5857
5860
5858 * Added option -n to @hist to prevent line number printing. Much
5861 * Added option -n to @hist to prevent line number printing. Much
5859 easier to copy/paste code this way.
5862 easier to copy/paste code this way.
5860
5863
5861 * Created global _il to hold the input list. Allows easy
5864 * Created global _il to hold the input list. Allows easy
5862 re-execution of blocks of code by slicing it (inspired by Janko's
5865 re-execution of blocks of code by slicing it (inspired by Janko's
5863 comment on 'macros').
5866 comment on 'macros').
5864
5867
5865 * Small fixes and doc updates.
5868 * Small fixes and doc updates.
5866
5869
5867 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5870 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5868 much too fragile with automagic. Handles properly multi-line
5871 much too fragile with automagic. Handles properly multi-line
5869 statements and takes parameters.
5872 statements and takes parameters.
5870
5873
5871 2001-11-30 Fernando Perez <fperez@colorado.edu>
5874 2001-11-30 Fernando Perez <fperez@colorado.edu>
5872
5875
5873 * Version 0.1.18 released.
5876 * Version 0.1.18 released.
5874
5877
5875 * Fixed nasty namespace bug in initial module imports.
5878 * Fixed nasty namespace bug in initial module imports.
5876
5879
5877 * Added copyright/license notes to all code files (except
5880 * Added copyright/license notes to all code files (except
5878 DPyGetOpt). For the time being, LGPL. That could change.
5881 DPyGetOpt). For the time being, LGPL. That could change.
5879
5882
5880 * Rewrote a much nicer README, updated INSTALL, cleaned up
5883 * Rewrote a much nicer README, updated INSTALL, cleaned up
5881 ipythonrc-* samples.
5884 ipythonrc-* samples.
5882
5885
5883 * Overall code/documentation cleanup. Basically ready for
5886 * Overall code/documentation cleanup. Basically ready for
5884 release. Only remaining thing: licence decision (LGPL?).
5887 release. Only remaining thing: licence decision (LGPL?).
5885
5888
5886 * Converted load_config to a class, ConfigLoader. Now recursion
5889 * Converted load_config to a class, ConfigLoader. Now recursion
5887 control is better organized. Doesn't include the same file twice.
5890 control is better organized. Doesn't include the same file twice.
5888
5891
5889 2001-11-29 Fernando Perez <fperez@colorado.edu>
5892 2001-11-29 Fernando Perez <fperez@colorado.edu>
5890
5893
5891 * Got input history working. Changed output history variables from
5894 * Got input history working. Changed output history variables from
5892 _p to _o so that _i is for input and _o for output. Just cleaner
5895 _p to _o so that _i is for input and _o for output. Just cleaner
5893 convention.
5896 convention.
5894
5897
5895 * Implemented parametric aliases. This pretty much allows the
5898 * Implemented parametric aliases. This pretty much allows the
5896 alias system to offer full-blown shell convenience, I think.
5899 alias system to offer full-blown shell convenience, I think.
5897
5900
5898 * Version 0.1.17 released, 0.1.18 opened.
5901 * Version 0.1.17 released, 0.1.18 opened.
5899
5902
5900 * dot_ipython/ipythonrc (alias): added documentation.
5903 * dot_ipython/ipythonrc (alias): added documentation.
5901 (xcolor): Fixed small bug (xcolors -> xcolor)
5904 (xcolor): Fixed small bug (xcolors -> xcolor)
5902
5905
5903 * Changed the alias system. Now alias is a magic command to define
5906 * Changed the alias system. Now alias is a magic command to define
5904 aliases just like the shell. Rationale: the builtin magics should
5907 aliases just like the shell. Rationale: the builtin magics should
5905 be there for things deeply connected to IPython's
5908 be there for things deeply connected to IPython's
5906 architecture. And this is a much lighter system for what I think
5909 architecture. And this is a much lighter system for what I think
5907 is the really important feature: allowing users to define quickly
5910 is the really important feature: allowing users to define quickly
5908 magics that will do shell things for them, so they can customize
5911 magics that will do shell things for them, so they can customize
5909 IPython easily to match their work habits. If someone is really
5912 IPython easily to match their work habits. If someone is really
5910 desperate to have another name for a builtin alias, they can
5913 desperate to have another name for a builtin alias, they can
5911 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5914 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5912 works.
5915 works.
5913
5916
5914 2001-11-28 Fernando Perez <fperez@colorado.edu>
5917 2001-11-28 Fernando Perez <fperez@colorado.edu>
5915
5918
5916 * Changed @file so that it opens the source file at the proper
5919 * Changed @file so that it opens the source file at the proper
5917 line. Since it uses less, if your EDITOR environment is
5920 line. Since it uses less, if your EDITOR environment is
5918 configured, typing v will immediately open your editor of choice
5921 configured, typing v will immediately open your editor of choice
5919 right at the line where the object is defined. Not as quick as
5922 right at the line where the object is defined. Not as quick as
5920 having a direct @edit command, but for all intents and purposes it
5923 having a direct @edit command, but for all intents and purposes it
5921 works. And I don't have to worry about writing @edit to deal with
5924 works. And I don't have to worry about writing @edit to deal with
5922 all the editors, less does that.
5925 all the editors, less does that.
5923
5926
5924 * Version 0.1.16 released, 0.1.17 opened.
5927 * Version 0.1.16 released, 0.1.17 opened.
5925
5928
5926 * Fixed some nasty bugs in the page/page_dumb combo that could
5929 * Fixed some nasty bugs in the page/page_dumb combo that could
5927 crash IPython.
5930 crash IPython.
5928
5931
5929 2001-11-27 Fernando Perez <fperez@colorado.edu>
5932 2001-11-27 Fernando Perez <fperez@colorado.edu>
5930
5933
5931 * Version 0.1.15 released, 0.1.16 opened.
5934 * Version 0.1.15 released, 0.1.16 opened.
5932
5935
5933 * Finally got ? and ?? to work for undefined things: now it's
5936 * Finally got ? and ?? to work for undefined things: now it's
5934 possible to type {}.get? and get information about the get method
5937 possible to type {}.get? and get information about the get method
5935 of dicts, or os.path? even if only os is defined (so technically
5938 of dicts, or os.path? even if only os is defined (so technically
5936 os.path isn't). Works at any level. For example, after import os,
5939 os.path isn't). Works at any level. For example, after import os,
5937 os?, os.path?, os.path.abspath? all work. This is great, took some
5940 os?, os.path?, os.path.abspath? all work. This is great, took some
5938 work in _ofind.
5941 work in _ofind.
5939
5942
5940 * Fixed more bugs with logging. The sanest way to do it was to add
5943 * Fixed more bugs with logging. The sanest way to do it was to add
5941 to @log a 'mode' parameter. Killed two in one shot (this mode
5944 to @log a 'mode' parameter. Killed two in one shot (this mode
5942 option was a request of Janko's). I think it's finally clean
5945 option was a request of Janko's). I think it's finally clean
5943 (famous last words).
5946 (famous last words).
5944
5947
5945 * Added a page_dumb() pager which does a decent job of paging on
5948 * Added a page_dumb() pager which does a decent job of paging on
5946 screen, if better things (like less) aren't available. One less
5949 screen, if better things (like less) aren't available. One less
5947 unix dependency (someday maybe somebody will port this to
5950 unix dependency (someday maybe somebody will port this to
5948 windows).
5951 windows).
5949
5952
5950 * Fixed problem in magic_log: would lock of logging out if log
5953 * Fixed problem in magic_log: would lock of logging out if log
5951 creation failed (because it would still think it had succeeded).
5954 creation failed (because it would still think it had succeeded).
5952
5955
5953 * Improved the page() function using curses to auto-detect screen
5956 * Improved the page() function using curses to auto-detect screen
5954 size. Now it can make a much better decision on whether to print
5957 size. Now it can make a much better decision on whether to print
5955 or page a string. Option screen_length was modified: a value 0
5958 or page a string. Option screen_length was modified: a value 0
5956 means auto-detect, and that's the default now.
5959 means auto-detect, and that's the default now.
5957
5960
5958 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5961 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5959 go out. I'll test it for a few days, then talk to Janko about
5962 go out. I'll test it for a few days, then talk to Janko about
5960 licences and announce it.
5963 licences and announce it.
5961
5964
5962 * Fixed the length of the auto-generated ---> prompt which appears
5965 * Fixed the length of the auto-generated ---> prompt which appears
5963 for auto-parens and auto-quotes. Getting this right isn't trivial,
5966 for auto-parens and auto-quotes. Getting this right isn't trivial,
5964 with all the color escapes, different prompt types and optional
5967 with all the color escapes, different prompt types and optional
5965 separators. But it seems to be working in all the combinations.
5968 separators. But it seems to be working in all the combinations.
5966
5969
5967 2001-11-26 Fernando Perez <fperez@colorado.edu>
5970 2001-11-26 Fernando Perez <fperez@colorado.edu>
5968
5971
5969 * Wrote a regexp filter to get option types from the option names
5972 * Wrote a regexp filter to get option types from the option names
5970 string. This eliminates the need to manually keep two duplicate
5973 string. This eliminates the need to manually keep two duplicate
5971 lists.
5974 lists.
5972
5975
5973 * Removed the unneeded check_option_names. Now options are handled
5976 * Removed the unneeded check_option_names. Now options are handled
5974 in a much saner manner and it's easy to visually check that things
5977 in a much saner manner and it's easy to visually check that things
5975 are ok.
5978 are ok.
5976
5979
5977 * Updated version numbers on all files I modified to carry a
5980 * Updated version numbers on all files I modified to carry a
5978 notice so Janko and Nathan have clear version markers.
5981 notice so Janko and Nathan have clear version markers.
5979
5982
5980 * Updated docstring for ultraTB with my changes. I should send
5983 * Updated docstring for ultraTB with my changes. I should send
5981 this to Nathan.
5984 this to Nathan.
5982
5985
5983 * Lots of small fixes. Ran everything through pychecker again.
5986 * Lots of small fixes. Ran everything through pychecker again.
5984
5987
5985 * Made loading of deep_reload an cmd line option. If it's not too
5988 * Made loading of deep_reload an cmd line option. If it's not too
5986 kosher, now people can just disable it. With -nodeep_reload it's
5989 kosher, now people can just disable it. With -nodeep_reload it's
5987 still available as dreload(), it just won't overwrite reload().
5990 still available as dreload(), it just won't overwrite reload().
5988
5991
5989 * Moved many options to the no| form (-opt and -noopt
5992 * Moved many options to the no| form (-opt and -noopt
5990 accepted). Cleaner.
5993 accepted). Cleaner.
5991
5994
5992 * Changed magic_log so that if called with no parameters, it uses
5995 * Changed magic_log so that if called with no parameters, it uses
5993 'rotate' mode. That way auto-generated logs aren't automatically
5996 'rotate' mode. That way auto-generated logs aren't automatically
5994 over-written. For normal logs, now a backup is made if it exists
5997 over-written. For normal logs, now a backup is made if it exists
5995 (only 1 level of backups). A new 'backup' mode was added to the
5998 (only 1 level of backups). A new 'backup' mode was added to the
5996 Logger class to support this. This was a request by Janko.
5999 Logger class to support this. This was a request by Janko.
5997
6000
5998 * Added @logoff/@logon to stop/restart an active log.
6001 * Added @logoff/@logon to stop/restart an active log.
5999
6002
6000 * Fixed a lot of bugs in log saving/replay. It was pretty
6003 * Fixed a lot of bugs in log saving/replay. It was pretty
6001 broken. Now special lines (!@,/) appear properly in the command
6004 broken. Now special lines (!@,/) appear properly in the command
6002 history after a log replay.
6005 history after a log replay.
6003
6006
6004 * Tried and failed to implement full session saving via pickle. My
6007 * Tried and failed to implement full session saving via pickle. My
6005 idea was to pickle __main__.__dict__, but modules can't be
6008 idea was to pickle __main__.__dict__, but modules can't be
6006 pickled. This would be a better alternative to replaying logs, but
6009 pickled. This would be a better alternative to replaying logs, but
6007 seems quite tricky to get to work. Changed -session to be called
6010 seems quite tricky to get to work. Changed -session to be called
6008 -logplay, which more accurately reflects what it does. And if we
6011 -logplay, which more accurately reflects what it does. And if we
6009 ever get real session saving working, -session is now available.
6012 ever get real session saving working, -session is now available.
6010
6013
6011 * Implemented color schemes for prompts also. As for tracebacks,
6014 * Implemented color schemes for prompts also. As for tracebacks,
6012 currently only NoColor and Linux are supported. But now the
6015 currently only NoColor and Linux are supported. But now the
6013 infrastructure is in place, based on a generic ColorScheme
6016 infrastructure is in place, based on a generic ColorScheme
6014 class. So writing and activating new schemes both for the prompts
6017 class. So writing and activating new schemes both for the prompts
6015 and the tracebacks should be straightforward.
6018 and the tracebacks should be straightforward.
6016
6019
6017 * Version 0.1.13 released, 0.1.14 opened.
6020 * Version 0.1.13 released, 0.1.14 opened.
6018
6021
6019 * Changed handling of options for output cache. Now counter is
6022 * Changed handling of options for output cache. Now counter is
6020 hardwired starting at 1 and one specifies the maximum number of
6023 hardwired starting at 1 and one specifies the maximum number of
6021 entries *in the outcache* (not the max prompt counter). This is
6024 entries *in the outcache* (not the max prompt counter). This is
6022 much better, since many statements won't increase the cache
6025 much better, since many statements won't increase the cache
6023 count. It also eliminated some confusing options, now there's only
6026 count. It also eliminated some confusing options, now there's only
6024 one: cache_size.
6027 one: cache_size.
6025
6028
6026 * Added 'alias' magic function and magic_alias option in the
6029 * Added 'alias' magic function and magic_alias option in the
6027 ipythonrc file. Now the user can easily define whatever names he
6030 ipythonrc file. Now the user can easily define whatever names he
6028 wants for the magic functions without having to play weird
6031 wants for the magic functions without having to play weird
6029 namespace games. This gives IPython a real shell-like feel.
6032 namespace games. This gives IPython a real shell-like feel.
6030
6033
6031 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6034 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6032 @ or not).
6035 @ or not).
6033
6036
6034 This was one of the last remaining 'visible' bugs (that I know
6037 This was one of the last remaining 'visible' bugs (that I know
6035 of). I think if I can clean up the session loading so it works
6038 of). I think if I can clean up the session loading so it works
6036 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6039 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6037 about licensing).
6040 about licensing).
6038
6041
6039 2001-11-25 Fernando Perez <fperez@colorado.edu>
6042 2001-11-25 Fernando Perez <fperez@colorado.edu>
6040
6043
6041 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6044 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6042 there's a cleaner distinction between what ? and ?? show.
6045 there's a cleaner distinction between what ? and ?? show.
6043
6046
6044 * Added screen_length option. Now the user can define his own
6047 * Added screen_length option. Now the user can define his own
6045 screen size for page() operations.
6048 screen size for page() operations.
6046
6049
6047 * Implemented magic shell-like functions with automatic code
6050 * Implemented magic shell-like functions with automatic code
6048 generation. Now adding another function is just a matter of adding
6051 generation. Now adding another function is just a matter of adding
6049 an entry to a dict, and the function is dynamically generated at
6052 an entry to a dict, and the function is dynamically generated at
6050 run-time. Python has some really cool features!
6053 run-time. Python has some really cool features!
6051
6054
6052 * Renamed many options to cleanup conventions a little. Now all
6055 * Renamed many options to cleanup conventions a little. Now all
6053 are lowercase, and only underscores where needed. Also in the code
6056 are lowercase, and only underscores where needed. Also in the code
6054 option name tables are clearer.
6057 option name tables are clearer.
6055
6058
6056 * Changed prompts a little. Now input is 'In [n]:' instead of
6059 * Changed prompts a little. Now input is 'In [n]:' instead of
6057 'In[n]:='. This allows it the numbers to be aligned with the
6060 'In[n]:='. This allows it the numbers to be aligned with the
6058 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6061 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6059 Python (it was a Mathematica thing). The '...' continuation prompt
6062 Python (it was a Mathematica thing). The '...' continuation prompt
6060 was also changed a little to align better.
6063 was also changed a little to align better.
6061
6064
6062 * Fixed bug when flushing output cache. Not all _p<n> variables
6065 * Fixed bug when flushing output cache. Not all _p<n> variables
6063 exist, so their deletion needs to be wrapped in a try:
6066 exist, so their deletion needs to be wrapped in a try:
6064
6067
6065 * Figured out how to properly use inspect.formatargspec() (it
6068 * Figured out how to properly use inspect.formatargspec() (it
6066 requires the args preceded by *). So I removed all the code from
6069 requires the args preceded by *). So I removed all the code from
6067 _get_pdef in Magic, which was just replicating that.
6070 _get_pdef in Magic, which was just replicating that.
6068
6071
6069 * Added test to prefilter to allow redefining magic function names
6072 * Added test to prefilter to allow redefining magic function names
6070 as variables. This is ok, since the @ form is always available,
6073 as variables. This is ok, since the @ form is always available,
6071 but whe should allow the user to define a variable called 'ls' if
6074 but whe should allow the user to define a variable called 'ls' if
6072 he needs it.
6075 he needs it.
6073
6076
6074 * Moved the ToDo information from README into a separate ToDo.
6077 * Moved the ToDo information from README into a separate ToDo.
6075
6078
6076 * General code cleanup and small bugfixes. I think it's close to a
6079 * General code cleanup and small bugfixes. I think it's close to a
6077 state where it can be released, obviously with a big 'beta'
6080 state where it can be released, obviously with a big 'beta'
6078 warning on it.
6081 warning on it.
6079
6082
6080 * Got the magic function split to work. Now all magics are defined
6083 * Got the magic function split to work. Now all magics are defined
6081 in a separate class. It just organizes things a bit, and now
6084 in a separate class. It just organizes things a bit, and now
6082 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6085 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6083 was too long).
6086 was too long).
6084
6087
6085 * Changed @clear to @reset to avoid potential confusions with
6088 * Changed @clear to @reset to avoid potential confusions with
6086 the shell command clear. Also renamed @cl to @clear, which does
6089 the shell command clear. Also renamed @cl to @clear, which does
6087 exactly what people expect it to from their shell experience.
6090 exactly what people expect it to from their shell experience.
6088
6091
6089 Added a check to the @reset command (since it's so
6092 Added a check to the @reset command (since it's so
6090 destructive, it's probably a good idea to ask for confirmation).
6093 destructive, it's probably a good idea to ask for confirmation).
6091 But now reset only works for full namespace resetting. Since the
6094 But now reset only works for full namespace resetting. Since the
6092 del keyword is already there for deleting a few specific
6095 del keyword is already there for deleting a few specific
6093 variables, I don't see the point of having a redundant magic
6096 variables, I don't see the point of having a redundant magic
6094 function for the same task.
6097 function for the same task.
6095
6098
6096 2001-11-24 Fernando Perez <fperez@colorado.edu>
6099 2001-11-24 Fernando Perez <fperez@colorado.edu>
6097
6100
6098 * Updated the builtin docs (esp. the ? ones).
6101 * Updated the builtin docs (esp. the ? ones).
6099
6102
6100 * Ran all the code through pychecker. Not terribly impressed with
6103 * Ran all the code through pychecker. Not terribly impressed with
6101 it: lots of spurious warnings and didn't really find anything of
6104 it: lots of spurious warnings and didn't really find anything of
6102 substance (just a few modules being imported and not used).
6105 substance (just a few modules being imported and not used).
6103
6106
6104 * Implemented the new ultraTB functionality into IPython. New
6107 * Implemented the new ultraTB functionality into IPython. New
6105 option: xcolors. This chooses color scheme. xmode now only selects
6108 option: xcolors. This chooses color scheme. xmode now only selects
6106 between Plain and Verbose. Better orthogonality.
6109 between Plain and Verbose. Better orthogonality.
6107
6110
6108 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6111 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6109 mode and color scheme for the exception handlers. Now it's
6112 mode and color scheme for the exception handlers. Now it's
6110 possible to have the verbose traceback with no coloring.
6113 possible to have the verbose traceback with no coloring.
6111
6114
6112 2001-11-23 Fernando Perez <fperez@colorado.edu>
6115 2001-11-23 Fernando Perez <fperez@colorado.edu>
6113
6116
6114 * Version 0.1.12 released, 0.1.13 opened.
6117 * Version 0.1.12 released, 0.1.13 opened.
6115
6118
6116 * Removed option to set auto-quote and auto-paren escapes by
6119 * Removed option to set auto-quote and auto-paren escapes by
6117 user. The chances of breaking valid syntax are just too high. If
6120 user. The chances of breaking valid syntax are just too high. If
6118 someone *really* wants, they can always dig into the code.
6121 someone *really* wants, they can always dig into the code.
6119
6122
6120 * Made prompt separators configurable.
6123 * Made prompt separators configurable.
6121
6124
6122 2001-11-22 Fernando Perez <fperez@colorado.edu>
6125 2001-11-22 Fernando Perez <fperez@colorado.edu>
6123
6126
6124 * Small bugfixes in many places.
6127 * Small bugfixes in many places.
6125
6128
6126 * Removed the MyCompleter class from ipplib. It seemed redundant
6129 * Removed the MyCompleter class from ipplib. It seemed redundant
6127 with the C-p,C-n history search functionality. Less code to
6130 with the C-p,C-n history search functionality. Less code to
6128 maintain.
6131 maintain.
6129
6132
6130 * Moved all the original ipython.py code into ipythonlib.py. Right
6133 * Moved all the original ipython.py code into ipythonlib.py. Right
6131 now it's just one big dump into a function called make_IPython, so
6134 now it's just one big dump into a function called make_IPython, so
6132 no real modularity has been gained. But at least it makes the
6135 no real modularity has been gained. But at least it makes the
6133 wrapper script tiny, and since ipythonlib is a module, it gets
6136 wrapper script tiny, and since ipythonlib is a module, it gets
6134 compiled and startup is much faster.
6137 compiled and startup is much faster.
6135
6138
6136 This is a reasobably 'deep' change, so we should test it for a
6139 This is a reasobably 'deep' change, so we should test it for a
6137 while without messing too much more with the code.
6140 while without messing too much more with the code.
6138
6141
6139 2001-11-21 Fernando Perez <fperez@colorado.edu>
6142 2001-11-21 Fernando Perez <fperez@colorado.edu>
6140
6143
6141 * Version 0.1.11 released, 0.1.12 opened for further work.
6144 * Version 0.1.11 released, 0.1.12 opened for further work.
6142
6145
6143 * Removed dependency on Itpl. It was only needed in one place. It
6146 * Removed dependency on Itpl. It was only needed in one place. It
6144 would be nice if this became part of python, though. It makes life
6147 would be nice if this became part of python, though. It makes life
6145 *a lot* easier in some cases.
6148 *a lot* easier in some cases.
6146
6149
6147 * Simplified the prefilter code a bit. Now all handlers are
6150 * Simplified the prefilter code a bit. Now all handlers are
6148 expected to explicitly return a value (at least a blank string).
6151 expected to explicitly return a value (at least a blank string).
6149
6152
6150 * Heavy edits in ipplib. Removed the help system altogether. Now
6153 * Heavy edits in ipplib. Removed the help system altogether. Now
6151 obj?/?? is used for inspecting objects, a magic @doc prints
6154 obj?/?? is used for inspecting objects, a magic @doc prints
6152 docstrings, and full-blown Python help is accessed via the 'help'
6155 docstrings, and full-blown Python help is accessed via the 'help'
6153 keyword. This cleans up a lot of code (less to maintain) and does
6156 keyword. This cleans up a lot of code (less to maintain) and does
6154 the job. Since 'help' is now a standard Python component, might as
6157 the job. Since 'help' is now a standard Python component, might as
6155 well use it and remove duplicate functionality.
6158 well use it and remove duplicate functionality.
6156
6159
6157 Also removed the option to use ipplib as a standalone program. By
6160 Also removed the option to use ipplib as a standalone program. By
6158 now it's too dependent on other parts of IPython to function alone.
6161 now it's too dependent on other parts of IPython to function alone.
6159
6162
6160 * Fixed bug in genutils.pager. It would crash if the pager was
6163 * Fixed bug in genutils.pager. It would crash if the pager was
6161 exited immediately after opening (broken pipe).
6164 exited immediately after opening (broken pipe).
6162
6165
6163 * Trimmed down the VerboseTB reporting a little. The header is
6166 * Trimmed down the VerboseTB reporting a little. The header is
6164 much shorter now and the repeated exception arguments at the end
6167 much shorter now and the repeated exception arguments at the end
6165 have been removed. For interactive use the old header seemed a bit
6168 have been removed. For interactive use the old header seemed a bit
6166 excessive.
6169 excessive.
6167
6170
6168 * Fixed small bug in output of @whos for variables with multi-word
6171 * Fixed small bug in output of @whos for variables with multi-word
6169 types (only first word was displayed).
6172 types (only first word was displayed).
6170
6173
6171 2001-11-17 Fernando Perez <fperez@colorado.edu>
6174 2001-11-17 Fernando Perez <fperez@colorado.edu>
6172
6175
6173 * Version 0.1.10 released, 0.1.11 opened for further work.
6176 * Version 0.1.10 released, 0.1.11 opened for further work.
6174
6177
6175 * Modified dirs and friends. dirs now *returns* the stack (not
6178 * Modified dirs and friends. dirs now *returns* the stack (not
6176 prints), so one can manipulate it as a variable. Convenient to
6179 prints), so one can manipulate it as a variable. Convenient to
6177 travel along many directories.
6180 travel along many directories.
6178
6181
6179 * Fixed bug in magic_pdef: would only work with functions with
6182 * Fixed bug in magic_pdef: would only work with functions with
6180 arguments with default values.
6183 arguments with default values.
6181
6184
6182 2001-11-14 Fernando Perez <fperez@colorado.edu>
6185 2001-11-14 Fernando Perez <fperez@colorado.edu>
6183
6186
6184 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6187 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6185 example with IPython. Various other minor fixes and cleanups.
6188 example with IPython. Various other minor fixes and cleanups.
6186
6189
6187 * Version 0.1.9 released, 0.1.10 opened for further work.
6190 * Version 0.1.9 released, 0.1.10 opened for further work.
6188
6191
6189 * Added sys.path to the list of directories searched in the
6192 * Added sys.path to the list of directories searched in the
6190 execfile= option. It used to be the current directory and the
6193 execfile= option. It used to be the current directory and the
6191 user's IPYTHONDIR only.
6194 user's IPYTHONDIR only.
6192
6195
6193 2001-11-13 Fernando Perez <fperez@colorado.edu>
6196 2001-11-13 Fernando Perez <fperez@colorado.edu>
6194
6197
6195 * Reinstated the raw_input/prefilter separation that Janko had
6198 * Reinstated the raw_input/prefilter separation that Janko had
6196 initially. This gives a more convenient setup for extending the
6199 initially. This gives a more convenient setup for extending the
6197 pre-processor from the outside: raw_input always gets a string,
6200 pre-processor from the outside: raw_input always gets a string,
6198 and prefilter has to process it. We can then redefine prefilter
6201 and prefilter has to process it. We can then redefine prefilter
6199 from the outside and implement extensions for special
6202 from the outside and implement extensions for special
6200 purposes.
6203 purposes.
6201
6204
6202 Today I got one for inputting PhysicalQuantity objects
6205 Today I got one for inputting PhysicalQuantity objects
6203 (from Scientific) without needing any function calls at
6206 (from Scientific) without needing any function calls at
6204 all. Extremely convenient, and it's all done as a user-level
6207 all. Extremely convenient, and it's all done as a user-level
6205 extension (no IPython code was touched). Now instead of:
6208 extension (no IPython code was touched). Now instead of:
6206 a = PhysicalQuantity(4.2,'m/s**2')
6209 a = PhysicalQuantity(4.2,'m/s**2')
6207 one can simply say
6210 one can simply say
6208 a = 4.2 m/s**2
6211 a = 4.2 m/s**2
6209 or even
6212 or even
6210 a = 4.2 m/s^2
6213 a = 4.2 m/s^2
6211
6214
6212 I use this, but it's also a proof of concept: IPython really is
6215 I use this, but it's also a proof of concept: IPython really is
6213 fully user-extensible, even at the level of the parsing of the
6216 fully user-extensible, even at the level of the parsing of the
6214 command line. It's not trivial, but it's perfectly doable.
6217 command line. It's not trivial, but it's perfectly doable.
6215
6218
6216 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6219 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6217 the problem of modules being loaded in the inverse order in which
6220 the problem of modules being loaded in the inverse order in which
6218 they were defined in
6221 they were defined in
6219
6222
6220 * Version 0.1.8 released, 0.1.9 opened for further work.
6223 * Version 0.1.8 released, 0.1.9 opened for further work.
6221
6224
6222 * Added magics pdef, source and file. They respectively show the
6225 * Added magics pdef, source and file. They respectively show the
6223 definition line ('prototype' in C), source code and full python
6226 definition line ('prototype' in C), source code and full python
6224 file for any callable object. The object inspector oinfo uses
6227 file for any callable object. The object inspector oinfo uses
6225 these to show the same information.
6228 these to show the same information.
6226
6229
6227 * Version 0.1.7 released, 0.1.8 opened for further work.
6230 * Version 0.1.7 released, 0.1.8 opened for further work.
6228
6231
6229 * Separated all the magic functions into a class called Magic. The
6232 * Separated all the magic functions into a class called Magic. The
6230 InteractiveShell class was becoming too big for Xemacs to handle
6233 InteractiveShell class was becoming too big for Xemacs to handle
6231 (de-indenting a line would lock it up for 10 seconds while it
6234 (de-indenting a line would lock it up for 10 seconds while it
6232 backtracked on the whole class!)
6235 backtracked on the whole class!)
6233
6236
6234 FIXME: didn't work. It can be done, but right now namespaces are
6237 FIXME: didn't work. It can be done, but right now namespaces are
6235 all messed up. Do it later (reverted it for now, so at least
6238 all messed up. Do it later (reverted it for now, so at least
6236 everything works as before).
6239 everything works as before).
6237
6240
6238 * Got the object introspection system (magic_oinfo) working! I
6241 * Got the object introspection system (magic_oinfo) working! I
6239 think this is pretty much ready for release to Janko, so he can
6242 think this is pretty much ready for release to Janko, so he can
6240 test it for a while and then announce it. Pretty much 100% of what
6243 test it for a while and then announce it. Pretty much 100% of what
6241 I wanted for the 'phase 1' release is ready. Happy, tired.
6244 I wanted for the 'phase 1' release is ready. Happy, tired.
6242
6245
6243 2001-11-12 Fernando Perez <fperez@colorado.edu>
6246 2001-11-12 Fernando Perez <fperez@colorado.edu>
6244
6247
6245 * Version 0.1.6 released, 0.1.7 opened for further work.
6248 * Version 0.1.6 released, 0.1.7 opened for further work.
6246
6249
6247 * Fixed bug in printing: it used to test for truth before
6250 * Fixed bug in printing: it used to test for truth before
6248 printing, so 0 wouldn't print. Now checks for None.
6251 printing, so 0 wouldn't print. Now checks for None.
6249
6252
6250 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6253 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
6251 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6254 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
6252 reaches by hand into the outputcache. Think of a better way to do
6255 reaches by hand into the outputcache. Think of a better way to do
6253 this later.
6256 this later.
6254
6257
6255 * Various small fixes thanks to Nathan's comments.
6258 * Various small fixes thanks to Nathan's comments.
6256
6259
6257 * Changed magic_pprint to magic_Pprint. This way it doesn't
6260 * Changed magic_pprint to magic_Pprint. This way it doesn't
6258 collide with pprint() and the name is consistent with the command
6261 collide with pprint() and the name is consistent with the command
6259 line option.
6262 line option.
6260
6263
6261 * Changed prompt counter behavior to be fully like
6264 * Changed prompt counter behavior to be fully like
6262 Mathematica's. That is, even input that doesn't return a result
6265 Mathematica's. That is, even input that doesn't return a result
6263 raises the prompt counter. The old behavior was kind of confusing
6266 raises the prompt counter. The old behavior was kind of confusing
6264 (getting the same prompt number several times if the operation
6267 (getting the same prompt number several times if the operation
6265 didn't return a result).
6268 didn't return a result).
6266
6269
6267 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6270 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
6268
6271
6269 * Fixed -Classic mode (wasn't working anymore).
6272 * Fixed -Classic mode (wasn't working anymore).
6270
6273
6271 * Added colored prompts using Nathan's new code. Colors are
6274 * Added colored prompts using Nathan's new code. Colors are
6272 currently hardwired, they can be user-configurable. For
6275 currently hardwired, they can be user-configurable. For
6273 developers, they can be chosen in file ipythonlib.py, at the
6276 developers, they can be chosen in file ipythonlib.py, at the
6274 beginning of the CachedOutput class def.
6277 beginning of the CachedOutput class def.
6275
6278
6276 2001-11-11 Fernando Perez <fperez@colorado.edu>
6279 2001-11-11 Fernando Perez <fperez@colorado.edu>
6277
6280
6278 * Version 0.1.5 released, 0.1.6 opened for further work.
6281 * Version 0.1.5 released, 0.1.6 opened for further work.
6279
6282
6280 * Changed magic_env to *return* the environment as a dict (not to
6283 * Changed magic_env to *return* the environment as a dict (not to
6281 print it). This way it prints, but it can also be processed.
6284 print it). This way it prints, but it can also be processed.
6282
6285
6283 * Added Verbose exception reporting to interactive
6286 * Added Verbose exception reporting to interactive
6284 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6287 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
6285 traceback. Had to make some changes to the ultraTB file. This is
6288 traceback. Had to make some changes to the ultraTB file. This is
6286 probably the last 'big' thing in my mental todo list. This ties
6289 probably the last 'big' thing in my mental todo list. This ties
6287 in with the next entry:
6290 in with the next entry:
6288
6291
6289 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6292 * Changed -Xi and -Xf to a single -xmode option. Now all the user
6290 has to specify is Plain, Color or Verbose for all exception
6293 has to specify is Plain, Color or Verbose for all exception
6291 handling.
6294 handling.
6292
6295
6293 * Removed ShellServices option. All this can really be done via
6296 * Removed ShellServices option. All this can really be done via
6294 the magic system. It's easier to extend, cleaner and has automatic
6297 the magic system. It's easier to extend, cleaner and has automatic
6295 namespace protection and documentation.
6298 namespace protection and documentation.
6296
6299
6297 2001-11-09 Fernando Perez <fperez@colorado.edu>
6300 2001-11-09 Fernando Perez <fperez@colorado.edu>
6298
6301
6299 * Fixed bug in output cache flushing (missing parameter to
6302 * Fixed bug in output cache flushing (missing parameter to
6300 __init__). Other small bugs fixed (found using pychecker).
6303 __init__). Other small bugs fixed (found using pychecker).
6301
6304
6302 * Version 0.1.4 opened for bugfixing.
6305 * Version 0.1.4 opened for bugfixing.
6303
6306
6304 2001-11-07 Fernando Perez <fperez@colorado.edu>
6307 2001-11-07 Fernando Perez <fperez@colorado.edu>
6305
6308
6306 * Version 0.1.3 released, mainly because of the raw_input bug.
6309 * Version 0.1.3 released, mainly because of the raw_input bug.
6307
6310
6308 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6311 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
6309 and when testing for whether things were callable, a call could
6312 and when testing for whether things were callable, a call could
6310 actually be made to certain functions. They would get called again
6313 actually be made to certain functions. They would get called again
6311 once 'really' executed, with a resulting double call. A disaster
6314 once 'really' executed, with a resulting double call. A disaster
6312 in many cases (list.reverse() would never work!).
6315 in many cases (list.reverse() would never work!).
6313
6316
6314 * Removed prefilter() function, moved its code to raw_input (which
6317 * Removed prefilter() function, moved its code to raw_input (which
6315 after all was just a near-empty caller for prefilter). This saves
6318 after all was just a near-empty caller for prefilter). This saves
6316 a function call on every prompt, and simplifies the class a tiny bit.
6319 a function call on every prompt, and simplifies the class a tiny bit.
6317
6320
6318 * Fix _ip to __ip name in magic example file.
6321 * Fix _ip to __ip name in magic example file.
6319
6322
6320 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6323 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
6321 work with non-gnu versions of tar.
6324 work with non-gnu versions of tar.
6322
6325
6323 2001-11-06 Fernando Perez <fperez@colorado.edu>
6326 2001-11-06 Fernando Perez <fperez@colorado.edu>
6324
6327
6325 * Version 0.1.2. Just to keep track of the recent changes.
6328 * Version 0.1.2. Just to keep track of the recent changes.
6326
6329
6327 * Fixed nasty bug in output prompt routine. It used to check 'if
6330 * Fixed nasty bug in output prompt routine. It used to check 'if
6328 arg != None...'. Problem is, this fails if arg implements a
6331 arg != None...'. Problem is, this fails if arg implements a
6329 special comparison (__cmp__) which disallows comparing to
6332 special comparison (__cmp__) which disallows comparing to
6330 None. Found it when trying to use the PhysicalQuantity module from
6333 None. Found it when trying to use the PhysicalQuantity module from
6331 ScientificPython.
6334 ScientificPython.
6332
6335
6333 2001-11-05 Fernando Perez <fperez@colorado.edu>
6336 2001-11-05 Fernando Perez <fperez@colorado.edu>
6334
6337
6335 * Also added dirs. Now the pushd/popd/dirs family functions
6338 * Also added dirs. Now the pushd/popd/dirs family functions
6336 basically like the shell, with the added convenience of going home
6339 basically like the shell, with the added convenience of going home
6337 when called with no args.
6340 when called with no args.
6338
6341
6339 * pushd/popd slightly modified to mimic shell behavior more
6342 * pushd/popd slightly modified to mimic shell behavior more
6340 closely.
6343 closely.
6341
6344
6342 * Added env,pushd,popd from ShellServices as magic functions. I
6345 * Added env,pushd,popd from ShellServices as magic functions. I
6343 think the cleanest will be to port all desired functions from
6346 think the cleanest will be to port all desired functions from
6344 ShellServices as magics and remove ShellServices altogether. This
6347 ShellServices as magics and remove ShellServices altogether. This
6345 will provide a single, clean way of adding functionality
6348 will provide a single, clean way of adding functionality
6346 (shell-type or otherwise) to IP.
6349 (shell-type or otherwise) to IP.
6347
6350
6348 2001-11-04 Fernando Perez <fperez@colorado.edu>
6351 2001-11-04 Fernando Perez <fperez@colorado.edu>
6349
6352
6350 * Added .ipython/ directory to sys.path. This way users can keep
6353 * Added .ipython/ directory to sys.path. This way users can keep
6351 customizations there and access them via import.
6354 customizations there and access them via import.
6352
6355
6353 2001-11-03 Fernando Perez <fperez@colorado.edu>
6356 2001-11-03 Fernando Perez <fperez@colorado.edu>
6354
6357
6355 * Opened version 0.1.1 for new changes.
6358 * Opened version 0.1.1 for new changes.
6356
6359
6357 * Changed version number to 0.1.0: first 'public' release, sent to
6360 * Changed version number to 0.1.0: first 'public' release, sent to
6358 Nathan and Janko.
6361 Nathan and Janko.
6359
6362
6360 * Lots of small fixes and tweaks.
6363 * Lots of small fixes and tweaks.
6361
6364
6362 * Minor changes to whos format. Now strings are shown, snipped if
6365 * Minor changes to whos format. Now strings are shown, snipped if
6363 too long.
6366 too long.
6364
6367
6365 * Changed ShellServices to work on __main__ so they show up in @who
6368 * Changed ShellServices to work on __main__ so they show up in @who
6366
6369
6367 * Help also works with ? at the end of a line:
6370 * Help also works with ? at the end of a line:
6368 ?sin and sin?
6371 ?sin and sin?
6369 both produce the same effect. This is nice, as often I use the
6372 both produce the same effect. This is nice, as often I use the
6370 tab-complete to find the name of a method, but I used to then have
6373 tab-complete to find the name of a method, but I used to then have
6371 to go to the beginning of the line to put a ? if I wanted more
6374 to go to the beginning of the line to put a ? if I wanted more
6372 info. Now I can just add the ? and hit return. Convenient.
6375 info. Now I can just add the ? and hit return. Convenient.
6373
6376
6374 2001-11-02 Fernando Perez <fperez@colorado.edu>
6377 2001-11-02 Fernando Perez <fperez@colorado.edu>
6375
6378
6376 * Python version check (>=2.1) added.
6379 * Python version check (>=2.1) added.
6377
6380
6378 * Added LazyPython documentation. At this point the docs are quite
6381 * Added LazyPython documentation. At this point the docs are quite
6379 a mess. A cleanup is in order.
6382 a mess. A cleanup is in order.
6380
6383
6381 * Auto-installer created. For some bizarre reason, the zipfiles
6384 * Auto-installer created. For some bizarre reason, the zipfiles
6382 module isn't working on my system. So I made a tar version
6385 module isn't working on my system. So I made a tar version
6383 (hopefully the command line options in various systems won't kill
6386 (hopefully the command line options in various systems won't kill
6384 me).
6387 me).
6385
6388
6386 * Fixes to Struct in genutils. Now all dictionary-like methods are
6389 * Fixes to Struct in genutils. Now all dictionary-like methods are
6387 protected (reasonably).
6390 protected (reasonably).
6388
6391
6389 * Added pager function to genutils and changed ? to print usage
6392 * Added pager function to genutils and changed ? to print usage
6390 note through it (it was too long).
6393 note through it (it was too long).
6391
6394
6392 * Added the LazyPython functionality. Works great! I changed the
6395 * Added the LazyPython functionality. Works great! I changed the
6393 auto-quote escape to ';', it's on home row and next to '. But
6396 auto-quote escape to ';', it's on home row and next to '. But
6394 both auto-quote and auto-paren (still /) escapes are command-line
6397 both auto-quote and auto-paren (still /) escapes are command-line
6395 parameters.
6398 parameters.
6396
6399
6397
6400
6398 2001-11-01 Fernando Perez <fperez@colorado.edu>
6401 2001-11-01 Fernando Perez <fperez@colorado.edu>
6399
6402
6400 * Version changed to 0.0.7. Fairly large change: configuration now
6403 * Version changed to 0.0.7. Fairly large change: configuration now
6401 is all stored in a directory, by default .ipython. There, all
6404 is all stored in a directory, by default .ipython. There, all
6402 config files have normal looking names (not .names)
6405 config files have normal looking names (not .names)
6403
6406
6404 * Version 0.0.6 Released first to Lucas and Archie as a test
6407 * Version 0.0.6 Released first to Lucas and Archie as a test
6405 run. Since it's the first 'semi-public' release, change version to
6408 run. Since it's the first 'semi-public' release, change version to
6406 > 0.0.6 for any changes now.
6409 > 0.0.6 for any changes now.
6407
6410
6408 * Stuff I had put in the ipplib.py changelog:
6411 * Stuff I had put in the ipplib.py changelog:
6409
6412
6410 Changes to InteractiveShell:
6413 Changes to InteractiveShell:
6411
6414
6412 - Made the usage message a parameter.
6415 - Made the usage message a parameter.
6413
6416
6414 - Require the name of the shell variable to be given. It's a bit
6417 - Require the name of the shell variable to be given. It's a bit
6415 of a hack, but allows the name 'shell' not to be hardwired in the
6418 of a hack, but allows the name 'shell' not to be hardwired in the
6416 magic (@) handler, which is problematic b/c it requires
6419 magic (@) handler, which is problematic b/c it requires
6417 polluting the global namespace with 'shell'. This in turn is
6420 polluting the global namespace with 'shell'. This in turn is
6418 fragile: if a user redefines a variable called shell, things
6421 fragile: if a user redefines a variable called shell, things
6419 break.
6422 break.
6420
6423
6421 - magic @: all functions available through @ need to be defined
6424 - magic @: all functions available through @ need to be defined
6422 as magic_<name>, even though they can be called simply as
6425 as magic_<name>, even though they can be called simply as
6423 @<name>. This allows the special command @magic to gather
6426 @<name>. This allows the special command @magic to gather
6424 information automatically about all existing magic functions,
6427 information automatically about all existing magic functions,
6425 even if they are run-time user extensions, by parsing the shell
6428 even if they are run-time user extensions, by parsing the shell
6426 instance __dict__ looking for special magic_ names.
6429 instance __dict__ looking for special magic_ names.
6427
6430
6428 - mainloop: added *two* local namespace parameters. This allows
6431 - mainloop: added *two* local namespace parameters. This allows
6429 the class to differentiate between parameters which were there
6432 the class to differentiate between parameters which were there
6430 before and after command line initialization was processed. This
6433 before and after command line initialization was processed. This
6431 way, later @who can show things loaded at startup by the
6434 way, later @who can show things loaded at startup by the
6432 user. This trick was necessary to make session saving/reloading
6435 user. This trick was necessary to make session saving/reloading
6433 really work: ideally after saving/exiting/reloading a session,
6436 really work: ideally after saving/exiting/reloading a session,
6434 *everything* should look the same, including the output of @who. I
6437 *everything* should look the same, including the output of @who. I
6435 was only able to make this work with this double namespace
6438 was only able to make this work with this double namespace
6436 trick.
6439 trick.
6437
6440
6438 - added a header to the logfile which allows (almost) full
6441 - added a header to the logfile which allows (almost) full
6439 session restoring.
6442 session restoring.
6440
6443
6441 - prepend lines beginning with @ or !, with a and log
6444 - prepend lines beginning with @ or !, with a and log
6442 them. Why? !lines: may be useful to know what you did @lines:
6445 them. Why? !lines: may be useful to know what you did @lines:
6443 they may affect session state. So when restoring a session, at
6446 they may affect session state. So when restoring a session, at
6444 least inform the user of their presence. I couldn't quite get
6447 least inform the user of their presence. I couldn't quite get
6445 them to properly re-execute, but at least the user is warned.
6448 them to properly re-execute, but at least the user is warned.
6446
6449
6447 * Started ChangeLog.
6450 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now