##// END OF EJS Templates
Now IPython works with OS X 10.5 (Leopards) libedit based readline module.
bgranger -
Show More
This diff has been collapsed as it changes many lines, (4752 lines changed) Show them Hide them
@@ -1,2570 +1,2578 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 2846 2007-10-24 14:44:48Z vivainio $
9 $Id: iplib.py 2854 2007-11-01 20:19:34Z bgranger $
10 """
10 """
11
11
12 #*****************************************************************************
12 #*****************************************************************************
13 # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and
13 # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and
14 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
14 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
15 #
15 #
16 # Distributed under the terms of the BSD License. The full license is in
16 # Distributed under the terms of the BSD License. The full license is in
17 # the file COPYING, distributed as part of this software.
17 # the file COPYING, distributed as part of this software.
18 #
18 #
19 # Note: this code originally subclassed code.InteractiveConsole from the
19 # Note: this code originally subclassed code.InteractiveConsole from the
20 # Python standard library. Over time, all of that class has been copied
20 # Python standard library. Over time, all of that class has been copied
21 # verbatim here for modifications which could not be accomplished by
21 # verbatim here for modifications which could not be accomplished by
22 # subclassing. At this point, there are no dependencies at all on the code
22 # subclassing. At this point, there are no dependencies at all on the code
23 # module anymore (it is not even imported). The Python License (sec. 2)
23 # module anymore (it is not even imported). The Python License (sec. 2)
24 # allows for this, but it's always nice to acknowledge credit where credit is
24 # allows for this, but it's always nice to acknowledge credit where credit is
25 # due.
25 # due.
26 #*****************************************************************************
26 #*****************************************************************************
27
27
28 #****************************************************************************
28 #****************************************************************************
29 # Modules and globals
29 # Modules and globals
30
30
31 from IPython import Release
31 from IPython import Release
32 __author__ = '%s <%s>\n%s <%s>' % \
32 __author__ = '%s <%s>\n%s <%s>' % \
33 ( Release.authors['Janko'] + Release.authors['Fernando'] )
33 ( Release.authors['Janko'] + Release.authors['Fernando'] )
34 __license__ = Release.license
34 __license__ = Release.license
35 __version__ = Release.version
35 __version__ = Release.version
36
36
37 # Python standard modules
37 # Python standard modules
38 import __main__
38 import __main__
39 import __builtin__
39 import __builtin__
40 import StringIO
40 import StringIO
41 import bdb
41 import bdb
42 import cPickle as pickle
42 import cPickle as pickle
43 import codeop
43 import codeop
44 import exceptions
44 import exceptions
45 import glob
45 import glob
46 import inspect
46 import inspect
47 import keyword
47 import keyword
48 import new
48 import new
49 import os
49 import os
50 import pydoc
50 import pydoc
51 import re
51 import re
52 import shutil
52 import shutil
53 import string
53 import string
54 import sys
54 import sys
55 import tempfile
55 import tempfile
56 import traceback
56 import traceback
57 import types
57 import types
58 import pickleshare
58 import pickleshare
59 from sets import Set
59 from sets import Set
60 from pprint import pprint, pformat
60 from pprint import pprint, pformat
61
61
62 # IPython's own modules
62 # IPython's own modules
63 #import IPython
63 #import IPython
64 from IPython import Debugger,OInspect,PyColorize,ultraTB
64 from IPython import Debugger,OInspect,PyColorize,ultraTB
65 from IPython.ColorANSI import ColorScheme,ColorSchemeTable # too long names
65 from IPython.ColorANSI import ColorScheme,ColorSchemeTable # too long names
66 from IPython.FakeModule import FakeModule
66 from IPython.FakeModule import FakeModule
67 from IPython.Itpl import Itpl,itpl,printpl,ItplNS,itplns
67 from IPython.Itpl import Itpl,itpl,printpl,ItplNS,itplns
68 from IPython.Logger import Logger
68 from IPython.Logger import Logger
69 from IPython.Magic import Magic
69 from IPython.Magic import Magic
70 from IPython.Prompts import CachedOutput
70 from IPython.Prompts import CachedOutput
71 from IPython.ipstruct import Struct
71 from IPython.ipstruct import Struct
72 from IPython.background_jobs import BackgroundJobManager
72 from IPython.background_jobs import BackgroundJobManager
73 from IPython.usage import cmd_line_usage,interactive_usage
73 from IPython.usage import cmd_line_usage,interactive_usage
74 from IPython.genutils import *
74 from IPython.genutils import *
75 from IPython.strdispatch import StrDispatch
75 from IPython.strdispatch import StrDispatch
76 import IPython.ipapi
76 import IPython.ipapi
77 import IPython.history
77 import IPython.history
78 import IPython.prefilter as prefilter
78 import IPython.prefilter as prefilter
79 import IPython.shadowns
79 import IPython.shadowns
80 # Globals
80 # Globals
81
81
82 # store the builtin raw_input globally, and use this always, in case user code
82 # store the builtin raw_input globally, and use this always, in case user code
83 # overwrites it (like wx.py.PyShell does)
83 # overwrites it (like wx.py.PyShell does)
84 raw_input_original = raw_input
84 raw_input_original = raw_input
85
85
86 # compiled regexps for autoindent management
86 # compiled regexps for autoindent management
87 dedent_re = re.compile(r'^\s+raise|^\s+return|^\s+pass')
87 dedent_re = re.compile(r'^\s+raise|^\s+return|^\s+pass')
88
88
89
89
90 #****************************************************************************
90 #****************************************************************************
91 # Some utility function definitions
91 # Some utility function definitions
92
92
93 ini_spaces_re = re.compile(r'^(\s+)')
93 ini_spaces_re = re.compile(r'^(\s+)')
94
94
95 def num_ini_spaces(strng):
95 def num_ini_spaces(strng):
96 """Return the number of initial spaces in a string"""
96 """Return the number of initial spaces in a string"""
97
97
98 ini_spaces = ini_spaces_re.match(strng)
98 ini_spaces = ini_spaces_re.match(strng)
99 if ini_spaces:
99 if ini_spaces:
100 return ini_spaces.end()
100 return ini_spaces.end()
101 else:
101 else:
102 return 0
102 return 0
103
103
104 def softspace(file, newvalue):
104 def softspace(file, newvalue):
105 """Copied from code.py, to remove the dependency"""
105 """Copied from code.py, to remove the dependency"""
106
106
107 oldvalue = 0
107 oldvalue = 0
108 try:
108 try:
109 oldvalue = file.softspace
109 oldvalue = file.softspace
110 except AttributeError:
110 except AttributeError:
111 pass
111 pass
112 try:
112 try:
113 file.softspace = newvalue
113 file.softspace = newvalue
114 except (AttributeError, TypeError):
114 except (AttributeError, TypeError):
115 # "attribute-less object" or "read-only attributes"
115 # "attribute-less object" or "read-only attributes"
116 pass
116 pass
117 return oldvalue
117 return oldvalue
118
118
119
119
120 #****************************************************************************
120 #****************************************************************************
121 # Local use exceptions
121 # Local use exceptions
122 class SpaceInInput(exceptions.Exception): pass
122 class SpaceInInput(exceptions.Exception): pass
123
123
124
124
125 #****************************************************************************
125 #****************************************************************************
126 # Local use classes
126 # Local use classes
127 class Bunch: pass
127 class Bunch: pass
128
128
129 class Undefined: pass
129 class Undefined: pass
130
130
131 class Quitter(object):
131 class Quitter(object):
132 """Simple class to handle exit, similar to Python 2.5's.
132 """Simple class to handle exit, similar to Python 2.5's.
133
133
134 It handles exiting in an ipython-safe manner, which the one in Python 2.5
134 It handles exiting in an ipython-safe manner, which the one in Python 2.5
135 doesn't do (obviously, since it doesn't know about ipython)."""
135 doesn't do (obviously, since it doesn't know about ipython)."""
136
136
137 def __init__(self,shell,name):
137 def __init__(self,shell,name):
138 self.shell = shell
138 self.shell = shell
139 self.name = name
139 self.name = name
140
140
141 def __repr__(self):
141 def __repr__(self):
142 return 'Type %s() to exit.' % self.name
142 return 'Type %s() to exit.' % self.name
143 __str__ = __repr__
143 __str__ = __repr__
144
144
145 def __call__(self):
145 def __call__(self):
146 self.shell.exit()
146 self.shell.exit()
147
147
148 class InputList(list):
148 class InputList(list):
149 """Class to store user input.
149 """Class to store user input.
150
150
151 It's basically a list, but slices return a string instead of a list, thus
151 It's basically a list, but slices return a string instead of a list, thus
152 allowing things like (assuming 'In' is an instance):
152 allowing things like (assuming 'In' is an instance):
153
153
154 exec In[4:7]
154 exec In[4:7]
155
155
156 or
156 or
157
157
158 exec In[5:9] + In[14] + In[21:25]"""
158 exec In[5:9] + In[14] + In[21:25]"""
159
159
160 def __getslice__(self,i,j):
160 def __getslice__(self,i,j):
161 return ''.join(list.__getslice__(self,i,j))
161 return ''.join(list.__getslice__(self,i,j))
162
162
163 class SyntaxTB(ultraTB.ListTB):
163 class SyntaxTB(ultraTB.ListTB):
164 """Extension which holds some state: the last exception value"""
164 """Extension which holds some state: the last exception value"""
165
165
166 def __init__(self,color_scheme = 'NoColor'):
166 def __init__(self,color_scheme = 'NoColor'):
167 ultraTB.ListTB.__init__(self,color_scheme)
167 ultraTB.ListTB.__init__(self,color_scheme)
168 self.last_syntax_error = None
168 self.last_syntax_error = None
169
169
170 def __call__(self, etype, value, elist):
170 def __call__(self, etype, value, elist):
171 self.last_syntax_error = value
171 self.last_syntax_error = value
172 ultraTB.ListTB.__call__(self,etype,value,elist)
172 ultraTB.ListTB.__call__(self,etype,value,elist)
173
173
174 def clear_err_state(self):
174 def clear_err_state(self):
175 """Return the current error state and clear it"""
175 """Return the current error state and clear it"""
176 e = self.last_syntax_error
176 e = self.last_syntax_error
177 self.last_syntax_error = None
177 self.last_syntax_error = None
178 return e
178 return e
179
179
180 #****************************************************************************
180 #****************************************************************************
181 # Main IPython class
181 # Main IPython class
182
182
183 # FIXME: the Magic class is a mixin for now, and will unfortunately remain so
183 # FIXME: the Magic class is a mixin for now, and will unfortunately remain so
184 # until a full rewrite is made. I've cleaned all cross-class uses of
184 # until a full rewrite is made. I've cleaned all cross-class uses of
185 # attributes and methods, but too much user code out there relies on the
185 # attributes and methods, but too much user code out there relies on the
186 # equlity %foo == __IP.magic_foo, so I can't actually remove the mixin usage.
186 # equlity %foo == __IP.magic_foo, so I can't actually remove the mixin usage.
187 #
187 #
188 # But at least now, all the pieces have been separated and we could, in
188 # But at least now, all the pieces have been separated and we could, in
189 # principle, stop using the mixin. This will ease the transition to the
189 # principle, stop using the mixin. This will ease the transition to the
190 # chainsaw branch.
190 # chainsaw branch.
191
191
192 # For reference, the following is the list of 'self.foo' uses in the Magic
192 # For reference, the following is the list of 'self.foo' uses in the Magic
193 # class as of 2005-12-28. These are names we CAN'T use in the main ipython
193 # class as of 2005-12-28. These are names we CAN'T use in the main ipython
194 # class, to prevent clashes.
194 # class, to prevent clashes.
195
195
196 # ['self.__class__', 'self.__dict__', 'self._inspect', 'self._ofind',
196 # ['self.__class__', 'self.__dict__', 'self._inspect', 'self._ofind',
197 # 'self.arg_err', 'self.extract_input', 'self.format_', 'self.lsmagic',
197 # 'self.arg_err', 'self.extract_input', 'self.format_', 'self.lsmagic',
198 # 'self.magic_', 'self.options_table', 'self.parse', 'self.shell',
198 # 'self.magic_', 'self.options_table', 'self.parse', 'self.shell',
199 # 'self.value']
199 # 'self.value']
200
200
201 class InteractiveShell(object,Magic):
201 class InteractiveShell(object,Magic):
202 """An enhanced console for Python."""
202 """An enhanced console for Python."""
203
203
204 # class attribute to indicate whether the class supports threads or not.
204 # class attribute to indicate whether the class supports threads or not.
205 # Subclasses with thread support should override this as needed.
205 # Subclasses with thread support should override this as needed.
206 isthreaded = False
206 isthreaded = False
207
207
208 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
208 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
209 user_ns = None,user_global_ns=None,banner2='',
209 user_ns = None,user_global_ns=None,banner2='',
210 custom_exceptions=((),None),embedded=False):
210 custom_exceptions=((),None),embedded=False):
211
211
212 # log system
212 # log system
213 self.logger = Logger(self,logfname='ipython_log.py',logmode='rotate')
213 self.logger = Logger(self,logfname='ipython_log.py',logmode='rotate')
214
214
215 # some minimal strict typechecks. For some core data structures, I
215 # some minimal strict typechecks. For some core data structures, I
216 # want actual basic python types, not just anything that looks like
216 # want actual basic python types, not just anything that looks like
217 # one. This is especially true for namespaces.
217 # one. This is especially true for namespaces.
218 for ns in (user_ns,user_global_ns):
218 for ns in (user_ns,user_global_ns):
219 if ns is not None and type(ns) != types.DictType:
219 if ns is not None and type(ns) != types.DictType:
220 raise TypeError,'namespace must be a dictionary'
220 raise TypeError,'namespace must be a dictionary'
221
221
222 # Job manager (for jobs run as background threads)
222 # Job manager (for jobs run as background threads)
223 self.jobs = BackgroundJobManager()
223 self.jobs = BackgroundJobManager()
224
224
225 # Store the actual shell's name
225 # Store the actual shell's name
226 self.name = name
226 self.name = name
227
227
228 # We need to know whether the instance is meant for embedding, since
228 # We need to know whether the instance is meant for embedding, since
229 # global/local namespaces need to be handled differently in that case
229 # global/local namespaces need to be handled differently in that case
230 self.embedded = embedded
230 self.embedded = embedded
231 if embedded:
231 if embedded:
232 # Control variable so users can, from within the embedded instance,
232 # Control variable so users can, from within the embedded instance,
233 # permanently deactivate it.
233 # permanently deactivate it.
234 self.embedded_active = True
234 self.embedded_active = True
235
235
236 # command compiler
236 # command compiler
237 self.compile = codeop.CommandCompiler()
237 self.compile = codeop.CommandCompiler()
238
238
239 # User input buffer
239 # User input buffer
240 self.buffer = []
240 self.buffer = []
241
241
242 # Default name given in compilation of code
242 # Default name given in compilation of code
243 self.filename = '<ipython console>'
243 self.filename = '<ipython console>'
244
244
245 # Install our own quitter instead of the builtins. For python2.3-2.4,
245 # Install our own quitter instead of the builtins. For python2.3-2.4,
246 # this brings in behavior like 2.5, and for 2.5 it's identical.
246 # this brings in behavior like 2.5, and for 2.5 it's identical.
247 __builtin__.exit = Quitter(self,'exit')
247 __builtin__.exit = Quitter(self,'exit')
248 __builtin__.quit = Quitter(self,'quit')
248 __builtin__.quit = Quitter(self,'quit')
249
249
250 # Make an empty namespace, which extension writers can rely on both
250 # Make an empty namespace, which extension writers can rely on both
251 # existing and NEVER being used by ipython itself. This gives them a
251 # existing and NEVER being used by ipython itself. This gives them a
252 # convenient location for storing additional information and state
252 # convenient location for storing additional information and state
253 # their extensions may require, without fear of collisions with other
253 # their extensions may require, without fear of collisions with other
254 # ipython names that may develop later.
254 # ipython names that may develop later.
255 self.meta = Struct()
255 self.meta = Struct()
256
256
257 # Create the namespace where the user will operate. user_ns is
257 # Create the namespace where the user will operate. user_ns is
258 # normally the only one used, and it is passed to the exec calls as
258 # normally the only one used, and it is passed to the exec calls as
259 # the locals argument. But we do carry a user_global_ns namespace
259 # the locals argument. But we do carry a user_global_ns namespace
260 # given as the exec 'globals' argument, This is useful in embedding
260 # given as the exec 'globals' argument, This is useful in embedding
261 # situations where the ipython shell opens in a context where the
261 # situations where the ipython shell opens in a context where the
262 # distinction between locals and globals is meaningful.
262 # distinction between locals and globals is meaningful.
263
263
264 # FIXME. For some strange reason, __builtins__ is showing up at user
264 # FIXME. For some strange reason, __builtins__ is showing up at user
265 # level as a dict instead of a module. This is a manual fix, but I
265 # level as a dict instead of a module. This is a manual fix, but I
266 # should really track down where the problem is coming from. Alex
266 # should really track down where the problem is coming from. Alex
267 # Schmolck reported this problem first.
267 # Schmolck reported this problem first.
268
268
269 # A useful post by Alex Martelli on this topic:
269 # A useful post by Alex Martelli on this topic:
270 # Re: inconsistent value from __builtins__
270 # Re: inconsistent value from __builtins__
271 # Von: Alex Martelli <aleaxit@yahoo.com>
271 # Von: Alex Martelli <aleaxit@yahoo.com>
272 # Datum: Freitag 01 Oktober 2004 04:45:34 nachmittags/abends
272 # Datum: Freitag 01 Oktober 2004 04:45:34 nachmittags/abends
273 # Gruppen: comp.lang.python
273 # Gruppen: comp.lang.python
274
274
275 # Michael Hohn <hohn@hooknose.lbl.gov> wrote:
275 # Michael Hohn <hohn@hooknose.lbl.gov> wrote:
276 # > >>> print type(builtin_check.get_global_binding('__builtins__'))
276 # > >>> print type(builtin_check.get_global_binding('__builtins__'))
277 # > <type 'dict'>
277 # > <type 'dict'>
278 # > >>> print type(__builtins__)
278 # > >>> print type(__builtins__)
279 # > <type 'module'>
279 # > <type 'module'>
280 # > Is this difference in return value intentional?
280 # > Is this difference in return value intentional?
281
281
282 # Well, it's documented that '__builtins__' can be either a dictionary
282 # Well, it's documented that '__builtins__' can be either a dictionary
283 # or a module, and it's been that way for a long time. Whether it's
283 # or a module, and it's been that way for a long time. Whether it's
284 # intentional (or sensible), I don't know. In any case, the idea is
284 # intentional (or sensible), I don't know. In any case, the idea is
285 # that if you need to access the built-in namespace directly, you
285 # that if you need to access the built-in namespace directly, you
286 # should start with "import __builtin__" (note, no 's') which will
286 # should start with "import __builtin__" (note, no 's') which will
287 # definitely give you a module. Yeah, it's somewhat confusing:-(.
287 # definitely give you a module. Yeah, it's somewhat confusing:-(.
288
288
289 # These routines return properly built dicts as needed by the rest of
289 # These routines return properly built dicts as needed by the rest of
290 # the code, and can also be used by extension writers to generate
290 # the code, and can also be used by extension writers to generate
291 # properly initialized namespaces.
291 # properly initialized namespaces.
292 user_ns = IPython.ipapi.make_user_ns(user_ns)
292 user_ns = IPython.ipapi.make_user_ns(user_ns)
293 user_global_ns = IPython.ipapi.make_user_global_ns(user_global_ns)
293 user_global_ns = IPython.ipapi.make_user_global_ns(user_global_ns)
294
294
295 # Assign namespaces
295 # Assign namespaces
296 # This is the namespace where all normal user variables live
296 # This is the namespace where all normal user variables live
297 self.user_ns = user_ns
297 self.user_ns = user_ns
298 # Embedded instances require a separate namespace for globals.
298 # Embedded instances require a separate namespace for globals.
299 # Normally this one is unused by non-embedded instances.
299 # Normally this one is unused by non-embedded instances.
300 self.user_global_ns = user_global_ns
300 self.user_global_ns = user_global_ns
301 # A namespace to keep track of internal data structures to prevent
301 # A namespace to keep track of internal data structures to prevent
302 # them from cluttering user-visible stuff. Will be updated later
302 # them from cluttering user-visible stuff. Will be updated later
303 self.internal_ns = {}
303 self.internal_ns = {}
304
304
305 # Namespace of system aliases. Each entry in the alias
305 # Namespace of system aliases. Each entry in the alias
306 # table must be a 2-tuple of the form (N,name), where N is the number
306 # table must be a 2-tuple of the form (N,name), where N is the number
307 # of positional arguments of the alias.
307 # of positional arguments of the alias.
308 self.alias_table = {}
308 self.alias_table = {}
309
309
310 # A table holding all the namespaces IPython deals with, so that
310 # A table holding all the namespaces IPython deals with, so that
311 # introspection facilities can search easily.
311 # introspection facilities can search easily.
312 self.ns_table = {'user':user_ns,
312 self.ns_table = {'user':user_ns,
313 'user_global':user_global_ns,
313 'user_global':user_global_ns,
314 'alias':self.alias_table,
314 'alias':self.alias_table,
315 'internal':self.internal_ns,
315 'internal':self.internal_ns,
316 'builtin':__builtin__.__dict__
316 'builtin':__builtin__.__dict__
317 }
317 }
318 # The user namespace MUST have a pointer to the shell itself.
318 # The user namespace MUST have a pointer to the shell itself.
319 self.user_ns[name] = self
319 self.user_ns[name] = self
320
320
321 # We need to insert into sys.modules something that looks like a
321 # We need to insert into sys.modules something that looks like a
322 # module but which accesses the IPython namespace, for shelve and
322 # module but which accesses the IPython namespace, for shelve and
323 # pickle to work interactively. Normally they rely on getting
323 # pickle to work interactively. Normally they rely on getting
324 # everything out of __main__, but for embedding purposes each IPython
324 # everything out of __main__, but for embedding purposes each IPython
325 # instance has its own private namespace, so we can't go shoving
325 # instance has its own private namespace, so we can't go shoving
326 # everything into __main__.
326 # everything into __main__.
327
327
328 # note, however, that we should only do this for non-embedded
328 # note, however, that we should only do this for non-embedded
329 # ipythons, which really mimic the __main__.__dict__ with their own
329 # ipythons, which really mimic the __main__.__dict__ with their own
330 # namespace. Embedded instances, on the other hand, should not do
330 # namespace. Embedded instances, on the other hand, should not do
331 # this because they need to manage the user local/global namespaces
331 # this because they need to manage the user local/global namespaces
332 # only, but they live within a 'normal' __main__ (meaning, they
332 # only, but they live within a 'normal' __main__ (meaning, they
333 # shouldn't overtake the execution environment of the script they're
333 # shouldn't overtake the execution environment of the script they're
334 # embedded in).
334 # embedded in).
335
335
336 if not embedded:
336 if not embedded:
337 try:
337 try:
338 main_name = self.user_ns['__name__']
338 main_name = self.user_ns['__name__']
339 except KeyError:
339 except KeyError:
340 raise KeyError,'user_ns dictionary MUST have a "__name__" key'
340 raise KeyError,'user_ns dictionary MUST have a "__name__" key'
341 else:
341 else:
342 #print "pickle hack in place" # dbg
342 #print "pickle hack in place" # dbg
343 #print 'main_name:',main_name # dbg
343 #print 'main_name:',main_name # dbg
344 sys.modules[main_name] = FakeModule(self.user_ns)
344 sys.modules[main_name] = FakeModule(self.user_ns)
345
345
346 # Now that FakeModule produces a real module, we've run into a nasty
346 # Now that FakeModule produces a real module, we've run into a nasty
347 # problem: after script execution (via %run), the module where the user
347 # problem: after script execution (via %run), the module where the user
348 # code ran is deleted. Now that this object is a true module (needed
348 # code ran is deleted. Now that this object is a true module (needed
349 # so docetst and other tools work correctly), the Python module
349 # so docetst and other tools work correctly), the Python module
350 # teardown mechanism runs over it, and sets to None every variable
350 # teardown mechanism runs over it, and sets to None every variable
351 # present in that module. This means that later calls to functions
351 # present in that module. This means that later calls to functions
352 # defined in the script (which have become interactively visible after
352 # defined in the script (which have become interactively visible after
353 # script exit) fail, because they hold references to objects that have
353 # script exit) fail, because they hold references to objects that have
354 # become overwritten into None. The only solution I see right now is
354 # become overwritten into None. The only solution I see right now is
355 # to protect every FakeModule used by %run by holding an internal
355 # to protect every FakeModule used by %run by holding an internal
356 # reference to it. This private list will be used for that. The
356 # reference to it. This private list will be used for that. The
357 # %reset command will flush it as well.
357 # %reset command will flush it as well.
358 self._user_main_modules = []
358 self._user_main_modules = []
359
359
360 # List of input with multi-line handling.
360 # List of input with multi-line handling.
361 # Fill its zero entry, user counter starts at 1
361 # Fill its zero entry, user counter starts at 1
362 self.input_hist = InputList(['\n'])
362 self.input_hist = InputList(['\n'])
363 # This one will hold the 'raw' input history, without any
363 # This one will hold the 'raw' input history, without any
364 # pre-processing. This will allow users to retrieve the input just as
364 # pre-processing. This will allow users to retrieve the input just as
365 # it was exactly typed in by the user, with %hist -r.
365 # it was exactly typed in by the user, with %hist -r.
366 self.input_hist_raw = InputList(['\n'])
366 self.input_hist_raw = InputList(['\n'])
367
367
368 # list of visited directories
368 # list of visited directories
369 try:
369 try:
370 self.dir_hist = [os.getcwd()]
370 self.dir_hist = [os.getcwd()]
371 except OSError:
371 except OSError:
372 self.dir_hist = []
372 self.dir_hist = []
373
373
374 # dict of output history
374 # dict of output history
375 self.output_hist = {}
375 self.output_hist = {}
376
376
377 # Get system encoding at startup time. Certain terminals (like Emacs
377 # Get system encoding at startup time. Certain terminals (like Emacs
378 # under Win32 have it set to None, and we need to have a known valid
378 # under Win32 have it set to None, and we need to have a known valid
379 # encoding to use in the raw_input() method
379 # encoding to use in the raw_input() method
380 self.stdin_encoding = sys.stdin.encoding or 'ascii'
380 self.stdin_encoding = sys.stdin.encoding or 'ascii'
381
381
382 # dict of things NOT to alias (keywords, builtins and some magics)
382 # dict of things NOT to alias (keywords, builtins and some magics)
383 no_alias = {}
383 no_alias = {}
384 no_alias_magics = ['cd','popd','pushd','dhist','alias','unalias']
384 no_alias_magics = ['cd','popd','pushd','dhist','alias','unalias']
385 for key in keyword.kwlist + no_alias_magics:
385 for key in keyword.kwlist + no_alias_magics:
386 no_alias[key] = 1
386 no_alias[key] = 1
387 no_alias.update(__builtin__.__dict__)
387 no_alias.update(__builtin__.__dict__)
388 self.no_alias = no_alias
388 self.no_alias = no_alias
389
389
390 # make global variables for user access to these
390 # make global variables for user access to these
391 self.user_ns['_ih'] = self.input_hist
391 self.user_ns['_ih'] = self.input_hist
392 self.user_ns['_oh'] = self.output_hist
392 self.user_ns['_oh'] = self.output_hist
393 self.user_ns['_dh'] = self.dir_hist
393 self.user_ns['_dh'] = self.dir_hist
394
394
395 # user aliases to input and output histories
395 # user aliases to input and output histories
396 self.user_ns['In'] = self.input_hist
396 self.user_ns['In'] = self.input_hist
397 self.user_ns['Out'] = self.output_hist
397 self.user_ns['Out'] = self.output_hist
398
398
399 self.user_ns['_sh'] = IPython.shadowns
399 self.user_ns['_sh'] = IPython.shadowns
400 # Object variable to store code object waiting execution. This is
400 # Object variable to store code object waiting execution. This is
401 # used mainly by the multithreaded shells, but it can come in handy in
401 # used mainly by the multithreaded shells, but it can come in handy in
402 # other situations. No need to use a Queue here, since it's a single
402 # other situations. No need to use a Queue here, since it's a single
403 # item which gets cleared once run.
403 # item which gets cleared once run.
404 self.code_to_run = None
404 self.code_to_run = None
405
405
406 # escapes for automatic behavior on the command line
406 # escapes for automatic behavior on the command line
407 self.ESC_SHELL = '!'
407 self.ESC_SHELL = '!'
408 self.ESC_SH_CAP = '!!'
408 self.ESC_SH_CAP = '!!'
409 self.ESC_HELP = '?'
409 self.ESC_HELP = '?'
410 self.ESC_MAGIC = '%'
410 self.ESC_MAGIC = '%'
411 self.ESC_QUOTE = ','
411 self.ESC_QUOTE = ','
412 self.ESC_QUOTE2 = ';'
412 self.ESC_QUOTE2 = ';'
413 self.ESC_PAREN = '/'
413 self.ESC_PAREN = '/'
414
414
415 # And their associated handlers
415 # And their associated handlers
416 self.esc_handlers = {self.ESC_PAREN : self.handle_auto,
416 self.esc_handlers = {self.ESC_PAREN : self.handle_auto,
417 self.ESC_QUOTE : self.handle_auto,
417 self.ESC_QUOTE : self.handle_auto,
418 self.ESC_QUOTE2 : self.handle_auto,
418 self.ESC_QUOTE2 : self.handle_auto,
419 self.ESC_MAGIC : self.handle_magic,
419 self.ESC_MAGIC : self.handle_magic,
420 self.ESC_HELP : self.handle_help,
420 self.ESC_HELP : self.handle_help,
421 self.ESC_SHELL : self.handle_shell_escape,
421 self.ESC_SHELL : self.handle_shell_escape,
422 self.ESC_SH_CAP : self.handle_shell_escape,
422 self.ESC_SH_CAP : self.handle_shell_escape,
423 }
423 }
424
424
425 # class initializations
425 # class initializations
426 Magic.__init__(self,self)
426 Magic.__init__(self,self)
427
427
428 # Python source parser/formatter for syntax highlighting
428 # Python source parser/formatter for syntax highlighting
429 pyformat = PyColorize.Parser().format
429 pyformat = PyColorize.Parser().format
430 self.pycolorize = lambda src: pyformat(src,'str',self.rc['colors'])
430 self.pycolorize = lambda src: pyformat(src,'str',self.rc['colors'])
431
431
432 # hooks holds pointers used for user-side customizations
432 # hooks holds pointers used for user-side customizations
433 self.hooks = Struct()
433 self.hooks = Struct()
434
434
435 self.strdispatchers = {}
435 self.strdispatchers = {}
436
436
437 # Set all default hooks, defined in the IPython.hooks module.
437 # Set all default hooks, defined in the IPython.hooks module.
438 hooks = IPython.hooks
438 hooks = IPython.hooks
439 for hook_name in hooks.__all__:
439 for hook_name in hooks.__all__:
440 # default hooks have priority 100, i.e. low; user hooks should have
440 # default hooks have priority 100, i.e. low; user hooks should have
441 # 0-100 priority
441 # 0-100 priority
442 self.set_hook(hook_name,getattr(hooks,hook_name), 100)
442 self.set_hook(hook_name,getattr(hooks,hook_name), 100)
443 #print "bound hook",hook_name
443 #print "bound hook",hook_name
444
444
445 # Flag to mark unconditional exit
445 # Flag to mark unconditional exit
446 self.exit_now = False
446 self.exit_now = False
447
447
448 self.usage_min = """\
448 self.usage_min = """\
449 An enhanced console for Python.
449 An enhanced console for Python.
450 Some of its features are:
450 Some of its features are:
451 - Readline support if the readline library is present.
451 - Readline support if the readline library is present.
452 - Tab completion in the local namespace.
452 - Tab completion in the local namespace.
453 - Logging of input, see command-line options.
453 - Logging of input, see command-line options.
454 - System shell escape via ! , eg !ls.
454 - System shell escape via ! , eg !ls.
455 - Magic commands, starting with a % (like %ls, %pwd, %cd, etc.)
455 - Magic commands, starting with a % (like %ls, %pwd, %cd, etc.)
456 - Keeps track of locally defined variables via %who, %whos.
456 - Keeps track of locally defined variables via %who, %whos.
457 - Show object information with a ? eg ?x or x? (use ?? for more info).
457 - Show object information with a ? eg ?x or x? (use ?? for more info).
458 """
458 """
459 if usage: self.usage = usage
459 if usage: self.usage = usage
460 else: self.usage = self.usage_min
460 else: self.usage = self.usage_min
461
461
462 # Storage
462 # Storage
463 self.rc = rc # This will hold all configuration information
463 self.rc = rc # This will hold all configuration information
464 self.pager = 'less'
464 self.pager = 'less'
465 # temporary files used for various purposes. Deleted at exit.
465 # temporary files used for various purposes. Deleted at exit.
466 self.tempfiles = []
466 self.tempfiles = []
467
467
468 # Keep track of readline usage (later set by init_readline)
468 # Keep track of readline usage (later set by init_readline)
469 self.has_readline = False
469 self.has_readline = False
470
470
471 # template for logfile headers. It gets resolved at runtime by the
471 # template for logfile headers. It gets resolved at runtime by the
472 # logstart method.
472 # logstart method.
473 self.loghead_tpl = \
473 self.loghead_tpl = \
474 """#log# Automatic Logger file. *** THIS MUST BE THE FIRST LINE ***
474 """#log# Automatic Logger file. *** THIS MUST BE THE FIRST LINE ***
475 #log# DO NOT CHANGE THIS LINE OR THE TWO BELOW
475 #log# DO NOT CHANGE THIS LINE OR THE TWO BELOW
476 #log# opts = %s
476 #log# opts = %s
477 #log# args = %s
477 #log# args = %s
478 #log# It is safe to make manual edits below here.
478 #log# It is safe to make manual edits below here.
479 #log#-----------------------------------------------------------------------
479 #log#-----------------------------------------------------------------------
480 """
480 """
481 # for pushd/popd management
481 # for pushd/popd management
482 try:
482 try:
483 self.home_dir = get_home_dir()
483 self.home_dir = get_home_dir()
484 except HomeDirError,msg:
484 except HomeDirError,msg:
485 fatal(msg)
485 fatal(msg)
486
486
487 self.dir_stack = []
487 self.dir_stack = []
488
488
489 # Functions to call the underlying shell.
489 # Functions to call the underlying shell.
490
490
491 # The first is similar to os.system, but it doesn't return a value,
491 # The first is similar to os.system, but it doesn't return a value,
492 # and it allows interpolation of variables in the user's namespace.
492 # and it allows interpolation of variables in the user's namespace.
493 self.system = lambda cmd: \
493 self.system = lambda cmd: \
494 shell(self.var_expand(cmd,depth=2),
494 shell(self.var_expand(cmd,depth=2),
495 header=self.rc.system_header,
495 header=self.rc.system_header,
496 verbose=self.rc.system_verbose)
496 verbose=self.rc.system_verbose)
497
497
498 # These are for getoutput and getoutputerror:
498 # These are for getoutput and getoutputerror:
499 self.getoutput = lambda cmd: \
499 self.getoutput = lambda cmd: \
500 getoutput(self.var_expand(cmd,depth=2),
500 getoutput(self.var_expand(cmd,depth=2),
501 header=self.rc.system_header,
501 header=self.rc.system_header,
502 verbose=self.rc.system_verbose)
502 verbose=self.rc.system_verbose)
503
503
504 self.getoutputerror = lambda cmd: \
504 self.getoutputerror = lambda cmd: \
505 getoutputerror(self.var_expand(cmd,depth=2),
505 getoutputerror(self.var_expand(cmd,depth=2),
506 header=self.rc.system_header,
506 header=self.rc.system_header,
507 verbose=self.rc.system_verbose)
507 verbose=self.rc.system_verbose)
508
508
509
509
510 # keep track of where we started running (mainly for crash post-mortem)
510 # keep track of where we started running (mainly for crash post-mortem)
511 self.starting_dir = os.getcwd()
511 self.starting_dir = os.getcwd()
512
512
513 # Various switches which can be set
513 # Various switches which can be set
514 self.CACHELENGTH = 5000 # this is cheap, it's just text
514 self.CACHELENGTH = 5000 # this is cheap, it's just text
515 self.BANNER = "Python %(version)s on %(platform)s\n" % sys.__dict__
515 self.BANNER = "Python %(version)s on %(platform)s\n" % sys.__dict__
516 self.banner2 = banner2
516 self.banner2 = banner2
517
517
518 # TraceBack handlers:
518 # TraceBack handlers:
519
519
520 # Syntax error handler.
520 # Syntax error handler.
521 self.SyntaxTB = SyntaxTB(color_scheme='NoColor')
521 self.SyntaxTB = SyntaxTB(color_scheme='NoColor')
522
522
523 # The interactive one is initialized with an offset, meaning we always
523 # The interactive one is initialized with an offset, meaning we always
524 # want to remove the topmost item in the traceback, which is our own
524 # want to remove the topmost item in the traceback, which is our own
525 # internal code. Valid modes: ['Plain','Context','Verbose']
525 # internal code. Valid modes: ['Plain','Context','Verbose']
526 self.InteractiveTB = ultraTB.AutoFormattedTB(mode = 'Plain',
526 self.InteractiveTB = ultraTB.AutoFormattedTB(mode = 'Plain',
527 color_scheme='NoColor',
527 color_scheme='NoColor',
528 tb_offset = 1)
528 tb_offset = 1)
529
529
530 # IPython itself shouldn't crash. This will produce a detailed
530 # IPython itself shouldn't crash. This will produce a detailed
531 # post-mortem if it does. But we only install the crash handler for
531 # post-mortem if it does. But we only install the crash handler for
532 # non-threaded shells, the threaded ones use a normal verbose reporter
532 # non-threaded shells, the threaded ones use a normal verbose reporter
533 # and lose the crash handler. This is because exceptions in the main
533 # and lose the crash handler. This is because exceptions in the main
534 # thread (such as in GUI code) propagate directly to sys.excepthook,
534 # thread (such as in GUI code) propagate directly to sys.excepthook,
535 # and there's no point in printing crash dumps for every user exception.
535 # and there's no point in printing crash dumps for every user exception.
536 if self.isthreaded:
536 if self.isthreaded:
537 ipCrashHandler = ultraTB.FormattedTB()
537 ipCrashHandler = ultraTB.FormattedTB()
538 else:
538 else:
539 from IPython import CrashHandler
539 from IPython import CrashHandler
540 ipCrashHandler = CrashHandler.IPythonCrashHandler(self)
540 ipCrashHandler = CrashHandler.IPythonCrashHandler(self)
541 self.set_crash_handler(ipCrashHandler)
541 self.set_crash_handler(ipCrashHandler)
542
542
543 # and add any custom exception handlers the user may have specified
543 # and add any custom exception handlers the user may have specified
544 self.set_custom_exc(*custom_exceptions)
544 self.set_custom_exc(*custom_exceptions)
545
545
546 # indentation management
546 # indentation management
547 self.autoindent = False
547 self.autoindent = False
548 self.indent_current_nsp = 0
548 self.indent_current_nsp = 0
549
549
550 # Make some aliases automatically
550 # Make some aliases automatically
551 # Prepare list of shell aliases to auto-define
551 # Prepare list of shell aliases to auto-define
552 if os.name == 'posix':
552 if os.name == 'posix':
553 auto_alias = ('mkdir mkdir', 'rmdir rmdir',
553 auto_alias = ('mkdir mkdir', 'rmdir rmdir',
554 'mv mv -i','rm rm -i','cp cp -i',
554 'mv mv -i','rm rm -i','cp cp -i',
555 'cat cat','less less','clear clear',
555 'cat cat','less less','clear clear',
556 # a better ls
556 # a better ls
557 'ls ls -F',
557 'ls ls -F',
558 # long ls
558 # long ls
559 'll ls -lF')
559 'll ls -lF')
560 # Extra ls aliases with color, which need special treatment on BSD
560 # Extra ls aliases with color, which need special treatment on BSD
561 # variants
561 # variants
562 ls_extra = ( # color ls
562 ls_extra = ( # color ls
563 'lc ls -F -o --color',
563 'lc ls -F -o --color',
564 # ls normal files only
564 # ls normal files only
565 'lf ls -F -o --color %l | grep ^-',
565 'lf ls -F -o --color %l | grep ^-',
566 # ls symbolic links
566 # ls symbolic links
567 'lk ls -F -o --color %l | grep ^l',
567 'lk ls -F -o --color %l | grep ^l',
568 # directories or links to directories,
568 # directories or links to directories,
569 'ldir ls -F -o --color %l | grep /$',
569 'ldir ls -F -o --color %l | grep /$',
570 # things which are executable
570 # things which are executable
571 'lx ls -F -o --color %l | grep ^-..x',
571 'lx ls -F -o --color %l | grep ^-..x',
572 )
572 )
573 # The BSDs don't ship GNU ls, so they don't understand the
573 # The BSDs don't ship GNU ls, so they don't understand the
574 # --color switch out of the box
574 # --color switch out of the box
575 if 'bsd' in sys.platform:
575 if 'bsd' in sys.platform:
576 ls_extra = ( # ls normal files only
576 ls_extra = ( # ls normal files only
577 'lf ls -lF | grep ^-',
577 'lf ls -lF | grep ^-',
578 # ls symbolic links
578 # ls symbolic links
579 'lk ls -lF | grep ^l',
579 'lk ls -lF | grep ^l',
580 # directories or links to directories,
580 # directories or links to directories,
581 'ldir ls -lF | grep /$',
581 'ldir ls -lF | grep /$',
582 # things which are executable
582 # things which are executable
583 'lx ls -lF | grep ^-..x',
583 'lx ls -lF | grep ^-..x',
584 )
584 )
585 auto_alias = auto_alias + ls_extra
585 auto_alias = auto_alias + ls_extra
586 elif os.name in ['nt','dos']:
586 elif os.name in ['nt','dos']:
587 auto_alias = ('ls dir /on',
587 auto_alias = ('ls dir /on',
588 'ddir dir /ad /on', 'ldir dir /ad /on',
588 'ddir dir /ad /on', 'ldir dir /ad /on',
589 'mkdir mkdir','rmdir rmdir','echo echo',
589 'mkdir mkdir','rmdir rmdir','echo echo',
590 'ren ren','cls cls','copy copy')
590 'ren ren','cls cls','copy copy')
591 else:
591 else:
592 auto_alias = ()
592 auto_alias = ()
593 self.auto_alias = [s.split(None,1) for s in auto_alias]
593 self.auto_alias = [s.split(None,1) for s in auto_alias]
594
594
595 # Produce a public API instance
595 # Produce a public API instance
596 self.api = IPython.ipapi.IPApi(self)
596 self.api = IPython.ipapi.IPApi(self)
597
597
598 # Call the actual (public) initializer
598 # Call the actual (public) initializer
599 self.init_auto_alias()
599 self.init_auto_alias()
600
600
601 # track which builtins we add, so we can clean up later
601 # track which builtins we add, so we can clean up later
602 self.builtins_added = {}
602 self.builtins_added = {}
603 # This method will add the necessary builtins for operation, but
603 # This method will add the necessary builtins for operation, but
604 # tracking what it did via the builtins_added dict.
604 # tracking what it did via the builtins_added dict.
605 self.add_builtins()
605 self.add_builtins()
606
606
607
607
608
608
609 # end __init__
609 # end __init__
610
610
611 def var_expand(self,cmd,depth=0):
611 def var_expand(self,cmd,depth=0):
612 """Expand python variables in a string.
612 """Expand python variables in a string.
613
613
614 The depth argument indicates how many frames above the caller should
614 The depth argument indicates how many frames above the caller should
615 be walked to look for the local namespace where to expand variables.
615 be walked to look for the local namespace where to expand variables.
616
616
617 The global namespace for expansion is always the user's interactive
617 The global namespace for expansion is always the user's interactive
618 namespace.
618 namespace.
619 """
619 """
620
620
621 return str(ItplNS(cmd.replace('#','\#'),
621 return str(ItplNS(cmd.replace('#','\#'),
622 self.user_ns, # globals
622 self.user_ns, # globals
623 # Skip our own frame in searching for locals:
623 # Skip our own frame in searching for locals:
624 sys._getframe(depth+1).f_locals # locals
624 sys._getframe(depth+1).f_locals # locals
625 ))
625 ))
626
626
627 def pre_config_initialization(self):
627 def pre_config_initialization(self):
628 """Pre-configuration init method
628 """Pre-configuration init method
629
629
630 This is called before the configuration files are processed to
630 This is called before the configuration files are processed to
631 prepare the services the config files might need.
631 prepare the services the config files might need.
632
632
633 self.rc already has reasonable default values at this point.
633 self.rc already has reasonable default values at this point.
634 """
634 """
635 rc = self.rc
635 rc = self.rc
636 try:
636 try:
637 self.db = pickleshare.PickleShareDB(rc.ipythondir + "/db")
637 self.db = pickleshare.PickleShareDB(rc.ipythondir + "/db")
638 except exceptions.UnicodeDecodeError:
638 except exceptions.UnicodeDecodeError:
639 print "Your ipythondir can't be decoded to unicode!"
639 print "Your ipythondir can't be decoded to unicode!"
640 print "Please set HOME environment variable to something that"
640 print "Please set HOME environment variable to something that"
641 print r"only has ASCII characters, e.g. c:\home"
641 print r"only has ASCII characters, e.g. c:\home"
642 print "Now it is",rc.ipythondir
642 print "Now it is",rc.ipythondir
643 sys.exit()
643 sys.exit()
644 self.shadowhist = IPython.history.ShadowHist(self.db)
644 self.shadowhist = IPython.history.ShadowHist(self.db)
645
645
646
646
647 def post_config_initialization(self):
647 def post_config_initialization(self):
648 """Post configuration init method
648 """Post configuration init method
649
649
650 This is called after the configuration files have been processed to
650 This is called after the configuration files have been processed to
651 'finalize' the initialization."""
651 'finalize' the initialization."""
652
652
653 rc = self.rc
653 rc = self.rc
654
654
655 # Object inspector
655 # Object inspector
656 self.inspector = OInspect.Inspector(OInspect.InspectColors,
656 self.inspector = OInspect.Inspector(OInspect.InspectColors,
657 PyColorize.ANSICodeColors,
657 PyColorize.ANSICodeColors,
658 'NoColor',
658 'NoColor',
659 rc.object_info_string_level)
659 rc.object_info_string_level)
660
660
661 self.rl_next_input = None
661 self.rl_next_input = None
662 self.rl_do_indent = False
662 self.rl_do_indent = False
663 # Load readline proper
663 # Load readline proper
664 if rc.readline:
664 if rc.readline:
665 self.init_readline()
665 self.init_readline()
666
666
667
667
668 # local shortcut, this is used a LOT
668 # local shortcut, this is used a LOT
669 self.log = self.logger.log
669 self.log = self.logger.log
670
670
671 # Initialize cache, set in/out prompts and printing system
671 # Initialize cache, set in/out prompts and printing system
672 self.outputcache = CachedOutput(self,
672 self.outputcache = CachedOutput(self,
673 rc.cache_size,
673 rc.cache_size,
674 rc.pprint,
674 rc.pprint,
675 input_sep = rc.separate_in,
675 input_sep = rc.separate_in,
676 output_sep = rc.separate_out,
676 output_sep = rc.separate_out,
677 output_sep2 = rc.separate_out2,
677 output_sep2 = rc.separate_out2,
678 ps1 = rc.prompt_in1,
678 ps1 = rc.prompt_in1,
679 ps2 = rc.prompt_in2,
679 ps2 = rc.prompt_in2,
680 ps_out = rc.prompt_out,
680 ps_out = rc.prompt_out,
681 pad_left = rc.prompts_pad_left)
681 pad_left = rc.prompts_pad_left)
682
682
683 # user may have over-ridden the default print hook:
683 # user may have over-ridden the default print hook:
684 try:
684 try:
685 self.outputcache.__class__.display = self.hooks.display
685 self.outputcache.__class__.display = self.hooks.display
686 except AttributeError:
686 except AttributeError:
687 pass
687 pass
688
688
689 # I don't like assigning globally to sys, because it means when
689 # I don't like assigning globally to sys, because it means when
690 # embedding instances, each embedded instance overrides the previous
690 # embedding instances, each embedded instance overrides the previous
691 # choice. But sys.displayhook seems to be called internally by exec,
691 # choice. But sys.displayhook seems to be called internally by exec,
692 # so I don't see a way around it. We first save the original and then
692 # so I don't see a way around it. We first save the original and then
693 # overwrite it.
693 # overwrite it.
694 self.sys_displayhook = sys.displayhook
694 self.sys_displayhook = sys.displayhook
695 sys.displayhook = self.outputcache
695 sys.displayhook = self.outputcache
696
696
697 # Do a proper resetting of doctest, including the necessary displayhook
697 # Do a proper resetting of doctest, including the necessary displayhook
698 # monkeypatching
698 # monkeypatching
699 doctest_reload()
699 doctest_reload()
700
700
701 # Set user colors (don't do it in the constructor above so that it
701 # Set user colors (don't do it in the constructor above so that it
702 # doesn't crash if colors option is invalid)
702 # doesn't crash if colors option is invalid)
703 self.magic_colors(rc.colors)
703 self.magic_colors(rc.colors)
704
704
705 # Set calling of pdb on exceptions
705 # Set calling of pdb on exceptions
706 self.call_pdb = rc.pdb
706 self.call_pdb = rc.pdb
707
707
708 # Load user aliases
708 # Load user aliases
709 for alias in rc.alias:
709 for alias in rc.alias:
710 self.magic_alias(alias)
710 self.magic_alias(alias)
711
711
712 self.hooks.late_startup_hook()
712 self.hooks.late_startup_hook()
713
713
714 batchrun = False
714 batchrun = False
715 for batchfile in [path(arg) for arg in self.rc.args
715 for batchfile in [path(arg) for arg in self.rc.args
716 if arg.lower().endswith('.ipy')]:
716 if arg.lower().endswith('.ipy')]:
717 if not batchfile.isfile():
717 if not batchfile.isfile():
718 print "No such batch file:", batchfile
718 print "No such batch file:", batchfile
719 continue
719 continue
720 self.api.runlines(batchfile.text())
720 self.api.runlines(batchfile.text())
721 batchrun = True
721 batchrun = True
722 # without -i option, exit after running the batch file
722 # without -i option, exit after running the batch file
723 if batchrun and not self.rc.interact:
723 if batchrun and not self.rc.interact:
724 self.exit_now = True
724 self.exit_now = True
725
725
726 def add_builtins(self):
726 def add_builtins(self):
727 """Store ipython references into the builtin namespace.
727 """Store ipython references into the builtin namespace.
728
728
729 Some parts of ipython operate via builtins injected here, which hold a
729 Some parts of ipython operate via builtins injected here, which hold a
730 reference to IPython itself."""
730 reference to IPython itself."""
731
731
732 # TODO: deprecate all except _ip; 'jobs' should be installed
732 # TODO: deprecate all except _ip; 'jobs' should be installed
733 # by an extension and the rest are under _ip, ipalias is redundant
733 # by an extension and the rest are under _ip, ipalias is redundant
734 builtins_new = dict(__IPYTHON__ = self,
734 builtins_new = dict(__IPYTHON__ = self,
735 ip_set_hook = self.set_hook,
735 ip_set_hook = self.set_hook,
736 jobs = self.jobs,
736 jobs = self.jobs,
737 ipmagic = wrap_deprecated(self.ipmagic,'_ip.magic()'),
737 ipmagic = wrap_deprecated(self.ipmagic,'_ip.magic()'),
738 ipalias = wrap_deprecated(self.ipalias),
738 ipalias = wrap_deprecated(self.ipalias),
739 ipsystem = wrap_deprecated(self.ipsystem,'_ip.system()'),
739 ipsystem = wrap_deprecated(self.ipsystem,'_ip.system()'),
740 _ip = self.api
740 _ip = self.api
741 )
741 )
742 for biname,bival in builtins_new.items():
742 for biname,bival in builtins_new.items():
743 try:
743 try:
744 # store the orignal value so we can restore it
744 # store the orignal value so we can restore it
745 self.builtins_added[biname] = __builtin__.__dict__[biname]
745 self.builtins_added[biname] = __builtin__.__dict__[biname]
746 except KeyError:
746 except KeyError:
747 # or mark that it wasn't defined, and we'll just delete it at
747 # or mark that it wasn't defined, and we'll just delete it at
748 # cleanup
748 # cleanup
749 self.builtins_added[biname] = Undefined
749 self.builtins_added[biname] = Undefined
750 __builtin__.__dict__[biname] = bival
750 __builtin__.__dict__[biname] = bival
751
751
752 # Keep in the builtins a flag for when IPython is active. We set it
752 # Keep in the builtins a flag for when IPython is active. We set it
753 # with setdefault so that multiple nested IPythons don't clobber one
753 # with setdefault so that multiple nested IPythons don't clobber one
754 # another. Each will increase its value by one upon being activated,
754 # another. Each will increase its value by one upon being activated,
755 # which also gives us a way to determine the nesting level.
755 # which also gives us a way to determine the nesting level.
756 __builtin__.__dict__.setdefault('__IPYTHON__active',0)
756 __builtin__.__dict__.setdefault('__IPYTHON__active',0)
757
757
758 def clean_builtins(self):
758 def clean_builtins(self):
759 """Remove any builtins which might have been added by add_builtins, or
759 """Remove any builtins which might have been added by add_builtins, or
760 restore overwritten ones to their previous values."""
760 restore overwritten ones to their previous values."""
761 for biname,bival in self.builtins_added.items():
761 for biname,bival in self.builtins_added.items():
762 if bival is Undefined:
762 if bival is Undefined:
763 del __builtin__.__dict__[biname]
763 del __builtin__.__dict__[biname]
764 else:
764 else:
765 __builtin__.__dict__[biname] = bival
765 __builtin__.__dict__[biname] = bival
766 self.builtins_added.clear()
766 self.builtins_added.clear()
767
767
768 def set_hook(self,name,hook, priority = 50, str_key = None, re_key = None):
768 def set_hook(self,name,hook, priority = 50, str_key = None, re_key = None):
769 """set_hook(name,hook) -> sets an internal IPython hook.
769 """set_hook(name,hook) -> sets an internal IPython hook.
770
770
771 IPython exposes some of its internal API as user-modifiable hooks. By
771 IPython exposes some of its internal API as user-modifiable hooks. By
772 adding your function to one of these hooks, you can modify IPython's
772 adding your function to one of these hooks, you can modify IPython's
773 behavior to call at runtime your own routines."""
773 behavior to call at runtime your own routines."""
774
774
775 # At some point in the future, this should validate the hook before it
775 # At some point in the future, this should validate the hook before it
776 # accepts it. Probably at least check that the hook takes the number
776 # accepts it. Probably at least check that the hook takes the number
777 # of args it's supposed to.
777 # of args it's supposed to.
778
778
779 f = new.instancemethod(hook,self,self.__class__)
779 f = new.instancemethod(hook,self,self.__class__)
780
780
781 # check if the hook is for strdispatcher first
781 # check if the hook is for strdispatcher first
782 if str_key is not None:
782 if str_key is not None:
783 sdp = self.strdispatchers.get(name, StrDispatch())
783 sdp = self.strdispatchers.get(name, StrDispatch())
784 sdp.add_s(str_key, f, priority )
784 sdp.add_s(str_key, f, priority )
785 self.strdispatchers[name] = sdp
785 self.strdispatchers[name] = sdp
786 return
786 return
787 if re_key is not None:
787 if re_key is not None:
788 sdp = self.strdispatchers.get(name, StrDispatch())
788 sdp = self.strdispatchers.get(name, StrDispatch())
789 sdp.add_re(re.compile(re_key), f, priority )
789 sdp.add_re(re.compile(re_key), f, priority )
790 self.strdispatchers[name] = sdp
790 self.strdispatchers[name] = sdp
791 return
791 return
792
792
793 dp = getattr(self.hooks, name, None)
793 dp = getattr(self.hooks, name, None)
794 if name not in IPython.hooks.__all__:
794 if name not in IPython.hooks.__all__:
795 print "Warning! Hook '%s' is not one of %s" % (name, IPython.hooks.__all__ )
795 print "Warning! Hook '%s' is not one of %s" % (name, IPython.hooks.__all__ )
796 if not dp:
796 if not dp:
797 dp = IPython.hooks.CommandChainDispatcher()
797 dp = IPython.hooks.CommandChainDispatcher()
798
798
799 try:
799 try:
800 dp.add(f,priority)
800 dp.add(f,priority)
801 except AttributeError:
801 except AttributeError:
802 # it was not commandchain, plain old func - replace
802 # it was not commandchain, plain old func - replace
803 dp = f
803 dp = f
804
804
805 setattr(self.hooks,name, dp)
805 setattr(self.hooks,name, dp)
806
806
807
807
808 #setattr(self.hooks,name,new.instancemethod(hook,self,self.__class__))
808 #setattr(self.hooks,name,new.instancemethod(hook,self,self.__class__))
809
809
810 def set_crash_handler(self,crashHandler):
810 def set_crash_handler(self,crashHandler):
811 """Set the IPython crash handler.
811 """Set the IPython crash handler.
812
812
813 This must be a callable with a signature suitable for use as
813 This must be a callable with a signature suitable for use as
814 sys.excepthook."""
814 sys.excepthook."""
815
815
816 # Install the given crash handler as the Python exception hook
816 # Install the given crash handler as the Python exception hook
817 sys.excepthook = crashHandler
817 sys.excepthook = crashHandler
818
818
819 # The instance will store a pointer to this, so that runtime code
819 # The instance will store a pointer to this, so that runtime code
820 # (such as magics) can access it. This is because during the
820 # (such as magics) can access it. This is because during the
821 # read-eval loop, it gets temporarily overwritten (to deal with GUI
821 # read-eval loop, it gets temporarily overwritten (to deal with GUI
822 # frameworks).
822 # frameworks).
823 self.sys_excepthook = sys.excepthook
823 self.sys_excepthook = sys.excepthook
824
824
825
825
826 def set_custom_exc(self,exc_tuple,handler):
826 def set_custom_exc(self,exc_tuple,handler):
827 """set_custom_exc(exc_tuple,handler)
827 """set_custom_exc(exc_tuple,handler)
828
828
829 Set a custom exception handler, which will be called if any of the
829 Set a custom exception handler, which will be called if any of the
830 exceptions in exc_tuple occur in the mainloop (specifically, in the
830 exceptions in exc_tuple occur in the mainloop (specifically, in the
831 runcode() method.
831 runcode() method.
832
832
833 Inputs:
833 Inputs:
834
834
835 - exc_tuple: a *tuple* of valid exceptions to call the defined
835 - exc_tuple: a *tuple* of valid exceptions to call the defined
836 handler for. It is very important that you use a tuple, and NOT A
836 handler for. It is very important that you use a tuple, and NOT A
837 LIST here, because of the way Python's except statement works. If
837 LIST here, because of the way Python's except statement works. If
838 you only want to trap a single exception, use a singleton tuple:
838 you only want to trap a single exception, use a singleton tuple:
839
839
840 exc_tuple == (MyCustomException,)
840 exc_tuple == (MyCustomException,)
841
841
842 - handler: this must be defined as a function with the following
842 - handler: this must be defined as a function with the following
843 basic interface: def my_handler(self,etype,value,tb).
843 basic interface: def my_handler(self,etype,value,tb).
844
844
845 This will be made into an instance method (via new.instancemethod)
845 This will be made into an instance method (via new.instancemethod)
846 of IPython itself, and it will be called if any of the exceptions
846 of IPython itself, and it will be called if any of the exceptions
847 listed in the exc_tuple are caught. If the handler is None, an
847 listed in the exc_tuple are caught. If the handler is None, an
848 internal basic one is used, which just prints basic info.
848 internal basic one is used, which just prints basic info.
849
849
850 WARNING: by putting in your own exception handler into IPython's main
850 WARNING: by putting in your own exception handler into IPython's main
851 execution loop, you run a very good chance of nasty crashes. This
851 execution loop, you run a very good chance of nasty crashes. This
852 facility should only be used if you really know what you are doing."""
852 facility should only be used if you really know what you are doing."""
853
853
854 assert type(exc_tuple)==type(()) , \
854 assert type(exc_tuple)==type(()) , \
855 "The custom exceptions must be given AS A TUPLE."
855 "The custom exceptions must be given AS A TUPLE."
856
856
857 def dummy_handler(self,etype,value,tb):
857 def dummy_handler(self,etype,value,tb):
858 print '*** Simple custom exception handler ***'
858 print '*** Simple custom exception handler ***'
859 print 'Exception type :',etype
859 print 'Exception type :',etype
860 print 'Exception value:',value
860 print 'Exception value:',value
861 print 'Traceback :',tb
861 print 'Traceback :',tb
862 print 'Source code :','\n'.join(self.buffer)
862 print 'Source code :','\n'.join(self.buffer)
863
863
864 if handler is None: handler = dummy_handler
864 if handler is None: handler = dummy_handler
865
865
866 self.CustomTB = new.instancemethod(handler,self,self.__class__)
866 self.CustomTB = new.instancemethod(handler,self,self.__class__)
867 self.custom_exceptions = exc_tuple
867 self.custom_exceptions = exc_tuple
868
868
869 def set_custom_completer(self,completer,pos=0):
869 def set_custom_completer(self,completer,pos=0):
870 """set_custom_completer(completer,pos=0)
870 """set_custom_completer(completer,pos=0)
871
871
872 Adds a new custom completer function.
872 Adds a new custom completer function.
873
873
874 The position argument (defaults to 0) is the index in the completers
874 The position argument (defaults to 0) is the index in the completers
875 list where you want the completer to be inserted."""
875 list where you want the completer to be inserted."""
876
876
877 newcomp = new.instancemethod(completer,self.Completer,
877 newcomp = new.instancemethod(completer,self.Completer,
878 self.Completer.__class__)
878 self.Completer.__class__)
879 self.Completer.matchers.insert(pos,newcomp)
879 self.Completer.matchers.insert(pos,newcomp)
880
880
881 def set_completer(self):
881 def set_completer(self):
882 """reset readline's completer to be our own."""
882 """reset readline's completer to be our own."""
883 self.readline.set_completer(self.Completer.complete)
883 self.readline.set_completer(self.Completer.complete)
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.getapi().defalias(alias,cmd)
1033 self.getapi().defalias(alias,cmd)
1034
1034
1035
1035
1036 def alias_table_validate(self,verbose=0):
1036 def alias_table_validate(self,verbose=0):
1037 """Update information about the alias table.
1037 """Update information about the alias table.
1038
1038
1039 In particular, make sure no Python keywords/builtins are in it."""
1039 In particular, make sure no Python keywords/builtins are in it."""
1040
1040
1041 no_alias = self.no_alias
1041 no_alias = self.no_alias
1042 for k in self.alias_table.keys():
1042 for k in self.alias_table.keys():
1043 if k in no_alias:
1043 if k in no_alias:
1044 del self.alias_table[k]
1044 del self.alias_table[k]
1045 if verbose:
1045 if verbose:
1046 print ("Deleting alias <%s>, it's a Python "
1046 print ("Deleting alias <%s>, it's a Python "
1047 "keyword or builtin." % k)
1047 "keyword or builtin." % k)
1048
1048
1049 def set_autoindent(self,value=None):
1049 def set_autoindent(self,value=None):
1050 """Set the autoindent flag, checking for readline support.
1050 """Set the autoindent flag, checking for readline support.
1051
1051
1052 If called with no arguments, it acts as a toggle."""
1052 If called with no arguments, it acts as a toggle."""
1053
1053
1054 if not self.has_readline:
1054 if not self.has_readline:
1055 if os.name == 'posix':
1055 if os.name == 'posix':
1056 warn("The auto-indent feature requires the readline library")
1056 warn("The auto-indent feature requires the readline library")
1057 self.autoindent = 0
1057 self.autoindent = 0
1058 return
1058 return
1059 if value is None:
1059 if value is None:
1060 self.autoindent = not self.autoindent
1060 self.autoindent = not self.autoindent
1061 else:
1061 else:
1062 self.autoindent = value
1062 self.autoindent = value
1063
1063
1064 def rc_set_toggle(self,rc_field,value=None):
1064 def rc_set_toggle(self,rc_field,value=None):
1065 """Set or toggle a field in IPython's rc config. structure.
1065 """Set or toggle a field in IPython's rc config. structure.
1066
1066
1067 If called with no arguments, it acts as a toggle.
1067 If called with no arguments, it acts as a toggle.
1068
1068
1069 If called with a non-existent field, the resulting AttributeError
1069 If called with a non-existent field, the resulting AttributeError
1070 exception will propagate out."""
1070 exception will propagate out."""
1071
1071
1072 rc_val = getattr(self.rc,rc_field)
1072 rc_val = getattr(self.rc,rc_field)
1073 if value is None:
1073 if value is None:
1074 value = not rc_val
1074 value = not rc_val
1075 setattr(self.rc,rc_field,value)
1075 setattr(self.rc,rc_field,value)
1076
1076
1077 def user_setup(self,ipythondir,rc_suffix,mode='install'):
1077 def user_setup(self,ipythondir,rc_suffix,mode='install'):
1078 """Install the user configuration directory.
1078 """Install the user configuration directory.
1079
1079
1080 Can be called when running for the first time or to upgrade the user's
1080 Can be called when running for the first time or to upgrade the user's
1081 .ipython/ directory with the mode parameter. Valid modes are 'install'
1081 .ipython/ directory with the mode parameter. Valid modes are 'install'
1082 and 'upgrade'."""
1082 and 'upgrade'."""
1083
1083
1084 def wait():
1084 def wait():
1085 try:
1085 try:
1086 raw_input("Please press <RETURN> to start IPython.")
1086 raw_input("Please press <RETURN> to start IPython.")
1087 except EOFError:
1087 except EOFError:
1088 print >> Term.cout
1088 print >> Term.cout
1089 print '*'*70
1089 print '*'*70
1090
1090
1091 cwd = os.getcwd() # remember where we started
1091 cwd = os.getcwd() # remember where we started
1092 glb = glob.glob
1092 glb = glob.glob
1093 print '*'*70
1093 print '*'*70
1094 if mode == 'install':
1094 if mode == 'install':
1095 print \
1095 print \
1096 """Welcome to IPython. I will try to create a personal configuration directory
1096 """Welcome to IPython. I will try to create a personal configuration directory
1097 where you can customize many aspects of IPython's functionality in:\n"""
1097 where you can customize many aspects of IPython's functionality in:\n"""
1098 else:
1098 else:
1099 print 'I am going to upgrade your configuration in:'
1099 print 'I am going to upgrade your configuration in:'
1100
1100
1101 print ipythondir
1101 print ipythondir
1102
1102
1103 rcdirend = os.path.join('IPython','UserConfig')
1103 rcdirend = os.path.join('IPython','UserConfig')
1104 cfg = lambda d: os.path.join(d,rcdirend)
1104 cfg = lambda d: os.path.join(d,rcdirend)
1105 try:
1105 try:
1106 rcdir = filter(os.path.isdir,map(cfg,sys.path))[0]
1106 rcdir = filter(os.path.isdir,map(cfg,sys.path))[0]
1107 print "Initializing from configuration",rcdir
1107 print "Initializing from configuration",rcdir
1108 except IndexError:
1108 except IndexError:
1109 warning = """
1109 warning = """
1110 Installation error. IPython's directory was not found.
1110 Installation error. IPython's directory was not found.
1111
1111
1112 Check the following:
1112 Check the following:
1113
1113
1114 The ipython/IPython directory should be in a directory belonging to your
1114 The ipython/IPython directory should be in a directory belonging to your
1115 PYTHONPATH environment variable (that is, it should be in a directory
1115 PYTHONPATH environment variable (that is, it should be in a directory
1116 belonging to sys.path). You can copy it explicitly there or just link to it.
1116 belonging to sys.path). You can copy it explicitly there or just link to it.
1117
1117
1118 IPython will create a minimal default configuration for you.
1118 IPython will create a minimal default configuration for you.
1119
1119
1120 """
1120 """
1121 warn(warning)
1121 warn(warning)
1122 wait()
1122 wait()
1123
1123
1124 if sys.platform =='win32':
1124 if sys.platform =='win32':
1125 inif = 'ipythonrc.ini'
1125 inif = 'ipythonrc.ini'
1126 else:
1126 else:
1127 inif = 'ipythonrc'
1127 inif = 'ipythonrc'
1128 minimal_setup = {'ipy_user_conf.py' : 'import ipy_defaults', inif : '# intentionally left blank' }
1128 minimal_setup = {'ipy_user_conf.py' : 'import ipy_defaults', inif : '# intentionally left blank' }
1129 os.makedirs(ipythondir)
1129 os.makedirs(ipythondir)
1130 for f, cont in minimal_setup.items():
1130 for f, cont in minimal_setup.items():
1131 open(ipythondir + '/' + f,'w').write(cont)
1131 open(ipythondir + '/' + f,'w').write(cont)
1132
1132
1133 return
1133 return
1134
1134
1135 if mode == 'install':
1135 if mode == 'install':
1136 try:
1136 try:
1137 shutil.copytree(rcdir,ipythondir)
1137 shutil.copytree(rcdir,ipythondir)
1138 os.chdir(ipythondir)
1138 os.chdir(ipythondir)
1139 rc_files = glb("ipythonrc*")
1139 rc_files = glb("ipythonrc*")
1140 for rc_file in rc_files:
1140 for rc_file in rc_files:
1141 os.rename(rc_file,rc_file+rc_suffix)
1141 os.rename(rc_file,rc_file+rc_suffix)
1142 except:
1142 except:
1143 warning = """
1143 warning = """
1144
1144
1145 There was a problem with the installation:
1145 There was a problem with the installation:
1146 %s
1146 %s
1147 Try to correct it or contact the developers if you think it's a bug.
1147 Try to correct it or contact the developers if you think it's a bug.
1148 IPython will proceed with builtin defaults.""" % sys.exc_info()[1]
1148 IPython will proceed with builtin defaults.""" % sys.exc_info()[1]
1149 warn(warning)
1149 warn(warning)
1150 wait()
1150 wait()
1151 return
1151 return
1152
1152
1153 elif mode == 'upgrade':
1153 elif mode == 'upgrade':
1154 try:
1154 try:
1155 os.chdir(ipythondir)
1155 os.chdir(ipythondir)
1156 except:
1156 except:
1157 print """
1157 print """
1158 Can not upgrade: changing to directory %s failed. Details:
1158 Can not upgrade: changing to directory %s failed. Details:
1159 %s
1159 %s
1160 """ % (ipythondir,sys.exc_info()[1])
1160 """ % (ipythondir,sys.exc_info()[1])
1161 wait()
1161 wait()
1162 return
1162 return
1163 else:
1163 else:
1164 sources = glb(os.path.join(rcdir,'[A-Za-z]*'))
1164 sources = glb(os.path.join(rcdir,'[A-Za-z]*'))
1165 for new_full_path in sources:
1165 for new_full_path in sources:
1166 new_filename = os.path.basename(new_full_path)
1166 new_filename = os.path.basename(new_full_path)
1167 if new_filename.startswith('ipythonrc'):
1167 if new_filename.startswith('ipythonrc'):
1168 new_filename = new_filename + rc_suffix
1168 new_filename = new_filename + rc_suffix
1169 # The config directory should only contain files, skip any
1169 # The config directory should only contain files, skip any
1170 # directories which may be there (like CVS)
1170 # directories which may be there (like CVS)
1171 if os.path.isdir(new_full_path):
1171 if os.path.isdir(new_full_path):
1172 continue
1172 continue
1173 if os.path.exists(new_filename):
1173 if os.path.exists(new_filename):
1174 old_file = new_filename+'.old'
1174 old_file = new_filename+'.old'
1175 if os.path.exists(old_file):
1175 if os.path.exists(old_file):
1176 os.remove(old_file)
1176 os.remove(old_file)
1177 os.rename(new_filename,old_file)
1177 os.rename(new_filename,old_file)
1178 shutil.copy(new_full_path,new_filename)
1178 shutil.copy(new_full_path,new_filename)
1179 else:
1179 else:
1180 raise ValueError,'unrecognized mode for install:',`mode`
1180 raise ValueError,'unrecognized mode for install:',`mode`
1181
1181
1182 # Fix line-endings to those native to each platform in the config
1182 # Fix line-endings to those native to each platform in the config
1183 # directory.
1183 # directory.
1184 try:
1184 try:
1185 os.chdir(ipythondir)
1185 os.chdir(ipythondir)
1186 except:
1186 except:
1187 print """
1187 print """
1188 Problem: changing to directory %s failed.
1188 Problem: changing to directory %s failed.
1189 Details:
1189 Details:
1190 %s
1190 %s
1191
1191
1192 Some configuration files may have incorrect line endings. This should not
1192 Some configuration files may have incorrect line endings. This should not
1193 cause any problems during execution. """ % (ipythondir,sys.exc_info()[1])
1193 cause any problems during execution. """ % (ipythondir,sys.exc_info()[1])
1194 wait()
1194 wait()
1195 else:
1195 else:
1196 for fname in glb('ipythonrc*'):
1196 for fname in glb('ipythonrc*'):
1197 try:
1197 try:
1198 native_line_ends(fname,backup=0)
1198 native_line_ends(fname,backup=0)
1199 except IOError:
1199 except IOError:
1200 pass
1200 pass
1201
1201
1202 if mode == 'install':
1202 if mode == 'install':
1203 print """
1203 print """
1204 Successful installation!
1204 Successful installation!
1205
1205
1206 Please read the sections 'Initial Configuration' and 'Quick Tips' in the
1206 Please read the sections 'Initial Configuration' and 'Quick Tips' in the
1207 IPython manual (there are both HTML and PDF versions supplied with the
1207 IPython manual (there are both HTML and PDF versions supplied with the
1208 distribution) to make sure that your system environment is properly configured
1208 distribution) to make sure that your system environment is properly configured
1209 to take advantage of IPython's features.
1209 to take advantage of IPython's features.
1210
1210
1211 Important note: the configuration system has changed! The old system is
1211 Important note: the configuration system has changed! The old system is
1212 still in place, but its setting may be partly overridden by the settings in
1212 still in place, but its setting may be partly overridden by the settings in
1213 "~/.ipython/ipy_user_conf.py" config file. Please take a look at the file
1213 "~/.ipython/ipy_user_conf.py" config file. Please take a look at the file
1214 if some of the new settings bother you.
1214 if some of the new settings bother you.
1215
1215
1216 """
1216 """
1217 else:
1217 else:
1218 print """
1218 print """
1219 Successful upgrade!
1219 Successful upgrade!
1220
1220
1221 All files in your directory:
1221 All files in your directory:
1222 %(ipythondir)s
1222 %(ipythondir)s
1223 which would have been overwritten by the upgrade were backed up with a .old
1223 which would have been overwritten by the upgrade were backed up with a .old
1224 extension. If you had made particular customizations in those files you may
1224 extension. If you had made particular customizations in those files you may
1225 want to merge them back into the new files.""" % locals()
1225 want to merge them back into the new files.""" % locals()
1226 wait()
1226 wait()
1227 os.chdir(cwd)
1227 os.chdir(cwd)
1228 # end user_setup()
1228 # end user_setup()
1229
1229
1230 def atexit_operations(self):
1230 def atexit_operations(self):
1231 """This will be executed at the time of exit.
1231 """This will be executed at the time of exit.
1232
1232
1233 Saving of persistent data should be performed here. """
1233 Saving of persistent data should be performed here. """
1234
1234
1235 #print '*** IPython exit cleanup ***' # dbg
1235 #print '*** IPython exit cleanup ***' # dbg
1236 # input history
1236 # input history
1237 self.savehist()
1237 self.savehist()
1238
1238
1239 # Cleanup all tempfiles left around
1239 # Cleanup all tempfiles left around
1240 for tfile in self.tempfiles:
1240 for tfile in self.tempfiles:
1241 try:
1241 try:
1242 os.unlink(tfile)
1242 os.unlink(tfile)
1243 except OSError:
1243 except OSError:
1244 pass
1244 pass
1245
1245
1246 self.hooks.shutdown_hook()
1246 self.hooks.shutdown_hook()
1247
1247
1248 def savehist(self):
1248 def savehist(self):
1249 """Save input history to a file (via readline library)."""
1249 """Save input history to a file (via readline library)."""
1250 try:
1250 try:
1251 self.readline.write_history_file(self.histfile)
1251 self.readline.write_history_file(self.histfile)
1252 except:
1252 except:
1253 print 'Unable to save IPython command history to file: ' + \
1253 print 'Unable to save IPython command history to file: ' + \
1254 `self.histfile`
1254 `self.histfile`
1255
1255
1256 def reloadhist(self):
1256 def reloadhist(self):
1257 """Reload the input history from disk file."""
1257 """Reload the input history from disk file."""
1258
1258
1259 if self.has_readline:
1259 if self.has_readline:
1260 self.readline.clear_history()
1260 self.readline.clear_history()
1261 self.readline.read_history_file(self.shell.histfile)
1261 self.readline.read_history_file(self.shell.histfile)
1262
1262
1263 def history_saving_wrapper(self, func):
1263 def history_saving_wrapper(self, func):
1264 """ Wrap func for readline history saving
1264 """ Wrap func for readline history saving
1265
1265
1266 Convert func into callable that saves & restores
1266 Convert func into callable that saves & restores
1267 history around the call """
1267 history around the call """
1268
1268
1269 if not self.has_readline:
1269 if not self.has_readline:
1270 return func
1270 return func
1271
1271
1272 def wrapper():
1272 def wrapper():
1273 self.savehist()
1273 self.savehist()
1274 try:
1274 try:
1275 func()
1275 func()
1276 finally:
1276 finally:
1277 readline.read_history_file(self.histfile)
1277 readline.read_history_file(self.histfile)
1278 return wrapper
1278 return wrapper
1279
1279
1280
1280
1281 def pre_readline(self):
1281 def pre_readline(self):
1282 """readline hook to be used at the start of each line.
1282 """readline hook to be used at the start of each line.
1283
1283
1284 Currently it handles auto-indent only."""
1284 Currently it handles auto-indent only."""
1285
1285
1286 #debugx('self.indent_current_nsp','pre_readline:')
1286 #debugx('self.indent_current_nsp','pre_readline:')
1287
1287
1288 if self.rl_do_indent:
1288 if self.rl_do_indent:
1289 self.readline.insert_text(self.indent_current_str())
1289 self.readline.insert_text(self.indent_current_str())
1290 if self.rl_next_input is not None:
1290 if self.rl_next_input is not None:
1291 self.readline.insert_text(self.rl_next_input)
1291 self.readline.insert_text(self.rl_next_input)
1292 self.rl_next_input = None
1292 self.rl_next_input = None
1293
1293
1294 def init_readline(self):
1294 def init_readline(self):
1295 """Command history completion/saving/reloading."""
1295 """Command history completion/saving/reloading."""
1296
1296
1297
1297
1298 import IPython.rlineimpl as readline
1298 import IPython.rlineimpl as readline
1299
1299
1300 if not readline.have_readline:
1300 if not readline.have_readline:
1301 self.has_readline = 0
1301 self.has_readline = 0
1302 self.readline = None
1302 self.readline = None
1303 # no point in bugging windows users with this every time:
1303 # no point in bugging windows users with this every time:
1304 warn('Readline services not available on this platform.')
1304 warn('Readline services not available on this platform.')
1305 else:
1305 else:
1306 sys.modules['readline'] = readline
1306 sys.modules['readline'] = readline
1307 import atexit
1307 import atexit
1308 from IPython.completer import IPCompleter
1308 from IPython.completer import IPCompleter
1309 self.Completer = IPCompleter(self,
1309 self.Completer = IPCompleter(self,
1310 self.user_ns,
1310 self.user_ns,
1311 self.user_global_ns,
1311 self.user_global_ns,
1312 self.rc.readline_omit__names,
1312 self.rc.readline_omit__names,
1313 self.alias_table)
1313 self.alias_table)
1314 sdisp = self.strdispatchers.get('complete_command', StrDispatch())
1314 sdisp = self.strdispatchers.get('complete_command', StrDispatch())
1315 self.strdispatchers['complete_command'] = sdisp
1315 self.strdispatchers['complete_command'] = sdisp
1316 self.Completer.custom_completers = sdisp
1316 self.Completer.custom_completers = sdisp
1317 # Platform-specific configuration
1317 # Platform-specific configuration
1318 if os.name == 'nt':
1318 if os.name == 'nt':
1319 self.readline_startup_hook = readline.set_pre_input_hook
1319 self.readline_startup_hook = readline.set_pre_input_hook
1320 else:
1320 else:
1321 self.readline_startup_hook = readline.set_startup_hook
1321 self.readline_startup_hook = readline.set_startup_hook
1322
1322
1323 # Load user's initrc file (readline config)
1323 # Load user's initrc file (readline config)
1324 inputrc_name = os.environ.get('INPUTRC')
1324 # Or if libedit is used, load editrc.
1325 if inputrc_name is None:
1325 inputrc_name = os.environ.get('INPUTRC')
1326 home_dir = get_home_dir()
1326 if inputrc_name is None:
1327 if home_dir is not None:
1327 home_dir = get_home_dir()
1328 inputrc_name = os.path.join(home_dir,'.inputrc')
1328 if home_dir is not None:
1329 if os.path.isfile(inputrc_name):
1329 inputrc_name = '.inputrc'
1330 try:
1330 if readline.uses_libedit:
1331 readline.read_init_file(inputrc_name)
1331 inputrc_name = '.editrc'
1332 except:
1332 inputrc_name = os.path.join(home_dir, inputrc_name)
1333 warn('Problems reading readline initialization file <%s>'
1333 if os.path.isfile(inputrc_name):
1334 % inputrc_name)
1334 try:
1335
1335 readline.read_init_file(inputrc_name)
1336 self.has_readline = 1
1336 except:
1337 self.readline = readline
1337 warn('Problems reading readline initialization file <%s>'
1338 # save this in sys so embedded copies can restore it properly
1338 % inputrc_name)
1339 sys.ipcompleter = self.Completer.complete
1339
1340 self.set_completer()
1340 self.has_readline = 1
1341
1341 self.readline = readline
1342 # Configure readline according to user's prefs
1342 # save this in sys so embedded copies can restore it properly
1343 for rlcommand in self.rc.readline_parse_and_bind:
1343 sys.ipcompleter = self.Completer.complete
1344 readline.parse_and_bind(rlcommand)
1344 self.set_completer()
1345
1345
1346 # remove some chars from the delimiters list
1346 # Configure readline according to user's prefs
1347 delims = readline.get_completer_delims()
1347 # This is only done if GNU readline is being used. If libedit
1348 delims = delims.translate(string._idmap,
1348 # is being used (as on Leopard) the readline config is
1349 self.rc.readline_remove_delims)
1349 # not run as the syntax for libedit is different.
1350 readline.set_completer_delims(delims)
1350 if not readline.uses_libedit:
1351 # otherwise we end up with a monster history after a while:
1351 for rlcommand in self.rc.readline_parse_and_bind:
1352 readline.set_history_length(1000)
1352 readline.parse_and_bind(rlcommand)
1353 try:
1353
1354 #print '*** Reading readline history' # dbg
1354 # remove some chars from the delimiters list
1355 readline.read_history_file(self.histfile)
1355 delims = readline.get_completer_delims()
1356 except IOError:
1356 delims = delims.translate(string._idmap,
1357 pass # It doesn't exist yet.
1357 self.rc.readline_remove_delims)
1358
1358 readline.set_completer_delims(delims)
1359 atexit.register(self.atexit_operations)
1359 # otherwise we end up with a monster history after a while:
1360 del atexit
1360 readline.set_history_length(1000)
1361
1361 try:
1362 # Configure auto-indent for all platforms
1362 #print '*** Reading readline history' # dbg
1363 self.set_autoindent(self.rc.autoindent)
1363 readline.read_history_file(self.histfile)
1364
1364 except IOError:
1365 def ask_yes_no(self,prompt,default=True):
1365 pass # It doesn't exist yet.
1366 if self.rc.quiet:
1366
1367 return True
1367 atexit.register(self.atexit_operations)
1368 return ask_yes_no(prompt,default)
1368 del atexit
1369
1369
1370 def _should_recompile(self,e):
1370 # Configure auto-indent for all platforms
1371 """Utility routine for edit_syntax_error"""
1371 self.set_autoindent(self.rc.autoindent)
1372
1372
1373 if e.filename in ('<ipython console>','<input>','<string>',
1373 def ask_yes_no(self,prompt,default=True):
1374 '<console>','<BackgroundJob compilation>',
1374 if self.rc.quiet:
1375 None):
1375 return True
1376
1376 return ask_yes_no(prompt,default)
1377 return False
1377
1378 try:
1378 def _should_recompile(self,e):
1379 if (self.rc.autoedit_syntax and
1379 """Utility routine for edit_syntax_error"""
1380 not self.ask_yes_no('Return to editor to correct syntax error? '
1380
1381 '[Y/n] ','y')):
1381 if e.filename in ('<ipython console>','<input>','<string>',
1382 return False
1382 '<console>','<BackgroundJob compilation>',
1383 except EOFError:
1383 None):
1384 return False
1384
1385
1385 return False
1386 def int0(x):
1386 try:
1387 try:
1387 if (self.rc.autoedit_syntax and
1388 return int(x)
1388 not self.ask_yes_no('Return to editor to correct syntax error? '
1389 except TypeError:
1389 '[Y/n] ','y')):
1390 return 0
1390 return False
1391 # always pass integer line and offset values to editor hook
1391 except EOFError:
1392 self.hooks.fix_error_editor(e.filename,
1392 return False
1393 int0(e.lineno),int0(e.offset),e.msg)
1393
1394 return True
1394 def int0(x):
1395
1395 try:
1396 def edit_syntax_error(self):
1396 return int(x)
1397 """The bottom half of the syntax error handler called in the main loop.
1397 except TypeError:
1398
1398 return 0
1399 Loop until syntax error is fixed or user cancels.
1399 # always pass integer line and offset values to editor hook
1400 """
1400 self.hooks.fix_error_editor(e.filename,
1401
1401 int0(e.lineno),int0(e.offset),e.msg)
1402 while self.SyntaxTB.last_syntax_error:
1402 return True
1403 # copy and clear last_syntax_error
1403
1404 err = self.SyntaxTB.clear_err_state()
1404 def edit_syntax_error(self):
1405 if not self._should_recompile(err):
1405 """The bottom half of the syntax error handler called in the main loop.
1406 return
1406
1407 try:
1407 Loop until syntax error is fixed or user cancels.
1408 # may set last_syntax_error again if a SyntaxError is raised
1408 """
1409 self.safe_execfile(err.filename,self.user_ns)
1409
1410 except:
1410 while self.SyntaxTB.last_syntax_error:
1411 self.showtraceback()
1411 # copy and clear last_syntax_error
1412 else:
1412 err = self.SyntaxTB.clear_err_state()
1413 try:
1413 if not self._should_recompile(err):
1414 f = file(err.filename)
1414 return
1415 try:
1415 try:
1416 sys.displayhook(f.read())
1416 # may set last_syntax_error again if a SyntaxError is raised
1417 finally:
1417 self.safe_execfile(err.filename,self.user_ns)
1418 f.close()
1418 except:
1419 except:
1419 self.showtraceback()
1420 self.showtraceback()
1420 else:
1421
1421 try:
1422 def showsyntaxerror(self, filename=None):
1422 f = file(err.filename)
1423 """Display the syntax error that just occurred.
1423 try:
1424
1424 sys.displayhook(f.read())
1425 This doesn't display a stack trace because there isn't one.
1425 finally:
1426
1426 f.close()
1427 If a filename is given, it is stuffed in the exception instead
1427 except:
1428 of what was there before (because Python's parser always uses
1428 self.showtraceback()
1429 "<string>" when reading from a string).
1429
1430 """
1430 def showsyntaxerror(self, filename=None):
1431 etype, value, last_traceback = sys.exc_info()
1431 """Display the syntax error that just occurred.
1432
1432
1433 # See note about these variables in showtraceback() below
1433 This doesn't display a stack trace because there isn't one.
1434 sys.last_type = etype
1434
1435 sys.last_value = value
1435 If a filename is given, it is stuffed in the exception instead
1436 sys.last_traceback = last_traceback
1436 of what was there before (because Python's parser always uses
1437
1437 "<string>" when reading from a string).
1438 if filename and etype is SyntaxError:
1438 """
1439 # Work hard to stuff the correct filename in the exception
1439 etype, value, last_traceback = sys.exc_info()
1440 try:
1440
1441 msg, (dummy_filename, lineno, offset, line) = value
1441 # See note about these variables in showtraceback() below
1442 except:
1442 sys.last_type = etype
1443 # Not the format we expect; leave it alone
1443 sys.last_value = value
1444 pass
1444 sys.last_traceback = last_traceback
1445 else:
1445
1446 # Stuff in the right filename
1446 if filename and etype is SyntaxError:
1447 try:
1447 # Work hard to stuff the correct filename in the exception
1448 # Assume SyntaxError is a class exception
1448 try:
1449 value = SyntaxError(msg, (filename, lineno, offset, line))
1449 msg, (dummy_filename, lineno, offset, line) = value
1450 except:
1450 except:
1451 # If that failed, assume SyntaxError is a string
1451 # Not the format we expect; leave it alone
1452 value = msg, (filename, lineno, offset, line)
1452 pass
1453 self.SyntaxTB(etype,value,[])
1453 else:
1454
1454 # Stuff in the right filename
1455 def debugger(self,force=False):
1455 try:
1456 """Call the pydb/pdb debugger.
1456 # Assume SyntaxError is a class exception
1457
1457 value = SyntaxError(msg, (filename, lineno, offset, line))
1458 Keywords:
1458 except:
1459
1459 # If that failed, assume SyntaxError is a string
1460 - force(False): by default, this routine checks the instance call_pdb
1460 value = msg, (filename, lineno, offset, line)
1461 flag and does not actually invoke the debugger if the flag is false.
1461 self.SyntaxTB(etype,value,[])
1462 The 'force' option forces the debugger to activate even if the flag
1462
1463 is false.
1463 def debugger(self,force=False):
1464 """
1464 """Call the pydb/pdb debugger.
1465
1465
1466 if not (force or self.call_pdb):
1466 Keywords:
1467 return
1467
1468
1468 - force(False): by default, this routine checks the instance call_pdb
1469 if not hasattr(sys,'last_traceback'):
1469 flag and does not actually invoke the debugger if the flag is false.
1470 error('No traceback has been produced, nothing to debug.')
1470 The 'force' option forces the debugger to activate even if the flag
1471 return
1471 is false.
1472
1472 """
1473 # use pydb if available
1473
1474 if Debugger.has_pydb:
1474 if not (force or self.call_pdb):
1475 from pydb import pm
1475 return
1476 else:
1476
1477 # fallback to our internal debugger
1477 if not hasattr(sys,'last_traceback'):
1478 pm = lambda : self.InteractiveTB.debugger(force=True)
1478 error('No traceback has been produced, nothing to debug.')
1479 self.history_saving_wrapper(pm)()
1479 return
1480
1480
1481 def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None):
1481 # use pydb if available
1482 """Display the exception that just occurred.
1482 if Debugger.has_pydb:
1483
1483 from pydb import pm
1484 If nothing is known about the exception, this is the method which
1484 else:
1485 should be used throughout the code for presenting user tracebacks,
1485 # fallback to our internal debugger
1486 rather than directly invoking the InteractiveTB object.
1486 pm = lambda : self.InteractiveTB.debugger(force=True)
1487
1487 self.history_saving_wrapper(pm)()
1488 A specific showsyntaxerror() also exists, but this method can take
1488
1489 care of calling it if needed, so unless you are explicitly catching a
1489 def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None):
1490 SyntaxError exception, don't try to analyze the stack manually and
1490 """Display the exception that just occurred.
1491 simply call this method."""
1491
1492
1492 If nothing is known about the exception, this is the method which
1493
1493 should be used throughout the code for presenting user tracebacks,
1494 # Though this won't be called by syntax errors in the input line,
1494 rather than directly invoking the InteractiveTB object.
1495 # there may be SyntaxError cases whith imported code.
1495
1496
1496 A specific showsyntaxerror() also exists, but this method can take
1497
1497 care of calling it if needed, so unless you are explicitly catching a
1498 if exc_tuple is None:
1498 SyntaxError exception, don't try to analyze the stack manually and
1499 etype, value, tb = sys.exc_info()
1499 simply call this method."""
1500 else:
1500
1501 etype, value, tb = exc_tuple
1501
1502
1502 # Though this won't be called by syntax errors in the input line,
1503 if etype is SyntaxError:
1503 # there may be SyntaxError cases whith imported code.
1504 self.showsyntaxerror(filename)
1504
1505 elif etype is IPython.ipapi.UsageError:
1505
1506 print "UsageError:", value
1506 if exc_tuple is None:
1507 else:
1507 etype, value, tb = sys.exc_info()
1508 # WARNING: these variables are somewhat deprecated and not
1508 else:
1509 # necessarily safe to use in a threaded environment, but tools
1509 etype, value, tb = exc_tuple
1510 # like pdb depend on their existence, so let's set them. If we
1510
1511 # find problems in the field, we'll need to revisit their use.
1511 if etype is SyntaxError:
1512 sys.last_type = etype
1512 self.showsyntaxerror(filename)
1513 sys.last_value = value
1513 elif etype is IPython.ipapi.UsageError:
1514 sys.last_traceback = tb
1514 print "UsageError:", value
1515
1515 else:
1516 if etype in self.custom_exceptions:
1516 # WARNING: these variables are somewhat deprecated and not
1517 self.CustomTB(etype,value,tb)
1517 # necessarily safe to use in a threaded environment, but tools
1518 else:
1518 # like pdb depend on their existence, so let's set them. If we
1519 self.InteractiveTB(etype,value,tb,tb_offset=tb_offset)
1519 # find problems in the field, we'll need to revisit their use.
1520 if self.InteractiveTB.call_pdb and self.has_readline:
1520 sys.last_type = etype
1521 # pdb mucks up readline, fix it back
1521 sys.last_value = value
1522 self.set_completer()
1522 sys.last_traceback = tb
1523
1523
1524
1524 if etype in self.custom_exceptions:
1525 def mainloop(self,banner=None):
1525 self.CustomTB(etype,value,tb)
1526 """Creates the local namespace and starts the mainloop.
1526 else:
1527
1527 self.InteractiveTB(etype,value,tb,tb_offset=tb_offset)
1528 If an optional banner argument is given, it will override the
1528 if self.InteractiveTB.call_pdb and self.has_readline:
1529 internally created default banner."""
1529 # pdb mucks up readline, fix it back
1530
1530 self.set_completer()
1531 if self.rc.c: # Emulate Python's -c option
1531
1532 self.exec_init_cmd()
1532
1533 if banner is None:
1533 def mainloop(self,banner=None):
1534 if not self.rc.banner:
1534 """Creates the local namespace and starts the mainloop.
1535 banner = ''
1535
1536 # banner is string? Use it directly!
1536 If an optional banner argument is given, it will override the
1537 elif isinstance(self.rc.banner,basestring):
1537 internally created default banner."""
1538 banner = self.rc.banner
1538
1539 else:
1539 if self.rc.c: # Emulate Python's -c option
1540 banner = self.BANNER+self.banner2
1540 self.exec_init_cmd()
1541
1541 if banner is None:
1542 self.interact(banner)
1542 if not self.rc.banner:
1543
1543 banner = ''
1544 def exec_init_cmd(self):
1544 # banner is string? Use it directly!
1545 """Execute a command given at the command line.
1545 elif isinstance(self.rc.banner,basestring):
1546
1546 banner = self.rc.banner
1547 This emulates Python's -c option."""
1547 else:
1548
1548 banner = self.BANNER+self.banner2
1549 #sys.argv = ['-c']
1549
1550 self.push(self.prefilter(self.rc.c, False))
1550 self.interact(banner)
1551 if not self.rc.interact:
1551
1552 self.exit_now = True
1552 def exec_init_cmd(self):
1553
1553 """Execute a command given at the command line.
1554 def embed_mainloop(self,header='',local_ns=None,global_ns=None,stack_depth=0):
1554
1555 """Embeds IPython into a running python program.
1555 This emulates Python's -c option."""
1556
1556
1557 Input:
1557 #sys.argv = ['-c']
1558
1558 self.push(self.prefilter(self.rc.c, False))
1559 - header: An optional header message can be specified.
1559 if not self.rc.interact:
1560
1560 self.exit_now = True
1561 - local_ns, global_ns: working namespaces. If given as None, the
1561
1562 IPython-initialized one is updated with __main__.__dict__, so that
1562 def embed_mainloop(self,header='',local_ns=None,global_ns=None,stack_depth=0):
1563 program variables become visible but user-specific configuration
1563 """Embeds IPython into a running python program.
1564 remains possible.
1564
1565
1565 Input:
1566 - stack_depth: specifies how many levels in the stack to go to
1566
1567 looking for namespaces (when local_ns and global_ns are None). This
1567 - header: An optional header message can be specified.
1568 allows an intermediate caller to make sure that this function gets
1568
1569 the namespace from the intended level in the stack. By default (0)
1569 - local_ns, global_ns: working namespaces. If given as None, the
1570 it will get its locals and globals from the immediate caller.
1570 IPython-initialized one is updated with __main__.__dict__, so that
1571
1571 program variables become visible but user-specific configuration
1572 Warning: it's possible to use this in a program which is being run by
1572 remains possible.
1573 IPython itself (via %run), but some funny things will happen (a few
1573
1574 globals get overwritten). In the future this will be cleaned up, as
1574 - stack_depth: specifies how many levels in the stack to go to
1575 there is no fundamental reason why it can't work perfectly."""
1575 looking for namespaces (when local_ns and global_ns are None). This
1576
1576 allows an intermediate caller to make sure that this function gets
1577 # Get locals and globals from caller
1577 the namespace from the intended level in the stack. By default (0)
1578 if local_ns is None or global_ns is None:
1578 it will get its locals and globals from the immediate caller.
1579 call_frame = sys._getframe(stack_depth).f_back
1579
1580
1580 Warning: it's possible to use this in a program which is being run by
1581 if local_ns is None:
1581 IPython itself (via %run), but some funny things will happen (a few
1582 local_ns = call_frame.f_locals
1582 globals get overwritten). In the future this will be cleaned up, as
1583 if global_ns is None:
1583 there is no fundamental reason why it can't work perfectly."""
1584 global_ns = call_frame.f_globals
1584
1585
1585 # Get locals and globals from caller
1586 # Update namespaces and fire up interpreter
1586 if local_ns is None or global_ns is None:
1587
1587 call_frame = sys._getframe(stack_depth).f_back
1588 # The global one is easy, we can just throw it in
1588
1589 self.user_global_ns = global_ns
1589 if local_ns is None:
1590
1590 local_ns = call_frame.f_locals
1591 # but the user/local one is tricky: ipython needs it to store internal
1591 if global_ns is None:
1592 # data, but we also need the locals. We'll copy locals in the user
1592 global_ns = call_frame.f_globals
1593 # one, but will track what got copied so we can delete them at exit.
1593
1594 # This is so that a later embedded call doesn't see locals from a
1594 # Update namespaces and fire up interpreter
1595 # previous call (which most likely existed in a separate scope).
1595
1596 local_varnames = local_ns.keys()
1596 # The global one is easy, we can just throw it in
1597 self.user_ns.update(local_ns)
1597 self.user_global_ns = global_ns
1598
1598
1599 # Patch for global embedding to make sure that things don't overwrite
1599 # but the user/local one is tricky: ipython needs it to store internal
1600 # user globals accidentally. Thanks to Richard <rxe@renre-europe.com>
1600 # data, but we also need the locals. We'll copy locals in the user
1601 # FIXME. Test this a bit more carefully (the if.. is new)
1601 # one, but will track what got copied so we can delete them at exit.
1602 if local_ns is None and global_ns is None:
1602 # This is so that a later embedded call doesn't see locals from a
1603 self.user_global_ns.update(__main__.__dict__)
1603 # previous call (which most likely existed in a separate scope).
1604
1604 local_varnames = local_ns.keys()
1605 # make sure the tab-completer has the correct frame information, so it
1605 self.user_ns.update(local_ns)
1606 # actually completes using the frame's locals/globals
1606
1607 self.set_completer_frame()
1607 # Patch for global embedding to make sure that things don't overwrite
1608
1608 # user globals accidentally. Thanks to Richard <rxe@renre-europe.com>
1609 # before activating the interactive mode, we need to make sure that
1609 # FIXME. Test this a bit more carefully (the if.. is new)
1610 # all names in the builtin namespace needed by ipython point to
1610 if local_ns is None and global_ns is None:
1611 # ourselves, and not to other instances.
1611 self.user_global_ns.update(__main__.__dict__)
1612 self.add_builtins()
1612
1613
1613 # make sure the tab-completer has the correct frame information, so it
1614 self.interact(header)
1614 # actually completes using the frame's locals/globals
1615
1615 self.set_completer_frame()
1616 # now, purge out the user namespace from anything we might have added
1616
1617 # from the caller's local namespace
1617 # before activating the interactive mode, we need to make sure that
1618 delvar = self.user_ns.pop
1618 # all names in the builtin namespace needed by ipython point to
1619 for var in local_varnames:
1619 # ourselves, and not to other instances.
1620 delvar(var,None)
1620 self.add_builtins()
1621 # and clean builtins we may have overridden
1621
1622 self.clean_builtins()
1622 self.interact(header)
1623
1623
1624 def interact(self, banner=None):
1624 # now, purge out the user namespace from anything we might have added
1625 """Closely emulate the interactive Python console.
1625 # from the caller's local namespace
1626
1626 delvar = self.user_ns.pop
1627 The optional banner argument specify the banner to print
1627 for var in local_varnames:
1628 before the first interaction; by default it prints a banner
1628 delvar(var,None)
1629 similar to the one printed by the real Python interpreter,
1629 # and clean builtins we may have overridden
1630 followed by the current class name in parentheses (so as not
1630 self.clean_builtins()
1631 to confuse this with the real interpreter -- since it's so
1631
1632 close!).
1632 def interact(self, banner=None):
1633
1633 """Closely emulate the interactive Python console.
1634 """
1634
1635
1635 The optional banner argument specify the banner to print
1636 if self.exit_now:
1636 before the first interaction; by default it prints a banner
1637 # batch run -> do not interact
1637 similar to the one printed by the real Python interpreter,
1638 return
1638 followed by the current class name in parentheses (so as not
1639 cprt = 'Type "copyright", "credits" or "license" for more information.'
1639 to confuse this with the real interpreter -- since it's so
1640 if banner is None:
1640 close!).
1641 self.write("Python %s on %s\n%s\n(%s)\n" %
1641
1642 (sys.version, sys.platform, cprt,
1642 """
1643 self.__class__.__name__))
1643
1644 else:
1644 if self.exit_now:
1645 self.write(banner)
1645 # batch run -> do not interact
1646
1646 return
1647 more = 0
1647 cprt = 'Type "copyright", "credits" or "license" for more information.'
1648
1648 if banner is None:
1649 # Mark activity in the builtins
1649 self.write("Python %s on %s\n%s\n(%s)\n" %
1650 __builtin__.__dict__['__IPYTHON__active'] += 1
1650 (sys.version, sys.platform, cprt,
1651
1651 self.__class__.__name__))
1652 if self.has_readline:
1652 else:
1653 self.readline_startup_hook(self.pre_readline)
1653 self.write(banner)
1654 # exit_now is set by a call to %Exit or %Quit
1654
1655
1655 more = 0
1656 while not self.exit_now:
1656
1657 if more:
1657 # Mark activity in the builtins
1658 prompt = self.hooks.generate_prompt(True)
1658 __builtin__.__dict__['__IPYTHON__active'] += 1
1659 if self.autoindent:
1659
1660 self.rl_do_indent = True
1660 if self.has_readline:
1661
1661 self.readline_startup_hook(self.pre_readline)
1662 else:
1662 # exit_now is set by a call to %Exit or %Quit
1663 prompt = self.hooks.generate_prompt(False)
1663
1664 try:
1664 while not self.exit_now:
1665 line = self.raw_input(prompt,more)
1665 if more:
1666 if self.exit_now:
1666 prompt = self.hooks.generate_prompt(True)
1667 # quick exit on sys.std[in|out] close
1667 if self.autoindent:
1668 break
1668 self.rl_do_indent = True
1669 if self.autoindent:
1669
1670 self.rl_do_indent = False
1670 else:
1671
1671 prompt = self.hooks.generate_prompt(False)
1672 except KeyboardInterrupt:
1672 try:
1673 self.write('\nKeyboardInterrupt\n')
1673 line = self.raw_input(prompt,more)
1674 self.resetbuffer()
1674 if self.exit_now:
1675 # keep cache in sync with the prompt counter:
1675 # quick exit on sys.std[in|out] close
1676 self.outputcache.prompt_count -= 1
1676 break
1677
1677 if self.autoindent:
1678 if self.autoindent:
1678 self.rl_do_indent = False
1679 self.indent_current_nsp = 0
1679
1680 more = 0
1680 except KeyboardInterrupt:
1681 except EOFError:
1681 self.write('\nKeyboardInterrupt\n')
1682 if self.autoindent:
1682 self.resetbuffer()
1683 self.rl_do_indent = False
1683 # keep cache in sync with the prompt counter:
1684 self.readline_startup_hook(None)
1684 self.outputcache.prompt_count -= 1
1685 self.write('\n')
1685
1686 self.exit()
1686 if self.autoindent:
1687 except bdb.BdbQuit:
1687 self.indent_current_nsp = 0
1688 warn('The Python debugger has exited with a BdbQuit exception.\n'
1688 more = 0
1689 'Because of how pdb handles the stack, it is impossible\n'
1689 except EOFError:
1690 'for IPython to properly format this particular exception.\n'
1690 if self.autoindent:
1691 'IPython will resume normal operation.')
1691 self.rl_do_indent = False
1692 except:
1692 self.readline_startup_hook(None)
1693 # exceptions here are VERY RARE, but they can be triggered
1693 self.write('\n')
1694 # asynchronously by signal handlers, for example.
1694 self.exit()
1695 self.showtraceback()
1695 except bdb.BdbQuit:
1696 else:
1696 warn('The Python debugger has exited with a BdbQuit exception.\n'
1697 more = self.push(line)
1697 'Because of how pdb handles the stack, it is impossible\n'
1698 if (self.SyntaxTB.last_syntax_error and
1698 'for IPython to properly format this particular exception.\n'
1699 self.rc.autoedit_syntax):
1699 'IPython will resume normal operation.')
1700 self.edit_syntax_error()
1700 except:
1701
1701 # exceptions here are VERY RARE, but they can be triggered
1702 # We are off again...
1702 # asynchronously by signal handlers, for example.
1703 __builtin__.__dict__['__IPYTHON__active'] -= 1
1703 self.showtraceback()
1704
1704 else:
1705 def excepthook(self, etype, value, tb):
1705 more = self.push(line)
1706 """One more defense for GUI apps that call sys.excepthook.
1706 if (self.SyntaxTB.last_syntax_error and
1707
1707 self.rc.autoedit_syntax):
1708 GUI frameworks like wxPython trap exceptions and call
1708 self.edit_syntax_error()
1709 sys.excepthook themselves. I guess this is a feature that
1709
1710 enables them to keep running after exceptions that would
1710 # We are off again...
1711 otherwise kill their mainloop. This is a bother for IPython
1711 __builtin__.__dict__['__IPYTHON__active'] -= 1
1712 which excepts to catch all of the program exceptions with a try:
1712
1713 except: statement.
1713 def excepthook(self, etype, value, tb):
1714
1714 """One more defense for GUI apps that call sys.excepthook.
1715 Normally, IPython sets sys.excepthook to a CrashHandler instance, so if
1715
1716 any app directly invokes sys.excepthook, it will look to the user like
1716 GUI frameworks like wxPython trap exceptions and call
1717 IPython crashed. In order to work around this, we can disable the
1717 sys.excepthook themselves. I guess this is a feature that
1718 CrashHandler and replace it with this excepthook instead, which prints a
1718 enables them to keep running after exceptions that would
1719 regular traceback using our InteractiveTB. In this fashion, apps which
1719 otherwise kill their mainloop. This is a bother for IPython
1720 call sys.excepthook will generate a regular-looking exception from
1720 which excepts to catch all of the program exceptions with a try:
1721 IPython, and the CrashHandler will only be triggered by real IPython
1721 except: statement.
1722 crashes.
1722
1723
1723 Normally, IPython sets sys.excepthook to a CrashHandler instance, so if
1724 This hook should be used sparingly, only in places which are not likely
1724 any app directly invokes sys.excepthook, it will look to the user like
1725 to be true IPython errors.
1725 IPython crashed. In order to work around this, we can disable the
1726 """
1726 CrashHandler and replace it with this excepthook instead, which prints a
1727 self.showtraceback((etype,value,tb),tb_offset=0)
1727 regular traceback using our InteractiveTB. In this fashion, apps which
1728
1728 call sys.excepthook will generate a regular-looking exception from
1729 def expand_aliases(self,fn,rest):
1729 IPython, and the CrashHandler will only be triggered by real IPython
1730 """ Expand multiple levels of aliases:
1730 crashes.
1731
1731
1732 if:
1732 This hook should be used sparingly, only in places which are not likely
1733
1733 to be true IPython errors.
1734 alias foo bar /tmp
1734 """
1735 alias baz foo
1735 self.showtraceback((etype,value,tb),tb_offset=0)
1736
1736
1737 then:
1737 def expand_aliases(self,fn,rest):
1738
1738 """ Expand multiple levels of aliases:
1739 baz huhhahhei -> bar /tmp huhhahhei
1739
1740
1740 if:
1741 """
1741
1742 line = fn + " " + rest
1742 alias foo bar /tmp
1743
1743 alias baz foo
1744 done = Set()
1744
1745 while 1:
1745 then:
1746 pre,fn,rest = prefilter.splitUserInput(line,
1746
1747 prefilter.shell_line_split)
1747 baz huhhahhei -> bar /tmp huhhahhei
1748 if fn in self.alias_table:
1748
1749 if fn in done:
1749 """
1750 warn("Cyclic alias definition, repeated '%s'" % fn)
1750 line = fn + " " + rest
1751 return ""
1751
1752 done.add(fn)
1752 done = Set()
1753
1753 while 1:
1754 l2 = self.transform_alias(fn,rest)
1754 pre,fn,rest = prefilter.splitUserInput(line,
1755 # dir -> dir
1755 prefilter.shell_line_split)
1756 # print "alias",line, "->",l2 #dbg
1756 if fn in self.alias_table:
1757 if l2 == line:
1757 if fn in done:
1758 break
1758 warn("Cyclic alias definition, repeated '%s'" % fn)
1759 # ls -> ls -F should not recurse forever
1759 return ""
1760 if l2.split(None,1)[0] == line.split(None,1)[0]:
1760 done.add(fn)
1761 line = l2
1761
1762 break
1762 l2 = self.transform_alias(fn,rest)
1763
1763 # dir -> dir
1764 line=l2
1764 # print "alias",line, "->",l2 #dbg
1765
1765 if l2 == line:
1766
1766 break
1767 # print "al expand to",line #dbg
1767 # ls -> ls -F should not recurse forever
1768 else:
1768 if l2.split(None,1)[0] == line.split(None,1)[0]:
1769 break
1769 line = l2
1770
1770 break
1771 return line
1771
1772
1772 line=l2
1773 def transform_alias(self, alias,rest=''):
1773
1774 """ Transform alias to system command string.
1774
1775 """
1775 # print "al expand to",line #dbg
1776 trg = self.alias_table[alias]
1776 else:
1777
1777 break
1778 nargs,cmd = trg
1778
1779 # print trg #dbg
1779 return line
1780 if ' ' in cmd and os.path.isfile(cmd):
1780
1781 cmd = '"%s"' % cmd
1781 def transform_alias(self, alias,rest=''):
1782
1782 """ Transform alias to system command string.
1783 # Expand the %l special to be the user's input line
1783 """
1784 if cmd.find('%l') >= 0:
1784 trg = self.alias_table[alias]
1785 cmd = cmd.replace('%l',rest)
1785
1786 rest = ''
1786 nargs,cmd = trg
1787 if nargs==0:
1787 # print trg #dbg
1788 # Simple, argument-less aliases
1788 if ' ' in cmd and os.path.isfile(cmd):
1789 cmd = '%s %s' % (cmd,rest)
1789 cmd = '"%s"' % cmd
1790 else:
1790
1791 # Handle aliases with positional arguments
1791 # Expand the %l special to be the user's input line
1792 args = rest.split(None,nargs)
1792 if cmd.find('%l') >= 0:
1793 if len(args)< nargs:
1793 cmd = cmd.replace('%l',rest)
1794 error('Alias <%s> requires %s arguments, %s given.' %
1794 rest = ''
1795 (alias,nargs,len(args)))
1795 if nargs==0:
1796 return None
1796 # Simple, argument-less aliases
1797 cmd = '%s %s' % (cmd % tuple(args[:nargs]),' '.join(args[nargs:]))
1797 cmd = '%s %s' % (cmd,rest)
1798 # Now call the macro, evaluating in the user's namespace
1798 else:
1799 #print 'new command: <%r>' % cmd # dbg
1799 # Handle aliases with positional arguments
1800 return cmd
1800 args = rest.split(None,nargs)
1801
1801 if len(args)< nargs:
1802 def call_alias(self,alias,rest=''):
1802 error('Alias <%s> requires %s arguments, %s given.' %
1803 """Call an alias given its name and the rest of the line.
1803 (alias,nargs,len(args)))
1804
1804 return None
1805 This is only used to provide backwards compatibility for users of
1805 cmd = '%s %s' % (cmd % tuple(args[:nargs]),' '.join(args[nargs:]))
1806 ipalias(), use of which is not recommended for anymore."""
1806 # Now call the macro, evaluating in the user's namespace
1807
1807 #print 'new command: <%r>' % cmd # dbg
1808 # Now call the macro, evaluating in the user's namespace
1808 return cmd
1809 cmd = self.transform_alias(alias, rest)
1809
1810 try:
1810 def call_alias(self,alias,rest=''):
1811 self.system(cmd)
1811 """Call an alias given its name and the rest of the line.
1812 except:
1812
1813 self.showtraceback()
1813 This is only used to provide backwards compatibility for users of
1814
1814 ipalias(), use of which is not recommended for anymore."""
1815 def indent_current_str(self):
1815
1816 """return the current level of indentation as a string"""
1816 # Now call the macro, evaluating in the user's namespace
1817 return self.indent_current_nsp * ' '
1817 cmd = self.transform_alias(alias, rest)
1818
1818 try:
1819 def autoindent_update(self,line):
1819 self.system(cmd)
1820 """Keep track of the indent level."""
1820 except:
1821
1821 self.showtraceback()
1822 #debugx('line')
1822
1823 #debugx('self.indent_current_nsp')
1823 def indent_current_str(self):
1824 if self.autoindent:
1824 """return the current level of indentation as a string"""
1825 if line:
1825 return self.indent_current_nsp * ' '
1826 inisp = num_ini_spaces(line)
1826
1827 if inisp < self.indent_current_nsp:
1827 def autoindent_update(self,line):
1828 self.indent_current_nsp = inisp
1828 """Keep track of the indent level."""
1829
1829
1830 if line[-1] == ':':
1830 #debugx('line')
1831 self.indent_current_nsp += 4
1831 #debugx('self.indent_current_nsp')
1832 elif dedent_re.match(line):
1832 if self.autoindent:
1833 self.indent_current_nsp -= 4
1833 if line:
1834 else:
1834 inisp = num_ini_spaces(line)
1835 self.indent_current_nsp = 0
1835 if inisp < self.indent_current_nsp:
1836 def runlines(self,lines):
1836 self.indent_current_nsp = inisp
1837 """Run a string of one or more lines of source.
1837
1838
1838 if line[-1] == ':':
1839 This method is capable of running a string containing multiple source
1839 self.indent_current_nsp += 4
1840 lines, as if they had been entered at the IPython prompt. Since it
1840 elif dedent_re.match(line):
1841 exposes IPython's processing machinery, the given strings can contain
1841 self.indent_current_nsp -= 4
1842 magic calls (%magic), special shell access (!cmd), etc."""
1842 else:
1843
1843 self.indent_current_nsp = 0
1844 # We must start with a clean buffer, in case this is run from an
1844 def runlines(self,lines):
1845 # interactive IPython session (via a magic, for example).
1845 """Run a string of one or more lines of source.
1846 self.resetbuffer()
1846
1847 lines = lines.split('\n')
1847 This method is capable of running a string containing multiple source
1848 more = 0
1848 lines, as if they had been entered at the IPython prompt. Since it
1849
1849 exposes IPython's processing machinery, the given strings can contain
1850 for line in lines:
1850 magic calls (%magic), special shell access (!cmd), etc."""
1851 # skip blank lines so we don't mess up the prompt counter, but do
1851
1852 # NOT skip even a blank line if we are in a code block (more is
1852 # We must start with a clean buffer, in case this is run from an
1853 # true)
1853 # interactive IPython session (via a magic, for example).
1854
1854 self.resetbuffer()
1855
1855 lines = lines.split('\n')
1856 if line or more:
1856 more = 0
1857 # push to raw history, so hist line numbers stay in sync
1857
1858 self.input_hist_raw.append("# " + line + "\n")
1858 for line in lines:
1859 more = self.push(self.prefilter(line,more))
1859 # skip blank lines so we don't mess up the prompt counter, but do
1860 # IPython's runsource returns None if there was an error
1860 # NOT skip even a blank line if we are in a code block (more is
1861 # compiling the code. This allows us to stop processing right
1861 # true)
1862 # away, so the user gets the error message at the right place.
1862
1863 if more is None:
1863
1864 break
1864 if line or more:
1865 else:
1865 # push to raw history, so hist line numbers stay in sync
1866 self.input_hist_raw.append("\n")
1866 self.input_hist_raw.append("# " + line + "\n")
1867 # final newline in case the input didn't have it, so that the code
1867 more = self.push(self.prefilter(line,more))
1868 # actually does get executed
1868 # IPython's runsource returns None if there was an error
1869 if more:
1869 # compiling the code. This allows us to stop processing right
1870 self.push('\n')
1870 # away, so the user gets the error message at the right place.
1871
1871 if more is None:
1872 def runsource(self, source, filename='<input>', symbol='single'):
1872 break
1873 """Compile and run some source in the interpreter.
1873 else:
1874
1874 self.input_hist_raw.append("\n")
1875 Arguments are as for compile_command().
1875 # final newline in case the input didn't have it, so that the code
1876
1876 # actually does get executed
1877 One several things can happen:
1877 if more:
1878
1878 self.push('\n')
1879 1) The input is incorrect; compile_command() raised an
1879
1880 exception (SyntaxError or OverflowError). A syntax traceback
1880 def runsource(self, source, filename='<input>', symbol='single'):
1881 will be printed by calling the showsyntaxerror() method.
1881 """Compile and run some source in the interpreter.
1882
1882
1883 2) The input is incomplete, and more input is required;
1883 Arguments are as for compile_command().
1884 compile_command() returned None. Nothing happens.
1884
1885
1885 One several things can happen:
1886 3) The input is complete; compile_command() returned a code
1886
1887 object. The code is executed by calling self.runcode() (which
1887 1) The input is incorrect; compile_command() raised an
1888 also handles run-time exceptions, except for SystemExit).
1888 exception (SyntaxError or OverflowError). A syntax traceback
1889
1889 will be printed by calling the showsyntaxerror() method.
1890 The return value is:
1890
1891
1891 2) The input is incomplete, and more input is required;
1892 - True in case 2
1892 compile_command() returned None. Nothing happens.
1893
1893
1894 - False in the other cases, unless an exception is raised, where
1894 3) The input is complete; compile_command() returned a code
1895 None is returned instead. This can be used by external callers to
1895 object. The code is executed by calling self.runcode() (which
1896 know whether to continue feeding input or not.
1896 also handles run-time exceptions, except for SystemExit).
1897
1897
1898 The return value can be used to decide whether to use sys.ps1 or
1898 The return value is:
1899 sys.ps2 to prompt the next line."""
1899
1900
1900 - True in case 2
1901 # if the source code has leading blanks, add 'if 1:\n' to it
1901
1902 # this allows execution of indented pasted code. It is tempting
1902 - False in the other cases, unless an exception is raised, where
1903 # to add '\n' at the end of source to run commands like ' a=1'
1903 None is returned instead. This can be used by external callers to
1904 # directly, but this fails for more complicated scenarios
1904 know whether to continue feeding input or not.
1905 source=source.encode(self.stdin_encoding)
1905
1906 if source[:1] in [' ', '\t']:
1906 The return value can be used to decide whether to use sys.ps1 or
1907 source = 'if 1:\n%s' % source
1907 sys.ps2 to prompt the next line."""
1908
1908
1909 try:
1909 # if the source code has leading blanks, add 'if 1:\n' to it
1910 code = self.compile(source,filename,symbol)
1910 # this allows execution of indented pasted code. It is tempting
1911 except (OverflowError, SyntaxError, ValueError):
1911 # to add '\n' at the end of source to run commands like ' a=1'
1912 # Case 1
1912 # directly, but this fails for more complicated scenarios
1913 self.showsyntaxerror(filename)
1913 source=source.encode(self.stdin_encoding)
1914 return None
1914 if source[:1] in [' ', '\t']:
1915
1915 source = 'if 1:\n%s' % source
1916 if code is None:
1916
1917 # Case 2
1917 try:
1918 return True
1918 code = self.compile(source,filename,symbol)
1919
1919 except (OverflowError, SyntaxError, ValueError):
1920 # Case 3
1920 # Case 1
1921 # We store the code object so that threaded shells and
1921 self.showsyntaxerror(filename)
1922 # custom exception handlers can access all this info if needed.
1922 return None
1923 # The source corresponding to this can be obtained from the
1923
1924 # buffer attribute as '\n'.join(self.buffer).
1924 if code is None:
1925 self.code_to_run = code
1925 # Case 2
1926 # now actually execute the code object
1926 return True
1927 if self.runcode(code) == 0:
1927
1928 return False
1928 # Case 3
1929 else:
1929 # We store the code object so that threaded shells and
1930 return None
1930 # custom exception handlers can access all this info if needed.
1931
1931 # The source corresponding to this can be obtained from the
1932 def runcode(self,code_obj):
1932 # buffer attribute as '\n'.join(self.buffer).
1933 """Execute a code object.
1933 self.code_to_run = code
1934
1934 # now actually execute the code object
1935 When an exception occurs, self.showtraceback() is called to display a
1935 if self.runcode(code) == 0:
1936 traceback.
1936 return False
1937
1937 else:
1938 Return value: a flag indicating whether the code to be run completed
1938 return None
1939 successfully:
1939
1940
1940 def runcode(self,code_obj):
1941 - 0: successful execution.
1941 """Execute a code object.
1942 - 1: an error occurred.
1942
1943 """
1943 When an exception occurs, self.showtraceback() is called to display a
1944
1944 traceback.
1945 # Set our own excepthook in case the user code tries to call it
1945
1946 # directly, so that the IPython crash handler doesn't get triggered
1946 Return value: a flag indicating whether the code to be run completed
1947 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
1947 successfully:
1948
1948
1949 # we save the original sys.excepthook in the instance, in case config
1949 - 0: successful execution.
1950 # code (such as magics) needs access to it.
1950 - 1: an error occurred.
1951 self.sys_excepthook = old_excepthook
1951 """
1952 outflag = 1 # happens in more places, so it's easier as default
1952
1953 try:
1953 # Set our own excepthook in case the user code tries to call it
1954 try:
1954 # directly, so that the IPython crash handler doesn't get triggered
1955 # Embedded instances require separate global/local namespaces
1955 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
1956 # so they can see both the surrounding (local) namespace and
1956
1957 # the module-level globals when called inside another function.
1957 # we save the original sys.excepthook in the instance, in case config
1958 if self.embedded:
1958 # code (such as magics) needs access to it.
1959 exec code_obj in self.user_global_ns, self.user_ns
1959 self.sys_excepthook = old_excepthook
1960 # Normal (non-embedded) instances should only have a single
1960 outflag = 1 # happens in more places, so it's easier as default
1961 # namespace for user code execution, otherwise functions won't
1961 try:
1962 # see interactive top-level globals.
1962 try:
1963 else:
1963 # Embedded instances require separate global/local namespaces
1964 exec code_obj in self.user_ns
1964 # so they can see both the surrounding (local) namespace and
1965 finally:
1965 # the module-level globals when called inside another function.
1966 # Reset our crash handler in place
1966 if self.embedded:
1967 sys.excepthook = old_excepthook
1967 exec code_obj in self.user_global_ns, self.user_ns
1968 except SystemExit:
1968 # Normal (non-embedded) instances should only have a single
1969 self.resetbuffer()
1969 # namespace for user code execution, otherwise functions won't
1970 self.showtraceback()
1970 # see interactive top-level globals.
1971 warn("Type %exit or %quit to exit IPython "
1971 else:
1972 "(%Exit or %Quit do so unconditionally).",level=1)
1972 exec code_obj in self.user_ns
1973 except self.custom_exceptions:
1973 finally:
1974 etype,value,tb = sys.exc_info()
1974 # Reset our crash handler in place
1975 self.CustomTB(etype,value,tb)
1975 sys.excepthook = old_excepthook
1976 except:
1976 except SystemExit:
1977 self.showtraceback()
1977 self.resetbuffer()
1978 else:
1978 self.showtraceback()
1979 outflag = 0
1979 warn("Type %exit or %quit to exit IPython "
1980 if softspace(sys.stdout, 0):
1980 "(%Exit or %Quit do so unconditionally).",level=1)
1981 print
1981 except self.custom_exceptions:
1982 # Flush out code object which has been run (and source)
1982 etype,value,tb = sys.exc_info()
1983 self.code_to_run = None
1983 self.CustomTB(etype,value,tb)
1984 return outflag
1984 except:
1985
1985 self.showtraceback()
1986 def push(self, line):
1986 else:
1987 """Push a line to the interpreter.
1987 outflag = 0
1988
1988 if softspace(sys.stdout, 0):
1989 The line should not have a trailing newline; it may have
1989 print
1990 internal newlines. The line is appended to a buffer and the
1990 # Flush out code object which has been run (and source)
1991 interpreter's runsource() method is called with the
1991 self.code_to_run = None
1992 concatenated contents of the buffer as source. If this
1992 return outflag
1993 indicates that the command was executed or invalid, the buffer
1993
1994 is reset; otherwise, the command is incomplete, and the buffer
1994 def push(self, line):
1995 is left as it was after the line was appended. The return
1995 """Push a line to the interpreter.
1996 value is 1 if more input is required, 0 if the line was dealt
1996
1997 with in some way (this is the same as runsource()).
1997 The line should not have a trailing newline; it may have
1998 """
1998 internal newlines. The line is appended to a buffer and the
1999
1999 interpreter's runsource() method is called with the
2000 # autoindent management should be done here, and not in the
2000 concatenated contents of the buffer as source. If this
2001 # interactive loop, since that one is only seen by keyboard input. We
2001 indicates that the command was executed or invalid, the buffer
2002 # need this done correctly even for code run via runlines (which uses
2002 is reset; otherwise, the command is incomplete, and the buffer
2003 # push).
2003 is left as it was after the line was appended. The return
2004
2004 value is 1 if more input is required, 0 if the line was dealt
2005 #print 'push line: <%s>' % line # dbg
2005 with in some way (this is the same as runsource()).
2006 for subline in line.splitlines():
2006 """
2007 self.autoindent_update(subline)
2007
2008 self.buffer.append(line)
2008 # autoindent management should be done here, and not in the
2009 more = self.runsource('\n'.join(self.buffer), self.filename)
2009 # interactive loop, since that one is only seen by keyboard input. We
2010 if not more:
2010 # need this done correctly even for code run via runlines (which uses
2011 self.resetbuffer()
2011 # push).
2012 return more
2012
2013
2013 #print 'push line: <%s>' % line # dbg
2014 def split_user_input(self, line):
2014 for subline in line.splitlines():
2015 # This is really a hold-over to support ipapi and some extensions
2015 self.autoindent_update(subline)
2016 return prefilter.splitUserInput(line)
2016 self.buffer.append(line)
2017
2017 more = self.runsource('\n'.join(self.buffer), self.filename)
2018 def resetbuffer(self):
2018 if not more:
2019 """Reset the input buffer."""
2019 self.resetbuffer()
2020 self.buffer[:] = []
2020 return more
2021
2021
2022 def raw_input(self,prompt='',continue_prompt=False):
2022 def split_user_input(self, line):
2023 """Write a prompt and read a line.
2023 # This is really a hold-over to support ipapi and some extensions
2024
2024 return prefilter.splitUserInput(line)
2025 The returned line does not include the trailing newline.
2025
2026 When the user enters the EOF key sequence, EOFError is raised.
2026 def resetbuffer(self):
2027
2027 """Reset the input buffer."""
2028 Optional inputs:
2028 self.buffer[:] = []
2029
2029
2030 - prompt(''): a string to be printed to prompt the user.
2030 def raw_input(self,prompt='',continue_prompt=False):
2031
2031 """Write a prompt and read a line.
2032 - continue_prompt(False): whether this line is the first one or a
2032
2033 continuation in a sequence of inputs.
2033 The returned line does not include the trailing newline.
2034 """
2034 When the user enters the EOF key sequence, EOFError is raised.
2035
2035
2036 # Code run by the user may have modified the readline completer state.
2036 Optional inputs:
2037 # We must ensure that our completer is back in place.
2037
2038 if self.has_readline:
2038 - prompt(''): a string to be printed to prompt the user.
2039 self.set_completer()
2039
2040
2040 - continue_prompt(False): whether this line is the first one or a
2041 try:
2041 continuation in a sequence of inputs.
2042 line = raw_input_original(prompt).decode(self.stdin_encoding)
2042 """
2043 except ValueError:
2043
2044 warn("\n********\nYou or a %run:ed script called sys.stdin.close()"
2044 # Code run by the user may have modified the readline completer state.
2045 " or sys.stdout.close()!\nExiting IPython!")
2045 # We must ensure that our completer is back in place.
2046 self.exit_now = True
2046 if self.has_readline:
2047 return ""
2047 self.set_completer()
2048
2048
2049 # Try to be reasonably smart about not re-indenting pasted input more
2049 try:
2050 # than necessary. We do this by trimming out the auto-indent initial
2050 line = raw_input_original(prompt).decode(self.stdin_encoding)
2051 # spaces, if the user's actual input started itself with whitespace.
2051 except ValueError:
2052 #debugx('self.buffer[-1]')
2052 warn("\n********\nYou or a %run:ed script called sys.stdin.close()"
2053
2053 " or sys.stdout.close()!\nExiting IPython!")
2054 if self.autoindent:
2054 self.exit_now = True
2055 if num_ini_spaces(line) > self.indent_current_nsp:
2055 return ""
2056 line = line[self.indent_current_nsp:]
2056
2057 self.indent_current_nsp = 0
2057 # Try to be reasonably smart about not re-indenting pasted input more
2058
2058 # than necessary. We do this by trimming out the auto-indent initial
2059 # store the unfiltered input before the user has any chance to modify
2059 # spaces, if the user's actual input started itself with whitespace.
2060 # it.
2060 #debugx('self.buffer[-1]')
2061 if line.strip():
2061
2062 if continue_prompt:
2062 if self.autoindent:
2063 self.input_hist_raw[-1] += '%s\n' % line
2063 if num_ini_spaces(line) > self.indent_current_nsp:
2064 if self.has_readline: # and some config option is set?
2064 line = line[self.indent_current_nsp:]
2065 try:
2065 self.indent_current_nsp = 0
2066 histlen = self.readline.get_current_history_length()
2066
2067 newhist = self.input_hist_raw[-1].rstrip()
2067 # store the unfiltered input before the user has any chance to modify
2068 self.readline.remove_history_item(histlen-1)
2068 # it.
2069 self.readline.replace_history_item(histlen-2,newhist)
2069 if line.strip():
2070 except AttributeError:
2070 if continue_prompt:
2071 pass # re{move,place}_history_item are new in 2.4.
2071 self.input_hist_raw[-1] += '%s\n' % line
2072 else:
2072 if self.has_readline: # and some config option is set?
2073 self.input_hist_raw.append('%s\n' % line)
2073 try:
2074 # only entries starting at first column go to shadow history
2074 histlen = self.readline.get_current_history_length()
2075 if line.lstrip() == line:
2075 newhist = self.input_hist_raw[-1].rstrip()
2076 self.shadowhist.add(line.strip())
2076 self.readline.remove_history_item(histlen-1)
2077 elif not continue_prompt:
2077 self.readline.replace_history_item(histlen-2,newhist)
2078 self.input_hist_raw.append('\n')
2078 except AttributeError:
2079 try:
2079 pass # re{move,place}_history_item are new in 2.4.
2080 lineout = self.prefilter(line,continue_prompt)
2080 else:
2081 except:
2081 self.input_hist_raw.append('%s\n' % line)
2082 # blanket except, in case a user-defined prefilter crashes, so it
2082 # only entries starting at first column go to shadow history
2083 # can't take all of ipython with it.
2083 if line.lstrip() == line:
2084 self.showtraceback()
2084 self.shadowhist.add(line.strip())
2085 return ''
2085 elif not continue_prompt:
2086 else:
2086 self.input_hist_raw.append('\n')
2087 return lineout
2087 try:
2088
2088 lineout = self.prefilter(line,continue_prompt)
2089 def _prefilter(self, line, continue_prompt):
2089 except:
2090 """Calls different preprocessors, depending on the form of line."""
2090 # blanket except, in case a user-defined prefilter crashes, so it
2091
2091 # can't take all of ipython with it.
2092 # All handlers *must* return a value, even if it's blank ('').
2092 self.showtraceback()
2093
2093 return ''
2094 # Lines are NOT logged here. Handlers should process the line as
2094 else:
2095 # needed, update the cache AND log it (so that the input cache array
2095 return lineout
2096 # stays synced).
2096
2097
2097 def _prefilter(self, line, continue_prompt):
2098 #.....................................................................
2098 """Calls different preprocessors, depending on the form of line."""
2099 # Code begins
2099
2100
2100 # All handlers *must* return a value, even if it's blank ('').
2101 #if line.startswith('%crash'): raise RuntimeError,'Crash now!' # dbg
2101
2102
2102 # Lines are NOT logged here. Handlers should process the line as
2103 # save the line away in case we crash, so the post-mortem handler can
2103 # needed, update the cache AND log it (so that the input cache array
2104 # record it
2104 # stays synced).
2105 self._last_input_line = line
2105
2106
2106 #.....................................................................
2107 #print '***line: <%s>' % line # dbg
2107 # Code begins
2108
2108
2109 if not line:
2109 #if line.startswith('%crash'): raise RuntimeError,'Crash now!' # dbg
2110 # Return immediately on purely empty lines, so that if the user
2110
2111 # previously typed some whitespace that started a continuation
2111 # save the line away in case we crash, so the post-mortem handler can
2112 # prompt, he can break out of that loop with just an empty line.
2112 # record it
2113 # This is how the default python prompt works.
2113 self._last_input_line = line
2114
2114
2115 # Only return if the accumulated input buffer was just whitespace!
2115 #print '***line: <%s>' % line # dbg
2116 if ''.join(self.buffer).isspace():
2116
2117 self.buffer[:] = []
2117 if not line:
2118 return ''
2118 # Return immediately on purely empty lines, so that if the user
2119
2119 # previously typed some whitespace that started a continuation
2120 line_info = prefilter.LineInfo(line, continue_prompt)
2120 # prompt, he can break out of that loop with just an empty line.
2121
2121 # This is how the default python prompt works.
2122 # the input history needs to track even empty lines
2122
2123 stripped = line.strip()
2123 # Only return if the accumulated input buffer was just whitespace!
2124
2124 if ''.join(self.buffer).isspace():
2125 if not stripped:
2125 self.buffer[:] = []
2126 if not continue_prompt:
2126 return ''
2127 self.outputcache.prompt_count -= 1
2127
2128 return self.handle_normal(line_info)
2128 line_info = prefilter.LineInfo(line, continue_prompt)
2129
2129
2130 # print '***cont',continue_prompt # dbg
2130 # the input history needs to track even empty lines
2131 # special handlers are only allowed for single line statements
2131 stripped = line.strip()
2132 if continue_prompt and not self.rc.multi_line_specials:
2132
2133 return self.handle_normal(line_info)
2133 if not stripped:
2134
2134 if not continue_prompt:
2135
2135 self.outputcache.prompt_count -= 1
2136 # See whether any pre-existing handler can take care of it
2136 return self.handle_normal(line_info)
2137 rewritten = self.hooks.input_prefilter(stripped)
2137
2138 if rewritten != stripped: # ok, some prefilter did something
2138 # print '***cont',continue_prompt # dbg
2139 rewritten = line_info.pre + rewritten # add indentation
2139 # special handlers are only allowed for single line statements
2140 return self.handle_normal(prefilter.LineInfo(rewritten,
2140 if continue_prompt and not self.rc.multi_line_specials:
2141 continue_prompt))
2141 return self.handle_normal(line_info)
2142
2142
2143 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2143
2144
2144 # See whether any pre-existing handler can take care of it
2145 return prefilter.prefilter(line_info, self)
2145 rewritten = self.hooks.input_prefilter(stripped)
2146
2146 if rewritten != stripped: # ok, some prefilter did something
2147
2147 rewritten = line_info.pre + rewritten # add indentation
2148 def _prefilter_dumb(self, line, continue_prompt):
2148 return self.handle_normal(prefilter.LineInfo(rewritten,
2149 """simple prefilter function, for debugging"""
2149 continue_prompt))
2150 return self.handle_normal(line,continue_prompt)
2150
2151
2151 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2152
2152
2153 def multiline_prefilter(self, line, continue_prompt):
2153 return prefilter.prefilter(line_info, self)
2154 """ Run _prefilter for each line of input
2154
2155
2155
2156 Covers cases where there are multiple lines in the user entry,
2156 def _prefilter_dumb(self, line, continue_prompt):
2157 which is the case when the user goes back to a multiline history
2157 """simple prefilter function, for debugging"""
2158 entry and presses enter.
2158 return self.handle_normal(line,continue_prompt)
2159
2159
2160 """
2160
2161 out = []
2161 def multiline_prefilter(self, line, continue_prompt):
2162 for l in line.rstrip('\n').split('\n'):
2162 """ Run _prefilter for each line of input
2163 out.append(self._prefilter(l, continue_prompt))
2163
2164 return '\n'.join(out)
2164 Covers cases where there are multiple lines in the user entry,
2165
2165 which is the case when the user goes back to a multiline history
2166 # Set the default prefilter() function (this can be user-overridden)
2166 entry and presses enter.
2167 prefilter = multiline_prefilter
2167
2168
2168 """
2169 def handle_normal(self,line_info):
2169 out = []
2170 """Handle normal input lines. Use as a template for handlers."""
2170 for l in line.rstrip('\n').split('\n'):
2171
2171 out.append(self._prefilter(l, continue_prompt))
2172 # With autoindent on, we need some way to exit the input loop, and I
2172 return '\n'.join(out)
2173 # don't want to force the user to have to backspace all the way to
2173
2174 # clear the line. The rule will be in this case, that either two
2174 # Set the default prefilter() function (this can be user-overridden)
2175 # lines of pure whitespace in a row, or a line of pure whitespace but
2175 prefilter = multiline_prefilter
2176 # of a size different to the indent level, will exit the input loop.
2176
2177 line = line_info.line
2177 def handle_normal(self,line_info):
2178 continue_prompt = line_info.continue_prompt
2178 """Handle normal input lines. Use as a template for handlers."""
2179
2179
2180 if (continue_prompt and self.autoindent and line.isspace() and
2180 # With autoindent on, we need some way to exit the input loop, and I
2181 (0 < abs(len(line) - self.indent_current_nsp) <= 2 or
2181 # don't want to force the user to have to backspace all the way to
2182 (self.buffer[-1]).isspace() )):
2182 # clear the line. The rule will be in this case, that either two
2183 line = ''
2183 # lines of pure whitespace in a row, or a line of pure whitespace but
2184
2184 # of a size different to the indent level, will exit the input loop.
2185 self.log(line,line,continue_prompt)
2185 line = line_info.line
2186 return line
2186 continue_prompt = line_info.continue_prompt
2187
2187
2188 def handle_alias(self,line_info):
2188 if (continue_prompt and self.autoindent and line.isspace() and
2189 """Handle alias input lines. """
2189 (0 < abs(len(line) - self.indent_current_nsp) <= 2 or
2190 tgt = self.alias_table[line_info.iFun]
2190 (self.buffer[-1]).isspace() )):
2191 # print "=>",tgt #dbg
2191 line = ''
2192 if callable(tgt):
2192
2193 if '$' in line_info.line:
2193 self.log(line,line,continue_prompt)
2194 call_meth = '(_ip, _ip.itpl(%s))'
2194 return line
2195 else:
2195
2196 call_meth = '(_ip,%s)'
2196 def handle_alias(self,line_info):
2197 line_out = ("%s_sh.%s" + call_meth) % (line_info.preWhitespace,
2197 """Handle alias input lines. """
2198 line_info.iFun,
2198 tgt = self.alias_table[line_info.iFun]
2199 make_quoted_expr(line_info.line))
2199 # print "=>",tgt #dbg
2200 else:
2200 if callable(tgt):
2201 transformed = self.expand_aliases(line_info.iFun,line_info.theRest)
2201 if '$' in line_info.line:
2202
2202 call_meth = '(_ip, _ip.itpl(%s))'
2203 # pre is needed, because it carries the leading whitespace. Otherwise
2203 else:
2204 # aliases won't work in indented sections.
2204 call_meth = '(_ip,%s)'
2205 line_out = '%s_ip.system(%s)' % (line_info.preWhitespace,
2205 line_out = ("%s_sh.%s" + call_meth) % (line_info.preWhitespace,
2206 make_quoted_expr( transformed ))
2206 line_info.iFun,
2207
2207 make_quoted_expr(line_info.line))
2208 self.log(line_info.line,line_out,line_info.continue_prompt)
2208 else:
2209 #print 'line out:',line_out # dbg
2209 transformed = self.expand_aliases(line_info.iFun,line_info.theRest)
2210 return line_out
2210
2211
2211 # pre is needed, because it carries the leading whitespace. Otherwise
2212 def handle_shell_escape(self, line_info):
2212 # aliases won't work in indented sections.
2213 """Execute the line in a shell, empty return value"""
2213 line_out = '%s_ip.system(%s)' % (line_info.preWhitespace,
2214 #print 'line in :', `line` # dbg
2214 make_quoted_expr( transformed ))
2215 line = line_info.line
2215
2216 if line.lstrip().startswith('!!'):
2216 self.log(line_info.line,line_out,line_info.continue_prompt)
2217 # rewrite LineInfo's line, iFun and theRest to properly hold the
2217 #print 'line out:',line_out # dbg
2218 # call to %sx and the actual command to be executed, so
2218 return line_out
2219 # handle_magic can work correctly. Note that this works even if
2219
2220 # the line is indented, so it handles multi_line_specials
2220 def handle_shell_escape(self, line_info):
2221 # properly.
2221 """Execute the line in a shell, empty return value"""
2222 new_rest = line.lstrip()[2:]
2222 #print 'line in :', `line` # dbg
2223 line_info.line = '%ssx %s' % (self.ESC_MAGIC,new_rest)
2223 line = line_info.line
2224 line_info.iFun = 'sx'
2224 if line.lstrip().startswith('!!'):
2225 line_info.theRest = new_rest
2225 # rewrite LineInfo's line, iFun and theRest to properly hold the
2226 return self.handle_magic(line_info)
2226 # call to %sx and the actual command to be executed, so
2227 else:
2227 # handle_magic can work correctly. Note that this works even if
2228 cmd = line.lstrip().lstrip('!')
2228 # the line is indented, so it handles multi_line_specials
2229 line_out = '%s_ip.system(%s)' % (line_info.preWhitespace,
2229 # properly.
2230 make_quoted_expr(cmd))
2230 new_rest = line.lstrip()[2:]
2231 # update cache/log and return
2231 line_info.line = '%ssx %s' % (self.ESC_MAGIC,new_rest)
2232 self.log(line,line_out,line_info.continue_prompt)
2232 line_info.iFun = 'sx'
2233 return line_out
2233 line_info.theRest = new_rest
2234
2234 return self.handle_magic(line_info)
2235 def handle_magic(self, line_info):
2235 else:
2236 """Execute magic functions."""
2236 cmd = line.lstrip().lstrip('!')
2237 iFun = line_info.iFun
2237 line_out = '%s_ip.system(%s)' % (line_info.preWhitespace,
2238 theRest = line_info.theRest
2238 make_quoted_expr(cmd))
2239 cmd = '%s_ip.magic(%s)' % (line_info.preWhitespace,
2239 # update cache/log and return
2240 make_quoted_expr(iFun + " " + theRest))
2240 self.log(line,line_out,line_info.continue_prompt)
2241 self.log(line_info.line,cmd,line_info.continue_prompt)
2241 return line_out
2242 #print 'in handle_magic, cmd=<%s>' % cmd # dbg
2242
2243 return cmd
2243 def handle_magic(self, line_info):
2244
2244 """Execute magic functions."""
2245 def handle_auto(self, line_info):
2245 iFun = line_info.iFun
2246 """Hande lines which can be auto-executed, quoting if requested."""
2246 theRest = line_info.theRest
2247
2247 cmd = '%s_ip.magic(%s)' % (line_info.preWhitespace,
2248 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2248 make_quoted_expr(iFun + " " + theRest))
2249 line = line_info.line
2249 self.log(line_info.line,cmd,line_info.continue_prompt)
2250 iFun = line_info.iFun
2250 #print 'in handle_magic, cmd=<%s>' % cmd # dbg
2251 theRest = line_info.theRest
2251 return cmd
2252 pre = line_info.pre
2252
2253 continue_prompt = line_info.continue_prompt
2253 def handle_auto(self, line_info):
2254 obj = line_info.ofind(self)['obj']
2254 """Hande lines which can be auto-executed, quoting if requested."""
2255
2255
2256 # This should only be active for single-line input!
2256 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2257 if continue_prompt:
2257 line = line_info.line
2258 self.log(line,line,continue_prompt)
2258 iFun = line_info.iFun
2259 return line
2259 theRest = line_info.theRest
2260
2260 pre = line_info.pre
2261 force_auto = isinstance(obj, IPython.ipapi.IPyAutocall)
2261 continue_prompt = line_info.continue_prompt
2262 auto_rewrite = True
2262 obj = line_info.ofind(self)['obj']
2263
2263
2264 if pre == self.ESC_QUOTE:
2264 # This should only be active for single-line input!
2265 # Auto-quote splitting on whitespace
2265 if continue_prompt:
2266 newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) )
2266 self.log(line,line,continue_prompt)
2267 elif pre == self.ESC_QUOTE2:
2267 return line
2268 # Auto-quote whole string
2268
2269 newcmd = '%s("%s")' % (iFun,theRest)
2269 force_auto = isinstance(obj, IPython.ipapi.IPyAutocall)
2270 elif pre == self.ESC_PAREN:
2270 auto_rewrite = True
2271 newcmd = '%s(%s)' % (iFun,",".join(theRest.split()))
2271
2272 else:
2272 if pre == self.ESC_QUOTE:
2273 # Auto-paren.
2273 # Auto-quote splitting on whitespace
2274 # We only apply it to argument-less calls if the autocall
2274 newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) )
2275 # parameter is set to 2. We only need to check that autocall is <
2275 elif pre == self.ESC_QUOTE2:
2276 # 2, since this function isn't called unless it's at least 1.
2276 # Auto-quote whole string
2277 if not theRest and (self.rc.autocall < 2) and not force_auto:
2277 newcmd = '%s("%s")' % (iFun,theRest)
2278 newcmd = '%s %s' % (iFun,theRest)
2278 elif pre == self.ESC_PAREN:
2279 auto_rewrite = False
2279 newcmd = '%s(%s)' % (iFun,",".join(theRest.split()))
2280 else:
2280 else:
2281 if not force_auto and theRest.startswith('['):
2281 # Auto-paren.
2282 if hasattr(obj,'__getitem__'):
2282 # We only apply it to argument-less calls if the autocall
2283 # Don't autocall in this case: item access for an object
2283 # parameter is set to 2. We only need to check that autocall is <
2284 # which is BOTH callable and implements __getitem__.
2284 # 2, since this function isn't called unless it's at least 1.
2285 newcmd = '%s %s' % (iFun,theRest)
2285 if not theRest and (self.rc.autocall < 2) and not force_auto:
2286 auto_rewrite = False
2286 newcmd = '%s %s' % (iFun,theRest)
2287 else:
2287 auto_rewrite = False
2288 # if the object doesn't support [] access, go ahead and
2288 else:
2289 # autocall
2289 if not force_auto and theRest.startswith('['):
2290 newcmd = '%s(%s)' % (iFun.rstrip(),theRest)
2290 if hasattr(obj,'__getitem__'):
2291 elif theRest.endswith(';'):
2291 # Don't autocall in this case: item access for an object
2292 newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1])
2292 # which is BOTH callable and implements __getitem__.
2293 else:
2293 newcmd = '%s %s' % (iFun,theRest)
2294 newcmd = '%s(%s)' % (iFun.rstrip(), theRest)
2294 auto_rewrite = False
2295
2295 else:
2296 if auto_rewrite:
2296 # if the object doesn't support [] access, go ahead and
2297 rw = self.outputcache.prompt1.auto_rewrite() + newcmd
2297 # autocall
2298
2298 newcmd = '%s(%s)' % (iFun.rstrip(),theRest)
2299 try:
2299 elif theRest.endswith(';'):
2300 # plain ascii works better w/ pyreadline, on some machines, so
2300 newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1])
2301 # we use it and only print uncolored rewrite if we have unicode
2301 else:
2302 rw = str(rw)
2302 newcmd = '%s(%s)' % (iFun.rstrip(), theRest)
2303 print >>Term.cout, rw
2303
2304 except UnicodeEncodeError:
2304 if auto_rewrite:
2305 print "-------------->" + newcmd
2305 rw = self.outputcache.prompt1.auto_rewrite() + newcmd
2306
2306
2307 # log what is now valid Python, not the actual user input (without the
2307 try:
2308 # final newline)
2308 # plain ascii works better w/ pyreadline, on some machines, so
2309 self.log(line,newcmd,continue_prompt)
2309 # we use it and only print uncolored rewrite if we have unicode
2310 return newcmd
2310 rw = str(rw)
2311
2311 print >>Term.cout, rw
2312 def handle_help(self, line_info):
2312 except UnicodeEncodeError:
2313 """Try to get some help for the object.
2313 print "-------------->" + newcmd
2314
2314
2315 obj? or ?obj -> basic information.
2315 # log what is now valid Python, not the actual user input (without the
2316 obj?? or ??obj -> more details.
2316 # final newline)
2317 """
2317 self.log(line,newcmd,continue_prompt)
2318
2318 return newcmd
2319 line = line_info.line
2319
2320 # We need to make sure that we don't process lines which would be
2320 def handle_help(self, line_info):
2321 # otherwise valid python, such as "x=1 # what?"
2321 """Try to get some help for the object.
2322 try:
2322
2323 codeop.compile_command(line)
2323 obj? or ?obj -> basic information.
2324 except SyntaxError:
2324 obj?? or ??obj -> more details.
2325 # We should only handle as help stuff which is NOT valid syntax
2325 """
2326 if line[0]==self.ESC_HELP:
2326
2327 line = line[1:]
2327 line = line_info.line
2328 elif line[-1]==self.ESC_HELP:
2328 # We need to make sure that we don't process lines which would be
2329 line = line[:-1]
2329 # otherwise valid python, such as "x=1 # what?"
2330 self.log(line,'#?'+line,line_info.continue_prompt)
2330 try:
2331 if line:
2331 codeop.compile_command(line)
2332 #print 'line:<%r>' % line # dbg
2332 except SyntaxError:
2333 self.magic_pinfo(line)
2333 # We should only handle as help stuff which is NOT valid syntax
2334 else:
2334 if line[0]==self.ESC_HELP:
2335 page(self.usage,screen_lines=self.rc.screen_length)
2335 line = line[1:]
2336 return '' # Empty string is needed here!
2336 elif line[-1]==self.ESC_HELP:
2337 except:
2337 line = line[:-1]
2338 # Pass any other exceptions through to the normal handler
2338 self.log(line,'#?'+line,line_info.continue_prompt)
2339 return self.handle_normal(line_info)
2339 if line:
2340 else:
2340 #print 'line:<%r>' % line # dbg
2341 # If the code compiles ok, we should handle it normally
2341 self.magic_pinfo(line)
2342 return self.handle_normal(line_info)
2342 else:
2343
2343 page(self.usage,screen_lines=self.rc.screen_length)
2344 def getapi(self):
2344 return '' # Empty string is needed here!
2345 """ Get an IPApi object for this shell instance
2345 except:
2346
2346 # Pass any other exceptions through to the normal handler
2347 Getting an IPApi object is always preferable to accessing the shell
2347 return self.handle_normal(line_info)
2348 directly, but this holds true especially for extensions.
2348 else:
2349
2349 # If the code compiles ok, we should handle it normally
2350 It should always be possible to implement an extension with IPApi
2350 return self.handle_normal(line_info)
2351 alone. If not, contact maintainer to request an addition.
2351
2352
2352 def getapi(self):
2353 """
2353 """ Get an IPApi object for this shell instance
2354 return self.api
2354
2355
2355 Getting an IPApi object is always preferable to accessing the shell
2356 def handle_emacs(self, line_info):
2356 directly, but this holds true especially for extensions.
2357 """Handle input lines marked by python-mode."""
2357
2358
2358 It should always be possible to implement an extension with IPApi
2359 # Currently, nothing is done. Later more functionality can be added
2359 alone. If not, contact maintainer to request an addition.
2360 # here if needed.
2360
2361
2361 """
2362 # The input cache shouldn't be updated
2362 return self.api
2363 return line_info.line
2363
2364
2364 def handle_emacs(self, line_info):
2365
2365 """Handle input lines marked by python-mode."""
2366 def mktempfile(self,data=None):
2366
2367 """Make a new tempfile and return its filename.
2367 # Currently, nothing is done. Later more functionality can be added
2368
2368 # here if needed.
2369 This makes a call to tempfile.mktemp, but it registers the created
2369
2370 filename internally so ipython cleans it up at exit time.
2370 # The input cache shouldn't be updated
2371
2371 return line_info.line
2372 Optional inputs:
2372
2373
2373
2374 - data(None): if data is given, it gets written out to the temp file
2374 def mktempfile(self,data=None):
2375 immediately, and the file is closed again."""
2375 """Make a new tempfile and return its filename.
2376
2376
2377 filename = tempfile.mktemp('.py','ipython_edit_')
2377 This makes a call to tempfile.mktemp, but it registers the created
2378 self.tempfiles.append(filename)
2378 filename internally so ipython cleans it up at exit time.
2379
2379
2380 if data:
2380 Optional inputs:
2381 tmp_file = open(filename,'w')
2381
2382 tmp_file.write(data)
2382 - data(None): if data is given, it gets written out to the temp file
2383 tmp_file.close()
2383 immediately, and the file is closed again."""
2384 return filename
2384
2385
2385 filename = tempfile.mktemp('.py','ipython_edit_')
2386 def write(self,data):
2386 self.tempfiles.append(filename)
2387 """Write a string to the default output"""
2387
2388 Term.cout.write(data)
2388 if data:
2389
2389 tmp_file = open(filename,'w')
2390 def write_err(self,data):
2390 tmp_file.write(data)
2391 """Write a string to the default error output"""
2391 tmp_file.close()
2392 Term.cerr.write(data)
2392 return filename
2393
2393
2394 def exit(self):
2394 def write(self,data):
2395 """Handle interactive exit.
2395 """Write a string to the default output"""
2396
2396 Term.cout.write(data)
2397 This method sets the exit_now attribute."""
2397
2398
2398 def write_err(self,data):
2399 if self.rc.confirm_exit:
2399 """Write a string to the default error output"""
2400 if self.ask_yes_no('Do you really want to exit ([y]/n)?','y'):
2400 Term.cerr.write(data)
2401 self.exit_now = True
2401
2402 else:
2402 def exit(self):
2403 self.exit_now = True
2403 """Handle interactive exit.
2404
2404
2405 def safe_execfile(self,fname,*where,**kw):
2405 This method sets the exit_now attribute."""
2406 """A safe version of the builtin execfile().
2406
2407
2407 if self.rc.confirm_exit:
2408 This version will never throw an exception, and knows how to handle
2408 if self.ask_yes_no('Do you really want to exit ([y]/n)?','y'):
2409 ipython logs as well.
2409 self.exit_now = True
2410
2410 else:
2411 :Parameters:
2411 self.exit_now = True
2412 fname : string
2412
2413 Name of the file to be executed.
2413 def safe_execfile(self,fname,*where,**kw):
2414
2414 """A safe version of the builtin execfile().
2415 where : tuple
2415
2416 One or two namespaces, passed to execfile() as (globals,locals).
2416 This version will never throw an exception, and knows how to handle
2417 If only one is given, it is passed as both.
2417 ipython logs as well.
2418
2418
2419 :Keywords:
2419 :Parameters:
2420 islog : boolean (False)
2420 fname : string
2421
2421 Name of the file to be executed.
2422 quiet : boolean (True)
2422
2423
2423 where : tuple
2424 exit_ignore : boolean (False)
2424 One or two namespaces, passed to execfile() as (globals,locals).
2425 """
2425 If only one is given, it is passed as both.
2426
2426
2427 def syspath_cleanup():
2427 :Keywords:
2428 """Internal cleanup routine for sys.path."""
2428 islog : boolean (False)
2429 if add_dname:
2429
2430 try:
2430 quiet : boolean (True)
2431 sys.path.remove(dname)
2431
2432 except ValueError:
2432 exit_ignore : boolean (False)
2433 # For some reason the user has already removed it, ignore.
2433 """
2434 pass
2434
2435
2435 def syspath_cleanup():
2436 fname = os.path.expanduser(fname)
2436 """Internal cleanup routine for sys.path."""
2437
2437 if add_dname:
2438 # Find things also in current directory. This is needed to mimic the
2438 try:
2439 # behavior of running a script from the system command line, where
2439 sys.path.remove(dname)
2440 # Python inserts the script's directory into sys.path
2440 except ValueError:
2441 dname = os.path.dirname(os.path.abspath(fname))
2441 # For some reason the user has already removed it, ignore.
2442 add_dname = False
2442 pass
2443 if dname not in sys.path:
2443
2444 sys.path.insert(0,dname)
2444 fname = os.path.expanduser(fname)
2445 add_dname = True
2445
2446
2446 # Find things also in current directory. This is needed to mimic the
2447 try:
2447 # behavior of running a script from the system command line, where
2448 xfile = open(fname)
2448 # Python inserts the script's directory into sys.path
2449 except:
2449 dname = os.path.dirname(os.path.abspath(fname))
2450 print >> Term.cerr, \
2450 add_dname = False
2451 'Could not open file <%s> for safe execution.' % fname
2451 if dname not in sys.path:
2452 syspath_cleanup()
2452 sys.path.insert(0,dname)
2453 return None
2453 add_dname = True
2454
2454
2455 kw.setdefault('islog',0)
2455 try:
2456 kw.setdefault('quiet',1)
2456 xfile = open(fname)
2457 kw.setdefault('exit_ignore',0)
2457 except:
2458
2458 print >> Term.cerr, \
2459 first = xfile.readline()
2459 'Could not open file <%s> for safe execution.' % fname
2460 loghead = str(self.loghead_tpl).split('\n',1)[0].strip()
2460 syspath_cleanup()
2461 xfile.close()
2461 return None
2462 # line by line execution
2462
2463 if first.startswith(loghead) or kw['islog']:
2463 kw.setdefault('islog',0)
2464 print 'Loading log file <%s> one line at a time...' % fname
2464 kw.setdefault('quiet',1)
2465 if kw['quiet']:
2465 kw.setdefault('exit_ignore',0)
2466 stdout_save = sys.stdout
2466
2467 sys.stdout = StringIO.StringIO()
2467 first = xfile.readline()
2468 try:
2468 loghead = str(self.loghead_tpl).split('\n',1)[0].strip()
2469 globs,locs = where[0:2]
2469 xfile.close()
2470 except:
2470 # line by line execution
2471 try:
2471 if first.startswith(loghead) or kw['islog']:
2472 globs = locs = where[0]
2472 print 'Loading log file <%s> one line at a time...' % fname
2473 except:
2473 if kw['quiet']:
2474 globs = locs = globals()
2474 stdout_save = sys.stdout
2475 badblocks = []
2475 sys.stdout = StringIO.StringIO()
2476
2476 try:
2477 # we also need to identify indented blocks of code when replaying
2477 globs,locs = where[0:2]
2478 # logs and put them together before passing them to an exec
2478 except:
2479 # statement. This takes a bit of regexp and look-ahead work in the
2479 try:
2480 # file. It's easiest if we swallow the whole thing in memory
2480 globs = locs = where[0]
2481 # first, and manually walk through the lines list moving the
2481 except:
2482 # counter ourselves.
2482 globs = locs = globals()
2483 indent_re = re.compile('\s+\S')
2483 badblocks = []
2484 xfile = open(fname)
2484
2485 filelines = xfile.readlines()
2485 # we also need to identify indented blocks of code when replaying
2486 xfile.close()
2486 # logs and put them together before passing them to an exec
2487 nlines = len(filelines)
2487 # statement. This takes a bit of regexp and look-ahead work in the
2488 lnum = 0
2488 # file. It's easiest if we swallow the whole thing in memory
2489 while lnum < nlines:
2489 # first, and manually walk through the lines list moving the
2490 line = filelines[lnum]
2490 # counter ourselves.
2491 lnum += 1
2491 indent_re = re.compile('\s+\S')
2492 # don't re-insert logger status info into cache
2492 xfile = open(fname)
2493 if line.startswith('#log#'):
2493 filelines = xfile.readlines()
2494 continue
2494 xfile.close()
2495 else:
2495 nlines = len(filelines)
2496 # build a block of code (maybe a single line) for execution
2496 lnum = 0
2497 block = line
2497 while lnum < nlines:
2498 try:
2498 line = filelines[lnum]
2499 next = filelines[lnum] # lnum has already incremented
2499 lnum += 1
2500 except:
2500 # don't re-insert logger status info into cache
2501 next = None
2501 if line.startswith('#log#'):
2502 while next and indent_re.match(next):
2502 continue
2503 block += next
2503 else:
2504 lnum += 1
2504 # build a block of code (maybe a single line) for execution
2505 try:
2505 block = line
2506 next = filelines[lnum]
2506 try:
2507 except:
2507 next = filelines[lnum] # lnum has already incremented
2508 next = None
2508 except:
2509 # now execute the block of one or more lines
2509 next = None
2510 try:
2510 while next and indent_re.match(next):
2511 exec block in globs,locs
2511 block += next
2512 except SystemExit:
2512 lnum += 1
2513 pass
2513 try:
2514 except:
2514 next = filelines[lnum]
2515 badblocks.append(block.rstrip())
2515 except:
2516 if kw['quiet']: # restore stdout
2516 next = None
2517 sys.stdout.close()
2517 # now execute the block of one or more lines
2518 sys.stdout = stdout_save
2518 try:
2519 print 'Finished replaying log file <%s>' % fname
2519 exec block in globs,locs
2520 if badblocks:
2520 except SystemExit:
2521 print >> sys.stderr, ('\nThe following lines/blocks in file '
2521 pass
2522 '<%s> reported errors:' % fname)
2522 except:
2523
2523 badblocks.append(block.rstrip())
2524 for badline in badblocks:
2524 if kw['quiet']: # restore stdout
2525 print >> sys.stderr, badline
2525 sys.stdout.close()
2526 else: # regular file execution
2526 sys.stdout = stdout_save
2527 try:
2527 print 'Finished replaying log file <%s>' % fname
2528 if sys.platform == 'win32' and sys.version_info < (2,5,1):
2528 if badblocks:
2529 # Work around a bug in Python for Windows. The bug was
2529 print >> sys.stderr, ('\nThe following lines/blocks in file '
2530 # fixed in in Python 2.5 r54159 and 54158, but that's still
2530 '<%s> reported errors:' % fname)
2531 # SVN Python as of March/07. For details, see:
2531
2532 # http://projects.scipy.org/ipython/ipython/ticket/123
2532 for badline in badblocks:
2533 try:
2533 print >> sys.stderr, badline
2534 globs,locs = where[0:2]
2534 else: # regular file execution
2535 except:
2535 try:
2536 try:
2536 if sys.platform == 'win32' and sys.version_info < (2,5,1):
2537 globs = locs = where[0]
2537 # Work around a bug in Python for Windows. The bug was
2538 except:
2538 # fixed in in Python 2.5 r54159 and 54158, but that's still
2539 globs = locs = globals()
2539 # SVN Python as of March/07. For details, see:
2540 exec file(fname) in globs,locs
2540 # http://projects.scipy.org/ipython/ipython/ticket/123
2541 else:
2541 try:
2542 execfile(fname,*where)
2542 globs,locs = where[0:2]
2543 except SyntaxError:
2543 except:
2544 self.showsyntaxerror()
2544 try:
2545 warn('Failure executing file: <%s>' % fname)
2545 globs = locs = where[0]
2546 except SystemExit,status:
2546 except:
2547 # Code that correctly sets the exit status flag to success (0)
2547 globs = locs = globals()
2548 # shouldn't be bothered with a traceback. Note that a plain
2548 exec file(fname) in globs,locs
2549 # sys.exit() does NOT set the message to 0 (it's empty) so that
2549 else:
2550 # will still get a traceback. Note that the structure of the
2550 execfile(fname,*where)
2551 # SystemExit exception changed between Python 2.4 and 2.5, so
2551 except SyntaxError:
2552 # the checks must be done in a version-dependent way.
2552 self.showsyntaxerror()
2553 show = False
2553 warn('Failure executing file: <%s>' % fname)
2554
2554 except SystemExit,status:
2555 if sys.version_info[:2] > (2,5):
2555 # Code that correctly sets the exit status flag to success (0)
2556 if status.message!=0 and not kw['exit_ignore']:
2556 # shouldn't be bothered with a traceback. Note that a plain
2557 show = True
2557 # sys.exit() does NOT set the message to 0 (it's empty) so that
2558 else:
2558 # will still get a traceback. Note that the structure of the
2559 if status.code and not kw['exit_ignore']:
2559 # SystemExit exception changed between Python 2.4 and 2.5, so
2560 show = True
2560 # the checks must be done in a version-dependent way.
2561 if show:
2561 show = False
2562 self.showtraceback()
2562
2563 warn('Failure executing file: <%s>' % fname)
2563 if sys.version_info[:2] > (2,5):
2564 except:
2564 if status.message!=0 and not kw['exit_ignore']:
2565 self.showtraceback()
2565 show = True
2566 warn('Failure executing file: <%s>' % fname)
2566 else:
2567
2567 if status.code and not kw['exit_ignore']:
2568 syspath_cleanup()
2568 show = True
2569 if show:
2570 self.showtraceback()
2571 warn('Failure executing file: <%s>' % fname)
2572 except:
2573 self.showtraceback()
2574 warn('Failure executing file: <%s>' % fname)
2575
2576 syspath_cleanup()
2569
2577
2570 #************************* end of file <iplib.py> *****************************
2578 #************************* end of file <iplib.py> *****************************
@@ -1,43 +1,56 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2 """ Imports and provides the 'correct' version of readline for the platform.
2 """ Imports and provides the 'correct' version of readline for the platform.
3
3
4 Readline is used throughout IPython as 'import IPython.rlineimpl as readline'.
4 Readline is used throughout IPython as 'import IPython.rlineimpl as readline'.
5
5
6 In addition to normal readline stuff, this module provides have_readline
6 In addition to normal readline stuff, this module provides have_readline
7 boolean and _outputfile variable used in genutils.
7 boolean and _outputfile variable used in genutils.
8
8
9 $Id: Magic.py 1096 2006-01-28 20:08:02Z vivainio $"""
9 $Id: Magic.py 1096 2006-01-28 20:08:02Z vivainio $"""
10
10
11 import sys
11 import sys
12
12
13 try:
13 try:
14 from readline import *
14 from readline import *
15 import readline as _rl
15 import readline as _rl
16 have_readline = True
16 have_readline = True
17 except ImportError:
17 except ImportError:
18 try:
18 try:
19 from pyreadline import *
19 from pyreadline import *
20 import pyreadline as _rl
20 import pyreadline as _rl
21 have_readline = True
21 have_readline = True
22 except ImportError:
22 except ImportError:
23 have_readline = False
23 have_readline = False
24
24
25 if sys.platform == 'win32' and have_readline:
25 if sys.platform == 'win32' and have_readline:
26 try:
26 try:
27 _outputfile=_rl.GetOutputFile()
27 _outputfile=_rl.GetOutputFile()
28 except AttributeError:
28 except AttributeError:
29 print "Failed GetOutputFile"
29 print "Failed GetOutputFile"
30 have_readline = False
30 have_readline = False
31
31
32 # Test to see if libedit is being used instead of GNU readline.
33 # Thanks to Boyd Waters for this patch.
34 uses_libedit = False
35 if sys.platform == 'darwin' and have_readline:
36 import commands
37 (status, result) = commands.getstatusoutput( "otool -L %s | grep libedit" % _rl.__file__ )
38 if status == 0 and len(result) > 0:
39 # we are bound to libedit - new in Leopard
40 _rl.parse_and_bind("bind ^I rl_complete")
41 print "Leopard libedit detected."
42 uses_libedit = True
43
44
32 # the clear_history() function was only introduced in Python 2.4 and is
45 # the clear_history() function was only introduced in Python 2.4 and is
33 # actually optional in the readline API, so we must explicitly check for its
46 # actually optional in the readline API, so we must explicitly check for its
34 # existence. Some known platforms actually don't have it. This thread:
47 # existence. Some known platforms actually don't have it. This thread:
35 # http://mail.python.org/pipermail/python-dev/2003-August/037845.html
48 # http://mail.python.org/pipermail/python-dev/2003-August/037845.html
36 # has the original discussion.
49 # has the original discussion.
37
50
38 if have_readline:
51 if have_readline:
39 try:
52 try:
40 _rl.clear_history
53 _rl.clear_history
41 except AttributeError:
54 except AttributeError:
42 def clear_history(): pass
55 def clear_history(): pass
43 _rl.clear_history = clear_history No newline at end of file
56 _rl.clear_history = clear_history
@@ -1,7208 +1,7213 b''
1 2007-11-01 Brian Granger <ellisonbg@gmail.com>
2
3 * iplib.py, rlineimpl.py: Applied Body Water's patches to get IPython
4 working with OS X 10.5 libedit implementation of readline.
5
1 2007-10-24 Ville Vainio <vivainio@gmail.com>
6 2007-10-24 Ville Vainio <vivainio@gmail.com>
2
7
3 * iplib.py(user_setup): To route around buggy installations where
8 * iplib.py(user_setup): To route around buggy installations where
4 UserConfig is not available, create a minimal _ipython.
9 UserConfig is not available, create a minimal _ipython.
5
10
6 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
11 2007-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
7
12
8 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
13 * IPython/OInspect.py (Inspector.pinfo): fix bug that could arise
9 when querying objects with no __class__ attribute (such as
14 when querying objects with no __class__ attribute (such as
10 f2py-generated modules).
15 f2py-generated modules).
11
16
12 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
17 2007-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
13
18
14 * IPython/Magic.py (magic_time): track compilation time and report
19 * IPython/Magic.py (magic_time): track compilation time and report
15 it if longer than 0.1s (fix done to %time and %timeit). After a
20 it if longer than 0.1s (fix done to %time and %timeit). After a
16 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
21 SAGE bug report: http://trac.sagemath.org/sage_trac/ticket/632.
17
22
18 2007-09-18 Ville Vainio <vivainio@gmail.com>
23 2007-09-18 Ville Vainio <vivainio@gmail.com>
19
24
20 * genutils.py(make_quoted_expr): Do not use Itpl, it does
25 * genutils.py(make_quoted_expr): Do not use Itpl, it does
21 not support unicode at the moment. Fixes (many) magic calls with
26 not support unicode at the moment. Fixes (many) magic calls with
22 special characters.
27 special characters.
23
28
24 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
29 2007-09-14 Fernando Perez <Fernando.Perez@colorado.edu>
25
30
26 * IPython/genutils.py (doctest_reload): expose the doctest
31 * IPython/genutils.py (doctest_reload): expose the doctest
27 reloader to the user so that people can easily reset doctest while
32 reloader to the user so that people can easily reset doctest while
28 using it interactively. Fixes a problem reported by Jorgen.
33 using it interactively. Fixes a problem reported by Jorgen.
29
34
30 * IPython/iplib.py (InteractiveShell.__init__): protect the
35 * IPython/iplib.py (InteractiveShell.__init__): protect the
31 FakeModule instances used for __main__ in %run calls from
36 FakeModule instances used for __main__ in %run calls from
32 deletion, so that user code defined in them isn't left with
37 deletion, so that user code defined in them isn't left with
33 dangling references due to the Python module deletion machinery.
38 dangling references due to the Python module deletion machinery.
34 This should fix the problems reported by Darren.
39 This should fix the problems reported by Darren.
35
40
36 2007-09-10 Darren Dale <dd55@cornell.edu>
41 2007-09-10 Darren Dale <dd55@cornell.edu>
37
42
38 * Cleanup of IPShellQt and IPShellQt4
43 * Cleanup of IPShellQt and IPShellQt4
39
44
40 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
45 2007-09-09 Fernando Perez <Fernando.Perez@colorado.edu>
41
46
42 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
47 * IPython/FakeModule.py (FakeModule.__init__): further fixes for
43 doctest support.
48 doctest support.
44
49
45 * IPython/iplib.py (safe_execfile): minor docstring improvements.
50 * IPython/iplib.py (safe_execfile): minor docstring improvements.
46
51
47 2007-09-08 Ville Vainio <vivainio@gmail.com>
52 2007-09-08 Ville Vainio <vivainio@gmail.com>
48
53
49 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
54 * Magic.py (%pushd, %popd, %dirs): Fix dir stack - push *current*
50 directory, not the target directory.
55 directory, not the target directory.
51
56
52 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
57 * ipapi.py, Magic.py, iplib.py: Add ipapi.UsageError, a lighter weight
53 exception that won't print the tracebacks. Switched many magics to
58 exception that won't print the tracebacks. Switched many magics to
54 raise them on error situations, also GetoptError is not printed
59 raise them on error situations, also GetoptError is not printed
55 anymore.
60 anymore.
56
61
57 2007-09-07 Ville Vainio <vivainio@gmail.com>
62 2007-09-07 Ville Vainio <vivainio@gmail.com>
58
63
59 * iplib.py: do not auto-alias "dir", it screws up other dir auto
64 * iplib.py: do not auto-alias "dir", it screws up other dir auto
60 aliases.
65 aliases.
61
66
62 * genutils.py: SList.grep() implemented.
67 * genutils.py: SList.grep() implemented.
63
68
64 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
69 * ipy_editors.py, UserConfig/ipy_user_conf.py: Add some editors
65 for easy "out of the box" setup of several common editors, so that
70 for easy "out of the box" setup of several common editors, so that
66 e.g. '%edit os.path.isfile' will jump to the correct line
71 e.g. '%edit os.path.isfile' will jump to the correct line
67 automatically. Contributions for command lines of your favourite
72 automatically. Contributions for command lines of your favourite
68 editors welcome.
73 editors welcome.
69
74
70 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
75 2007-09-07 Fernando Perez <Fernando.Perez@colorado.edu>
71
76
72 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
77 * IPython/OInspect.py (Inspector.pinfo): fixed bug that was
73 preventing source display in certain cases. In reality I think
78 preventing source display in certain cases. In reality I think
74 the problem is with Ubuntu's Python build, but this change works
79 the problem is with Ubuntu's Python build, but this change works
75 around the issue in some cases (not in all, unfortunately). I'd
80 around the issue in some cases (not in all, unfortunately). I'd
76 filed a Python bug on this with more details, but in the change of
81 filed a Python bug on this with more details, but in the change of
77 bug trackers it seems to have been lost.
82 bug trackers it seems to have been lost.
78
83
79 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
84 * IPython/Magic.py (magic_dhist): restore %dhist. No, cd -TAB is
80 not the same, it's not self-documenting, doesn't allow range
85 not the same, it's not self-documenting, doesn't allow range
81 selection, and sorts alphabetically instead of numerically.
86 selection, and sorts alphabetically instead of numerically.
82 (magic_r): restore %r. No, "up + enter. One char magic" is not
87 (magic_r): restore %r. No, "up + enter. One char magic" is not
83 the same thing, since %r takes parameters to allow fast retrieval
88 the same thing, since %r takes parameters to allow fast retrieval
84 of old commands. I've received emails from users who use this a
89 of old commands. I've received emails from users who use this a
85 LOT, so it stays.
90 LOT, so it stays.
86 (magic_automagic): restore %automagic. "use _ip.option.automagic"
91 (magic_automagic): restore %automagic. "use _ip.option.automagic"
87 is not a valid replacement b/c it doesn't provide an complete
92 is not a valid replacement b/c it doesn't provide an complete
88 explanation (which the automagic docstring does).
93 explanation (which the automagic docstring does).
89 (magic_autocall): restore %autocall, with improved docstring.
94 (magic_autocall): restore %autocall, with improved docstring.
90 Same argument as for others, "use _ip.options.autocall" is not a
95 Same argument as for others, "use _ip.options.autocall" is not a
91 valid replacement.
96 valid replacement.
92 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
97 (magic_pdef): restore %pdef & friends. Used widely, mentioned in
93 tutorials and online docs.
98 tutorials and online docs.
94
99
95 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
100 2007-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
96
101
97 * IPython/usage.py (quick_reference): mention magics in quickref,
102 * IPython/usage.py (quick_reference): mention magics in quickref,
98 modified main banner to mention %quickref.
103 modified main banner to mention %quickref.
99
104
100 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
105 * IPython/FakeModule.py (FakeModule): fixes for doctest compatibility.
101
106
102 2007-09-06 Ville Vainio <vivainio@gmail.com>
107 2007-09-06 Ville Vainio <vivainio@gmail.com>
103
108
104 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
109 * ipy_rehashdir.py, ipy_workdir.py, ipy_fsops.py, iplib.py:
105 Callable aliases now pass the _ip as first arg. This breaks
110 Callable aliases now pass the _ip as first arg. This breaks
106 compatibility with earlier 0.8.2.svn series! (though they should
111 compatibility with earlier 0.8.2.svn series! (though they should
107 not have been in use yet outside these few extensions)
112 not have been in use yet outside these few extensions)
108
113
109 2007-09-05 Ville Vainio <vivainio@gmail.com>
114 2007-09-05 Ville Vainio <vivainio@gmail.com>
110
115
111 * external/mglob.py: expand('dirname') => ['dirname'], instead
116 * external/mglob.py: expand('dirname') => ['dirname'], instead
112 of ['dirname/foo','dirname/bar', ...].
117 of ['dirname/foo','dirname/bar', ...].
113
118
114 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
119 * Extensions/ipy_fsops.py: added, has usefull shell utils for plain
115 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
120 win32 installations: icp, imv, imkdir, igrep, irm, collect (collect
116 is useful for others as well).
121 is useful for others as well).
117
122
118 * iplib.py: on callable aliases (as opposed to old style aliases),
123 * iplib.py: on callable aliases (as opposed to old style aliases),
119 do var_expand() immediately, and use make_quoted_expr instead
124 do var_expand() immediately, and use make_quoted_expr instead
120 of hardcoded r"""
125 of hardcoded r"""
121
126
122 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
127 * Extensions/ipy_profile_sh.py: Try to detect cygwin on win32,
123 if not available load ipy_fsops.py for cp, mv, etc. replacements
128 if not available load ipy_fsops.py for cp, mv, etc. replacements
124
129
125 * OInspect.py, ipy_which.py: improve %which and obj? for callable
130 * OInspect.py, ipy_which.py: improve %which and obj? for callable
126 aliases
131 aliases
127
132
128 2007-09-04 Ville Vainio <vivainio@gmail.com>
133 2007-09-04 Ville Vainio <vivainio@gmail.com>
129
134
130 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
135 * ipy_profile_zope.py: add zope profile, by Stefan Eletzhofer.
131 Relicensed under BSD with the authors approval.
136 Relicensed under BSD with the authors approval.
132
137
133 * ipmaker.py, usage.py: Remove %magic from default banner, improve
138 * ipmaker.py, usage.py: Remove %magic from default banner, improve
134 %quickref
139 %quickref
135
140
136 2007-09-03 Ville Vainio <vivainio@gmail.com>
141 2007-09-03 Ville Vainio <vivainio@gmail.com>
137
142
138 * Magic.py: %time now passes expression through prefilter,
143 * Magic.py: %time now passes expression through prefilter,
139 allowing IPython syntax.
144 allowing IPython syntax.
140
145
141 2007-09-01 Ville Vainio <vivainio@gmail.com>
146 2007-09-01 Ville Vainio <vivainio@gmail.com>
142
147
143 * ipmaker.py: Always show full traceback when newstyle config fails
148 * ipmaker.py: Always show full traceback when newstyle config fails
144
149
145 2007-08-27 Ville Vainio <vivainio@gmail.com>
150 2007-08-27 Ville Vainio <vivainio@gmail.com>
146
151
147 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
152 * Magic.py: fix %cd for nonexistent dir when dhist is empty, close #180
148
153
149 2007-08-26 Ville Vainio <vivainio@gmail.com>
154 2007-08-26 Ville Vainio <vivainio@gmail.com>
150
155
151 * ipmaker.py: Command line args have the highest priority again
156 * ipmaker.py: Command line args have the highest priority again
152
157
153 * iplib.py, ipmaker.py: -i command line argument now behaves as in
158 * iplib.py, ipmaker.py: -i command line argument now behaves as in
154 normal python, i.e. leaves the IPython session running after -c
159 normal python, i.e. leaves the IPython session running after -c
155 command or running a batch file from command line.
160 command or running a batch file from command line.
156
161
157 2007-08-22 Ville Vainio <vivainio@gmail.com>
162 2007-08-22 Ville Vainio <vivainio@gmail.com>
158
163
159 * iplib.py: no extra empty (last) line in raw hist w/ multiline
164 * iplib.py: no extra empty (last) line in raw hist w/ multiline
160 statements
165 statements
161
166
162 * logger.py: Fix bug where blank lines in history were not
167 * logger.py: Fix bug where blank lines in history were not
163 added until AFTER adding the current line; translated and raw
168 added until AFTER adding the current line; translated and raw
164 history should finally be in sync with prompt now.
169 history should finally be in sync with prompt now.
165
170
166 * ipy_completers.py: quick_completer now makes it easy to create
171 * ipy_completers.py: quick_completer now makes it easy to create
167 trivial custom completers
172 trivial custom completers
168
173
169 * clearcmd.py: shadow history compression & erasing, fixed input hist
174 * clearcmd.py: shadow history compression & erasing, fixed input hist
170 clearing.
175 clearing.
171
176
172 * envpersist.py, history.py: %env (sh profile only), %hist completers
177 * envpersist.py, history.py: %env (sh profile only), %hist completers
173
178
174 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
179 * genutils.py, Prompts.py, Magic.py: win32 - prompt (with \yDEPTH) and
175 term title now include the drive letter, and always use / instead of
180 term title now include the drive letter, and always use / instead of
176 os.sep (as per recommended approach for win32 ipython in general).
181 os.sep (as per recommended approach for win32 ipython in general).
177
182
178 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
183 * ipykit.py, ipy_kitcfg.py: special launcher for ipykit. Allows running
179 plain python scripts from ipykit command line by running
184 plain python scripts from ipykit command line by running
180 "py myscript.py", even w/o installed python.
185 "py myscript.py", even w/o installed python.
181
186
182 2007-08-21 Ville Vainio <vivainio@gmail.com>
187 2007-08-21 Ville Vainio <vivainio@gmail.com>
183
188
184 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
189 * ipmaker.py: finding ipythonrc-PROF now skips ipy_profile_PROF.
185 (for backwards compatibility)
190 (for backwards compatibility)
186
191
187 * history.py: switch back to %hist -t from %hist -r as default.
192 * history.py: switch back to %hist -t from %hist -r as default.
188 At least until raw history is fixed for good.
193 At least until raw history is fixed for good.
189
194
190 2007-08-20 Ville Vainio <vivainio@gmail.com>
195 2007-08-20 Ville Vainio <vivainio@gmail.com>
191
196
192 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
197 * ipapi.py, iplib.py: DebugTools accessible via _ip.dbg, to catch &
193 locate alias redeclarations etc. Also, avoid handling
198 locate alias redeclarations etc. Also, avoid handling
194 _ip.IP.alias_table directly, prefer using _ip.defalias.
199 _ip.IP.alias_table directly, prefer using _ip.defalias.
195
200
196
201
197 2007-08-15 Ville Vainio <vivainio@gmail.com>
202 2007-08-15 Ville Vainio <vivainio@gmail.com>
198
203
199 * prefilter.py: ! is now always served first
204 * prefilter.py: ! is now always served first
200
205
201 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
206 2007-08-15 Fernando Perez <Fernando.Perez@colorado.edu>
202
207
203 * IPython/iplib.py (safe_execfile): fix the SystemExit
208 * IPython/iplib.py (safe_execfile): fix the SystemExit
204 auto-suppression code to work in Python2.4 (the internal structure
209 auto-suppression code to work in Python2.4 (the internal structure
205 of that exception changed and I'd only tested the code with 2.5).
210 of that exception changed and I'd only tested the code with 2.5).
206 Bug reported by a SciPy attendee.
211 Bug reported by a SciPy attendee.
207
212
208 2007-08-13 Ville Vainio <vivainio@gmail.com>
213 2007-08-13 Ville Vainio <vivainio@gmail.com>
209
214
210 * prefilter.py: reverted !c:/bin/foo fix, made % in
215 * prefilter.py: reverted !c:/bin/foo fix, made % in
211 multiline specials work again
216 multiline specials work again
212
217
213 2007-08-13 Ville Vainio <vivainio@gmail.com>
218 2007-08-13 Ville Vainio <vivainio@gmail.com>
214
219
215 * prefilter.py: Take more care to special-case !, so that
220 * prefilter.py: Take more care to special-case !, so that
216 !c:/bin/foo.exe works.
221 !c:/bin/foo.exe works.
217
222
218 * setup.py: if we are building eggs, strip all docs and
223 * setup.py: if we are building eggs, strip all docs and
219 examples (it doesn't make sense to bytecompile examples,
224 examples (it doesn't make sense to bytecompile examples,
220 and docs would be in an awkward place anyway).
225 and docs would be in an awkward place anyway).
221
226
222 * Ryan Krauss' patch fixes start menu shortcuts when IPython
227 * Ryan Krauss' patch fixes start menu shortcuts when IPython
223 is installed into a directory that has spaces in the name.
228 is installed into a directory that has spaces in the name.
224
229
225 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
230 2007-08-13 Fernando Perez <Fernando.Perez@colorado.edu>
226
231
227 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
232 * IPython/Magic.py (magic_doctest_mode): fix prompt separators in
228 doctest profile and %doctest_mode, so they actually generate the
233 doctest profile and %doctest_mode, so they actually generate the
229 blank lines needed by doctest to separate individual tests.
234 blank lines needed by doctest to separate individual tests.
230
235
231 * IPython/iplib.py (safe_execfile): modify so that running code
236 * IPython/iplib.py (safe_execfile): modify so that running code
232 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
237 which calls sys.exit(0) (or equivalently, raise SystemExit(0))
233 doesn't get a printed traceback. Any other value in sys.exit(),
238 doesn't get a printed traceback. Any other value in sys.exit(),
234 including the empty call, still generates a traceback. This
239 including the empty call, still generates a traceback. This
235 enables use of %run without having to pass '-e' for codes that
240 enables use of %run without having to pass '-e' for codes that
236 correctly set the exit status flag.
241 correctly set the exit status flag.
237
242
238 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
243 2007-08-12 Fernando Perez <Fernando.Perez@colorado.edu>
239
244
240 * IPython/iplib.py (InteractiveShell.post_config_initialization):
245 * IPython/iplib.py (InteractiveShell.post_config_initialization):
241 fix problems with doctests failing when run inside IPython due to
246 fix problems with doctests failing when run inside IPython due to
242 IPython's modifications of sys.displayhook.
247 IPython's modifications of sys.displayhook.
243
248
244 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
249 2007-8-9 Fernando Perez <fperez@planck.colorado.edu>
245
250
246 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
251 * IPython/ipapi.py (to_user_ns): update to accept a dict as well as
247 a string with names.
252 a string with names.
248
253
249 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
254 2007-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
250
255
251 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
256 * IPython/Magic.py (magic_doctest_mode): added new %doctest_mode
252 magic to toggle on/off the doctest pasting support without having
257 magic to toggle on/off the doctest pasting support without having
253 to leave a session to switch to a separate profile.
258 to leave a session to switch to a separate profile.
254
259
255 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
260 2007-08-08 Fernando Perez <Fernando.Perez@colorado.edu>
256
261
257 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
262 * IPython/Extensions/ipy_profile_doctest.py (main): fix prompt to
258 introduce a blank line between inputs, to conform to doctest
263 introduce a blank line between inputs, to conform to doctest
259 requirements.
264 requirements.
260
265
261 * IPython/OInspect.py (Inspector.pinfo): fix another part where
266 * IPython/OInspect.py (Inspector.pinfo): fix another part where
262 auto-generated docstrings for new-style classes were showing up.
267 auto-generated docstrings for new-style classes were showing up.
263
268
264 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
269 2007-08-07 Fernando Perez <Fernando.Perez@colorado.edu>
265
270
266 * api_changes: Add new file to track backward-incompatible
271 * api_changes: Add new file to track backward-incompatible
267 user-visible changes.
272 user-visible changes.
268
273
269 2007-08-06 Ville Vainio <vivainio@gmail.com>
274 2007-08-06 Ville Vainio <vivainio@gmail.com>
270
275
271 * ipmaker.py: fix bug where user_config_ns didn't exist at all
276 * ipmaker.py: fix bug where user_config_ns didn't exist at all
272 before all the config files were handled.
277 before all the config files were handled.
273
278
274 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
279 2007-08-04 Fernando Perez <Fernando.Perez@colorado.edu>
275
280
276 * IPython/irunner.py (RunnerFactory): Add new factory class for
281 * IPython/irunner.py (RunnerFactory): Add new factory class for
277 creating reusable runners based on filenames.
282 creating reusable runners based on filenames.
278
283
279 * IPython/Extensions/ipy_profile_doctest.py: New profile for
284 * IPython/Extensions/ipy_profile_doctest.py: New profile for
280 doctest support. It sets prompts/exceptions as similar to
285 doctest support. It sets prompts/exceptions as similar to
281 standard Python as possible, so that ipython sessions in this
286 standard Python as possible, so that ipython sessions in this
282 profile can be easily pasted as doctests with minimal
287 profile can be easily pasted as doctests with minimal
283 modifications. It also enables pasting of doctests from external
288 modifications. It also enables pasting of doctests from external
284 sources (even if they have leading whitespace), so that you can
289 sources (even if they have leading whitespace), so that you can
285 rerun doctests from existing sources.
290 rerun doctests from existing sources.
286
291
287 * IPython/iplib.py (_prefilter): fix a buglet where after entering
292 * IPython/iplib.py (_prefilter): fix a buglet where after entering
288 some whitespace, the prompt would become a continuation prompt
293 some whitespace, the prompt would become a continuation prompt
289 with no way of exiting it other than Ctrl-C. This fix brings us
294 with no way of exiting it other than Ctrl-C. This fix brings us
290 into conformity with how the default python prompt works.
295 into conformity with how the default python prompt works.
291
296
292 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
297 * IPython/Extensions/InterpreterPasteInput.py (prefilter_paste):
293 Add support for pasting not only lines that start with '>>>', but
298 Add support for pasting not only lines that start with '>>>', but
294 also with ' >>>'. That is, arbitrary whitespace can now precede
299 also with ' >>>'. That is, arbitrary whitespace can now precede
295 the prompts. This makes the system useful for pasting doctests
300 the prompts. This makes the system useful for pasting doctests
296 from docstrings back into a normal session.
301 from docstrings back into a normal session.
297
302
298 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
303 2007-08-02 Fernando Perez <Fernando.Perez@colorado.edu>
299
304
300 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
305 * IPython/Shell.py (IPShellEmbed.__call__): fix bug introduced in
301 r1357, which had killed multiple invocations of an embedded
306 r1357, which had killed multiple invocations of an embedded
302 ipython (this means that example-embed has been broken for over 1
307 ipython (this means that example-embed has been broken for over 1
303 year!!!). Rather than possibly breaking the batch stuff for which
308 year!!!). Rather than possibly breaking the batch stuff for which
304 the code in iplib.py/interact was introduced, I worked around the
309 the code in iplib.py/interact was introduced, I worked around the
305 problem in the embedding class in Shell.py. We really need a
310 problem in the embedding class in Shell.py. We really need a
306 bloody test suite for this code, I'm sick of finding stuff that
311 bloody test suite for this code, I'm sick of finding stuff that
307 used to work breaking left and right every time I use an old
312 used to work breaking left and right every time I use an old
308 feature I hadn't touched in a few months.
313 feature I hadn't touched in a few months.
309 (kill_embedded): Add a new magic that only shows up in embedded
314 (kill_embedded): Add a new magic that only shows up in embedded
310 mode, to allow users to permanently deactivate an embedded instance.
315 mode, to allow users to permanently deactivate an embedded instance.
311
316
312 2007-08-01 Ville Vainio <vivainio@gmail.com>
317 2007-08-01 Ville Vainio <vivainio@gmail.com>
313
318
314 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
319 * iplib.py, ipy_profile_sh.py (runlines): Fix the bug where raw
315 history gets out of sync on runlines (e.g. when running macros).
320 history gets out of sync on runlines (e.g. when running macros).
316
321
317 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
322 2007-07-31 Fernando Perez <Fernando.Perez@colorado.edu>
318
323
319 * IPython/Magic.py (magic_colors): fix win32-related error message
324 * IPython/Magic.py (magic_colors): fix win32-related error message
320 that could appear under *nix when readline was missing. Patch by
325 that could appear under *nix when readline was missing. Patch by
321 Scott Jackson, closes #175.
326 Scott Jackson, closes #175.
322
327
323 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
328 2007-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
324
329
325 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
330 * IPython/Extensions/ipy_traits_completer.py: Add a new custom
326 completer that it traits-aware, so that traits objects don't show
331 completer that it traits-aware, so that traits objects don't show
327 all of their internal attributes all the time.
332 all of their internal attributes all the time.
328
333
329 * IPython/genutils.py (dir2): moved this code from inside
334 * IPython/genutils.py (dir2): moved this code from inside
330 completer.py to expose it publicly, so I could use it in the
335 completer.py to expose it publicly, so I could use it in the
331 wildcards bugfix.
336 wildcards bugfix.
332
337
333 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
338 * IPython/wildcard.py (NameSpace.__init__): fix a bug reported by
334 Stefan with Traits.
339 Stefan with Traits.
335
340
336 * IPython/completer.py (Completer.attr_matches): change internal
341 * IPython/completer.py (Completer.attr_matches): change internal
337 var name from 'object' to 'obj', since 'object' is now a builtin
342 var name from 'object' to 'obj', since 'object' is now a builtin
338 and this can lead to weird bugs if reusing this code elsewhere.
343 and this can lead to weird bugs if reusing this code elsewhere.
339
344
340 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
345 2007-07-25 Fernando Perez <Fernando.Perez@colorado.edu>
341
346
342 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
347 * IPython/OInspect.py (Inspector.pinfo): fix small glitches in
343 'foo?' and update the code to prevent printing of default
348 'foo?' and update the code to prevent printing of default
344 docstrings that started appearing after I added support for
349 docstrings that started appearing after I added support for
345 new-style classes. The approach I'm using isn't ideal (I just
350 new-style classes. The approach I'm using isn't ideal (I just
346 special-case those strings) but I'm not sure how to more robustly
351 special-case those strings) but I'm not sure how to more robustly
347 differentiate between truly user-written strings and Python's
352 differentiate between truly user-written strings and Python's
348 automatic ones.
353 automatic ones.
349
354
350 2007-07-09 Ville Vainio <vivainio@gmail.com>
355 2007-07-09 Ville Vainio <vivainio@gmail.com>
351
356
352 * completer.py: Applied Matthew Neeley's patch:
357 * completer.py: Applied Matthew Neeley's patch:
353 Dynamic attributes from trait_names and _getAttributeNames are added
358 Dynamic attributes from trait_names and _getAttributeNames are added
354 to the list of tab completions, but when this happens, the attribute
359 to the list of tab completions, but when this happens, the attribute
355 list is turned into a set, so the attributes are unordered when
360 list is turned into a set, so the attributes are unordered when
356 printed, which makes it hard to find the right completion. This patch
361 printed, which makes it hard to find the right completion. This patch
357 turns this set back into a list and sort it.
362 turns this set back into a list and sort it.
358
363
359 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
364 2007-07-06 Fernando Perez <Fernando.Perez@colorado.edu>
360
365
361 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
366 * IPython/OInspect.py (Inspector.pinfo): Add support for new-style
362 classes in various inspector functions.
367 classes in various inspector functions.
363
368
364 2007-06-28 Ville Vainio <vivainio@gmail.com>
369 2007-06-28 Ville Vainio <vivainio@gmail.com>
365
370
366 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
371 * shadowns.py, iplib.py, ipapi.py, OInspect.py:
367 Implement "shadow" namespace, and callable aliases that reside there.
372 Implement "shadow" namespace, and callable aliases that reside there.
368 Use them by:
373 Use them by:
369
374
370 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
375 _ip.defalias('foo',myfunc) # creates _sh.foo that points to myfunc
371
376
372 foo hello world
377 foo hello world
373 (gets translated to:)
378 (gets translated to:)
374 _sh.foo(r"""hello world""")
379 _sh.foo(r"""hello world""")
375
380
376 In practice, this kind of alias can take the role of a magic function
381 In practice, this kind of alias can take the role of a magic function
377
382
378 * New generic inspect_object, called on obj? and obj??
383 * New generic inspect_object, called on obj? and obj??
379
384
380 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
385 2007-06-15 Fernando Perez <Fernando.Perez@colorado.edu>
381
386
382 * IPython/ultraTB.py (findsource): fix a problem with
387 * IPython/ultraTB.py (findsource): fix a problem with
383 inspect.getfile that can cause crashes during traceback construction.
388 inspect.getfile that can cause crashes during traceback construction.
384
389
385 2007-06-14 Ville Vainio <vivainio@gmail.com>
390 2007-06-14 Ville Vainio <vivainio@gmail.com>
386
391
387 * iplib.py (handle_auto): Try to use ascii for printing "--->"
392 * iplib.py (handle_auto): Try to use ascii for printing "--->"
388 autocall rewrite indication, becausesometimes unicode fails to print
393 autocall rewrite indication, becausesometimes unicode fails to print
389 properly (and you get ' - - - '). Use plain uncoloured ---> for
394 properly (and you get ' - - - '). Use plain uncoloured ---> for
390 unicode.
395 unicode.
391
396
392 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
397 * shadow history. Usable through "%hist -g <pat>" and "%rep 0123".
393
398
394 . pickleshare 'hash' commands (hget, hset, hcompress,
399 . pickleshare 'hash' commands (hget, hset, hcompress,
395 hdict) for efficient shadow history storage.
400 hdict) for efficient shadow history storage.
396
401
397 2007-06-13 Ville Vainio <vivainio@gmail.com>
402 2007-06-13 Ville Vainio <vivainio@gmail.com>
398
403
399 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
404 * ipapi.py: _ip.to_user_ns(vars, interactive = True).
400 Added kw arg 'interactive', tell whether vars should be visible
405 Added kw arg 'interactive', tell whether vars should be visible
401 with %whos.
406 with %whos.
402
407
403 2007-06-11 Ville Vainio <vivainio@gmail.com>
408 2007-06-11 Ville Vainio <vivainio@gmail.com>
404
409
405 * pspersistence.py, Magic.py, iplib.py: directory history now saved
410 * pspersistence.py, Magic.py, iplib.py: directory history now saved
406 to db
411 to db
407
412
408 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
413 * iplib.py: "ipython -c <cmd>" now passes the command through prefilter.
409 Also, it exits IPython immediately after evaluating the command (just like
414 Also, it exits IPython immediately after evaluating the command (just like
410 std python)
415 std python)
411
416
412 2007-06-05 Walter Doerwald <walter@livinglogic.de>
417 2007-06-05 Walter Doerwald <walter@livinglogic.de>
413
418
414 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
419 * IPython/Extensions/ipipe.py: Added a new table icap, which executes a
415 Python string and captures the output. (Idea and original patch by
420 Python string and captures the output. (Idea and original patch by
416 Stefan van der Walt)
421 Stefan van der Walt)
417
422
418 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
423 2007-06-01 Fernando Perez <Fernando.Perez@colorado.edu>
419
424
420 * IPython/ultraTB.py (VerboseTB.text): update printing of
425 * IPython/ultraTB.py (VerboseTB.text): update printing of
421 exception types for Python 2.5 (now all exceptions in the stdlib
426 exception types for Python 2.5 (now all exceptions in the stdlib
422 are new-style classes).
427 are new-style classes).
423
428
424 2007-05-31 Walter Doerwald <walter@livinglogic.de>
429 2007-05-31 Walter Doerwald <walter@livinglogic.de>
425
430
426 * IPython/Extensions/igrid.py: Add new commands refresh and
431 * IPython/Extensions/igrid.py: Add new commands refresh and
427 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
432 refresh_timer (mapped to "R"/"F5" and to the menu) which restarts
428 the iterator once (refresh) or after every x seconds (refresh_timer).
433 the iterator once (refresh) or after every x seconds (refresh_timer).
429 Add a working implementation of "searchexpression", where the text
434 Add a working implementation of "searchexpression", where the text
430 entered is not the text to search for, but an expression that must
435 entered is not the text to search for, but an expression that must
431 be true. Added display of shortcuts to the menu. Added commands "pickinput"
436 be true. Added display of shortcuts to the menu. Added commands "pickinput"
432 and "pickinputattr" that put the object or attribute under the cursor
437 and "pickinputattr" that put the object or attribute under the cursor
433 in the input line. Split the statusbar to be able to display the currently
438 in the input line. Split the statusbar to be able to display the currently
434 active refresh interval. (Patch by Nik Tautenhahn)
439 active refresh interval. (Patch by Nik Tautenhahn)
435
440
436 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
441 2007-05-29 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
437
442
438 * fixing set_term_title to use ctypes as default
443 * fixing set_term_title to use ctypes as default
439
444
440 * fixing set_term_title fallback to work when curent dir
445 * fixing set_term_title fallback to work when curent dir
441 is on a windows network share
446 is on a windows network share
442
447
443 2007-05-28 Ville Vainio <vivainio@gmail.com>
448 2007-05-28 Ville Vainio <vivainio@gmail.com>
444
449
445 * %cpaste: strip + with > from left (diffs).
450 * %cpaste: strip + with > from left (diffs).
446
451
447 * iplib.py: Fix crash when readline not installed
452 * iplib.py: Fix crash when readline not installed
448
453
449 2007-05-26 Ville Vainio <vivainio@gmail.com>
454 2007-05-26 Ville Vainio <vivainio@gmail.com>
450
455
451 * generics.py: intruduce easy to extend result_display generic
456 * generics.py: intruduce easy to extend result_display generic
452 function (using simplegeneric.py).
457 function (using simplegeneric.py).
453
458
454 * Fixed the append functionality of %set.
459 * Fixed the append functionality of %set.
455
460
456 2007-05-25 Ville Vainio <vivainio@gmail.com>
461 2007-05-25 Ville Vainio <vivainio@gmail.com>
457
462
458 * New magic: %rep (fetch / run old commands from history)
463 * New magic: %rep (fetch / run old commands from history)
459
464
460 * New extension: mglob (%mglob magic), for powerful glob / find /filter
465 * New extension: mglob (%mglob magic), for powerful glob / find /filter
461 like functionality
466 like functionality
462
467
463 % maghistory.py: %hist -g PATTERM greps the history for pattern
468 % maghistory.py: %hist -g PATTERM greps the history for pattern
464
469
465 2007-05-24 Walter Doerwald <walter@livinglogic.de>
470 2007-05-24 Walter Doerwald <walter@livinglogic.de>
466
471
467 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
472 * IPython/Extensions/ipipe.py: Added a Table ihist that can be used to
468 browse the IPython input history
473 browse the IPython input history
469
474
470 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
475 * IPython/Extensions/ibrowse.py: Added two command to ibrowse: pickinput
471 (mapped to "i") can be used to put the object under the curser in the input
476 (mapped to "i") can be used to put the object under the curser in the input
472 line. pickinputattr (mapped to "I") does the same for the attribute under
477 line. pickinputattr (mapped to "I") does the same for the attribute under
473 the cursor.
478 the cursor.
474
479
475 2007-05-24 Ville Vainio <vivainio@gmail.com>
480 2007-05-24 Ville Vainio <vivainio@gmail.com>
476
481
477 * Grand magic cleansing (changeset [2380]):
482 * Grand magic cleansing (changeset [2380]):
478
483
479 * Introduce ipy_legacy.py where the following magics were
484 * Introduce ipy_legacy.py where the following magics were
480 moved:
485 moved:
481
486
482 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
487 pdef pdoc psource pfile rehash dhist Quit p r automagic autocall
483
488
484 If you need them, either use default profile or "import ipy_legacy"
489 If you need them, either use default profile or "import ipy_legacy"
485 in your ipy_user_conf.py
490 in your ipy_user_conf.py
486
491
487 * Move sh and scipy profile to Extensions from UserConfig. this implies
492 * Move sh and scipy profile to Extensions from UserConfig. this implies
488 you should not edit them, but you don't need to run %upgrade when
493 you should not edit them, but you don't need to run %upgrade when
489 upgrading IPython anymore.
494 upgrading IPython anymore.
490
495
491 * %hist/%history now operates in "raw" mode by default. To get the old
496 * %hist/%history now operates in "raw" mode by default. To get the old
492 behaviour, run '%hist -n' (native mode).
497 behaviour, run '%hist -n' (native mode).
493
498
494 * split ipy_stock_completers.py to ipy_stock_completers.py and
499 * split ipy_stock_completers.py to ipy_stock_completers.py and
495 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
500 ipy_app_completers.py. Stock completers (%cd, import, %run) are now
496 installed as default.
501 installed as default.
497
502
498 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
503 * sh profile now installs ipy_signals.py, for (hopefully) better ctrl+c
499 handling.
504 handling.
500
505
501 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
506 * iplib.py, ipapi.py: _ip.set_next_input(s) sets the next ("default")
502 input if readline is available.
507 input if readline is available.
503
508
504 2007-05-23 Ville Vainio <vivainio@gmail.com>
509 2007-05-23 Ville Vainio <vivainio@gmail.com>
505
510
506 * macro.py: %store uses __getstate__ properly
511 * macro.py: %store uses __getstate__ properly
507
512
508 * exesetup.py: added new setup script for creating
513 * exesetup.py: added new setup script for creating
509 standalone IPython executables with py2exe (i.e.
514 standalone IPython executables with py2exe (i.e.
510 no python installation required).
515 no python installation required).
511
516
512 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
517 * Removed ipythonrc-scipy, ipy_profile_scipy.py takes
513 its place.
518 its place.
514
519
515 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
520 * rlineimpl.py, genutils.py (get_home_dir): py2exe support
516
521
517 2007-05-21 Ville Vainio <vivainio@gmail.com>
522 2007-05-21 Ville Vainio <vivainio@gmail.com>
518
523
519 * platutil_win32.py (set_term_title): handle
524 * platutil_win32.py (set_term_title): handle
520 failure of 'title' system call properly.
525 failure of 'title' system call properly.
521
526
522 2007-05-17 Walter Doerwald <walter@livinglogic.de>
527 2007-05-17 Walter Doerwald <walter@livinglogic.de>
523
528
524 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
529 * IPython/Extensions/ipipe.py: Fix xrepr for ifiles.
525 (Bug detected by Paul Mueller).
530 (Bug detected by Paul Mueller).
526
531
527 2007-05-16 Ville Vainio <vivainio@gmail.com>
532 2007-05-16 Ville Vainio <vivainio@gmail.com>
528
533
529 * ipy_profile_sci.py, ipython_win_post_install.py: Create
534 * ipy_profile_sci.py, ipython_win_post_install.py: Create
530 new "sci" profile, effectively a modern version of the old
535 new "sci" profile, effectively a modern version of the old
531 "scipy" profile (which is now slated for deprecation).
536 "scipy" profile (which is now slated for deprecation).
532
537
533 2007-05-15 Ville Vainio <vivainio@gmail.com>
538 2007-05-15 Ville Vainio <vivainio@gmail.com>
534
539
535 * pycolorize.py, pycolor.1: Paul Mueller's patches that
540 * pycolorize.py, pycolor.1: Paul Mueller's patches that
536 make pycolorize read input from stdin when run without arguments.
541 make pycolorize read input from stdin when run without arguments.
537
542
538 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
543 * Magic.py: do not require 'PATH' in %rehash/%rehashx. Closes #155
539
544
540 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
545 * ipy_rehashdir.py: rename ext_rehashdir to ipy_rehashdir, import
541 it in sh profile (instead of ipy_system_conf.py).
546 it in sh profile (instead of ipy_system_conf.py).
542
547
543 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
548 * Magic.py, ipy_rehashdir.py, ipy_profile_sh.py: System command
544 aliases are now lower case on windows (MyCommand.exe => mycommand).
549 aliases are now lower case on windows (MyCommand.exe => mycommand).
545
550
546 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
551 * macro.py, ipapi.py, iplib.py, Prompts.py: Macro system rehaul.
547 Macros are now callable objects that inherit from ipapi.IPyAutocall,
552 Macros are now callable objects that inherit from ipapi.IPyAutocall,
548 i.e. get autocalled regardless of system autocall setting.
553 i.e. get autocalled regardless of system autocall setting.
549
554
550 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
555 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu>
551
556
552 * IPython/rlineimpl.py: check for clear_history in readline and
557 * IPython/rlineimpl.py: check for clear_history in readline and
553 make it a dummy no-op if not available. This function isn't
558 make it a dummy no-op if not available. This function isn't
554 guaranteed to be in the API and appeared in Python 2.4, so we need
559 guaranteed to be in the API and appeared in Python 2.4, so we need
555 to check it ourselves. Also, clean up this file quite a bit.
560 to check it ourselves. Also, clean up this file quite a bit.
556
561
557 * ipython.1: update man page and full manual with information
562 * ipython.1: update man page and full manual with information
558 about threads (remove outdated warning). Closes #151.
563 about threads (remove outdated warning). Closes #151.
559
564
560 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
565 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu>
561
566
562 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
567 * IPython/Extensions/ipy_constants.py: Add Gael's constants module
563 in trunk (note that this made it into the 0.8.1 release already,
568 in trunk (note that this made it into the 0.8.1 release already,
564 but the changelogs didn't get coordinated). Many thanks to Gael
569 but the changelogs didn't get coordinated). Many thanks to Gael
565 Varoquaux <gael.varoquaux-AT-normalesup.org>
570 Varoquaux <gael.varoquaux-AT-normalesup.org>
566
571
567 2007-05-09 *** Released version 0.8.1
572 2007-05-09 *** Released version 0.8.1
568
573
569 2007-05-10 Walter Doerwald <walter@livinglogic.de>
574 2007-05-10 Walter Doerwald <walter@livinglogic.de>
570
575
571 * IPython/Extensions/igrid.py: Incorporate html help into
576 * IPython/Extensions/igrid.py: Incorporate html help into
572 the module, so we don't have to search for the file.
577 the module, so we don't have to search for the file.
573
578
574 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
579 2007-05-02 Fernando Perez <Fernando.Perez@colorado.edu>
575
580
576 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
581 * test/test_irunner.py (RunnerTestCase._test_runner): Close #147.
577
582
578 2007-04-30 Ville Vainio <vivainio@gmail.com>
583 2007-04-30 Ville Vainio <vivainio@gmail.com>
579
584
580 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
585 * iplib.py: (pre_config_initialization) Catch UnicodeDecodeError if the
581 user has illegal (non-ascii) home directory name
586 user has illegal (non-ascii) home directory name
582
587
583 2007-04-27 Ville Vainio <vivainio@gmail.com>
588 2007-04-27 Ville Vainio <vivainio@gmail.com>
584
589
585 * platutils_win32.py: implement set_term_title for windows
590 * platutils_win32.py: implement set_term_title for windows
586
591
587 * Update version number
592 * Update version number
588
593
589 * ipy_profile_sh.py: more informative prompt (2 dir levels)
594 * ipy_profile_sh.py: more informative prompt (2 dir levels)
590
595
591 2007-04-26 Walter Doerwald <walter@livinglogic.de>
596 2007-04-26 Walter Doerwald <walter@livinglogic.de>
592
597
593 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
598 * IPython/Extensions/igrid.py: (igrid) Fix bug that surfaced
594 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
599 when the igrid input raised an exception. (Patch by Nik Tautenhahn,
595 bug discovered by Ville).
600 bug discovered by Ville).
596
601
597 2007-04-26 Ville Vainio <vivainio@gmail.com>
602 2007-04-26 Ville Vainio <vivainio@gmail.com>
598
603
599 * Extensions/ipy_completers.py: Olivier's module completer now
604 * Extensions/ipy_completers.py: Olivier's module completer now
600 saves the list of root modules if it takes > 4 secs on the first run.
605 saves the list of root modules if it takes > 4 secs on the first run.
601
606
602 * Magic.py (%rehashx): %rehashx now clears the completer cache
607 * Magic.py (%rehashx): %rehashx now clears the completer cache
603
608
604
609
605 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
610 2007-04-26 Fernando Perez <Fernando.Perez@colorado.edu>
606
611
607 * ipython.el: fix incorrect color scheme, reported by Stefan.
612 * ipython.el: fix incorrect color scheme, reported by Stefan.
608 Closes #149.
613 Closes #149.
609
614
610 * IPython/PyColorize.py (Parser.format2): fix state-handling
615 * IPython/PyColorize.py (Parser.format2): fix state-handling
611 logic. I still don't like how that code handles state, but at
616 logic. I still don't like how that code handles state, but at
612 least now it should be correct, if inelegant. Closes #146.
617 least now it should be correct, if inelegant. Closes #146.
613
618
614 2007-04-25 Ville Vainio <vivainio@gmail.com>
619 2007-04-25 Ville Vainio <vivainio@gmail.com>
615
620
616 * Extensions/ipy_which.py: added extension for %which magic, works
621 * Extensions/ipy_which.py: added extension for %which magic, works
617 a lot like unix 'which' but also finds and expands aliases, and
622 a lot like unix 'which' but also finds and expands aliases, and
618 allows wildcards.
623 allows wildcards.
619
624
620 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
625 * ipapi.py (expand_alias): Now actually *return* the expanded alias,
621 as opposed to returning nothing.
626 as opposed to returning nothing.
622
627
623 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
628 * UserConfig/ipy_user_conf.py, ipy_profile_sh.py: do not import
624 ipy_stock_completers on default profile, do import on sh profile.
629 ipy_stock_completers on default profile, do import on sh profile.
625
630
626 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
631 2007-04-22 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
627
632
628 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
633 * Fix bug in iplib.py/safe_execfile when launching ipython with a script
629 like ipython.py foo.py which raised a IndexError.
634 like ipython.py foo.py which raised a IndexError.
630
635
631 2007-04-21 Ville Vainio <vivainio@gmail.com>
636 2007-04-21 Ville Vainio <vivainio@gmail.com>
632
637
633 * Extensions/ipy_extutil.py: added extension to manage other ipython
638 * Extensions/ipy_extutil.py: added extension to manage other ipython
634 extensions. Now only supports 'ls' == list extensions.
639 extensions. Now only supports 'ls' == list extensions.
635
640
636 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
641 2007-04-20 Fernando Perez <Fernando.Perez@colorado.edu>
637
642
638 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
643 * IPython/Debugger.py (BdbQuit_excepthook): fix small bug that
639 would prevent use of the exception system outside of a running
644 would prevent use of the exception system outside of a running
640 IPython instance.
645 IPython instance.
641
646
642 2007-04-20 Ville Vainio <vivainio@gmail.com>
647 2007-04-20 Ville Vainio <vivainio@gmail.com>
643
648
644 * Extensions/ipy_render.py: added extension for easy
649 * Extensions/ipy_render.py: added extension for easy
645 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
650 interactive text template rendering (to clipboard). Uses Ka-Ping Yee's
646 'Iptl' template notation,
651 'Iptl' template notation,
647
652
648 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
653 * Extensions/ipy_completers.py: introduced Olivier Lauzanne's
649 safer & faster 'import' completer.
654 safer & faster 'import' completer.
650
655
651 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
656 * ipapi.py: Introduced new ipapi methods, _ip.defmacro(name, value)
652 and _ip.defalias(name, command).
657 and _ip.defalias(name, command).
653
658
654 * Extensions/ipy_exportdb.py: New extension for exporting all the
659 * Extensions/ipy_exportdb.py: New extension for exporting all the
655 %store'd data in a portable format (normal ipapi calls like
660 %store'd data in a portable format (normal ipapi calls like
656 defmacro() etc.)
661 defmacro() etc.)
657
662
658 2007-04-19 Ville Vainio <vivainio@gmail.com>
663 2007-04-19 Ville Vainio <vivainio@gmail.com>
659
664
660 * upgrade_dir.py: skip junk files like *.pyc
665 * upgrade_dir.py: skip junk files like *.pyc
661
666
662 * Release.py: version number to 0.8.1
667 * Release.py: version number to 0.8.1
663
668
664 2007-04-18 Ville Vainio <vivainio@gmail.com>
669 2007-04-18 Ville Vainio <vivainio@gmail.com>
665
670
666 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
671 * iplib.py (safe_execfile): make "ipython foo.py" work with 2.5.1c1
667 and later on win32.
672 and later on win32.
668
673
669 2007-04-16 Ville Vainio <vivainio@gmail.com>
674 2007-04-16 Ville Vainio <vivainio@gmail.com>
670
675
671 * iplib.py (showtraceback): Do not crash when running w/o readline.
676 * iplib.py (showtraceback): Do not crash when running w/o readline.
672
677
673 2007-04-12 Walter Doerwald <walter@livinglogic.de>
678 2007-04-12 Walter Doerwald <walter@livinglogic.de>
674
679
675 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
680 * IPython/Extensions/ipipe.py: (ils) Directoy listings are now
676 sorted (case sensitive with files and dirs mixed).
681 sorted (case sensitive with files and dirs mixed).
677
682
678 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
683 2007-04-10 Fernando Perez <Fernando.Perez@colorado.edu>
679
684
680 * IPython/Release.py (version): Open trunk for 0.8.1 development.
685 * IPython/Release.py (version): Open trunk for 0.8.1 development.
681
686
682 2007-04-10 *** Released version 0.8.0
687 2007-04-10 *** Released version 0.8.0
683
688
684 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
689 2007-04-07 Fernando Perez <Fernando.Perez@colorado.edu>
685
690
686 * Tag 0.8.0 for release.
691 * Tag 0.8.0 for release.
687
692
688 * IPython/iplib.py (reloadhist): add API function to cleanly
693 * IPython/iplib.py (reloadhist): add API function to cleanly
689 reload the readline history, which was growing inappropriately on
694 reload the readline history, which was growing inappropriately on
690 every %run call.
695 every %run call.
691
696
692 * win32_manual_post_install.py (run): apply last part of Nicolas
697 * win32_manual_post_install.py (run): apply last part of Nicolas
693 Pernetty's patch (I'd accidentally applied it in a different
698 Pernetty's patch (I'd accidentally applied it in a different
694 directory and this particular file didn't get patched).
699 directory and this particular file didn't get patched).
695
700
696 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
701 2007-04-05 Fernando Perez <Fernando.Perez@colorado.edu>
697
702
698 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
703 * IPython/Shell.py (MAIN_THREAD_ID): get rid of my stupid hack to
699 find the main thread id and use the proper API call. Thanks to
704 find the main thread id and use the proper API call. Thanks to
700 Stefan for the fix.
705 Stefan for the fix.
701
706
702 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
707 * test/test_prefilter.py (esc_handler_tests): udpate one of Dan's
703 unit tests to reflect fixed ticket #52, and add more tests sent by
708 unit tests to reflect fixed ticket #52, and add more tests sent by
704 him.
709 him.
705
710
706 * IPython/iplib.py (raw_input): restore the readline completer
711 * IPython/iplib.py (raw_input): restore the readline completer
707 state on every input, in case third-party code messed it up.
712 state on every input, in case third-party code messed it up.
708 (_prefilter): revert recent addition of early-escape checks which
713 (_prefilter): revert recent addition of early-escape checks which
709 prevent many valid alias calls from working.
714 prevent many valid alias calls from working.
710
715
711 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
716 * IPython/Shell.py (MTInteractiveShell.runcode): add a tracking
712 flag for sigint handler so we don't run a full signal() call on
717 flag for sigint handler so we don't run a full signal() call on
713 each runcode access.
718 each runcode access.
714
719
715 * IPython/Magic.py (magic_whos): small improvement to diagnostic
720 * IPython/Magic.py (magic_whos): small improvement to diagnostic
716 message.
721 message.
717
722
718 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
723 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
719
724
720 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
725 * IPython/Shell.py (sigint_handler): I *THINK* I finally got
721 asynchronous exceptions working, i.e., Ctrl-C can actually
726 asynchronous exceptions working, i.e., Ctrl-C can actually
722 interrupt long-running code in the multithreaded shells.
727 interrupt long-running code in the multithreaded shells.
723
728
724 This is using Tomer Filiba's great ctypes-based trick:
729 This is using Tomer Filiba's great ctypes-based trick:
725 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
730 http://sebulba.wikispaces.com/recipe+thread2. I'd already tried
726 this in the past, but hadn't been able to make it work before. So
731 this in the past, but hadn't been able to make it work before. So
727 far it looks like it's actually running, but this needs more
732 far it looks like it's actually running, but this needs more
728 testing. If it really works, I'll be *very* happy, and we'll owe
733 testing. If it really works, I'll be *very* happy, and we'll owe
729 a huge thank you to Tomer. My current implementation is ugly,
734 a huge thank you to Tomer. My current implementation is ugly,
730 hackish and uses nasty globals, but I don't want to try and clean
735 hackish and uses nasty globals, but I don't want to try and clean
731 anything up until we know if it actually works.
736 anything up until we know if it actually works.
732
737
733 NOTE: this feature needs ctypes to work. ctypes is included in
738 NOTE: this feature needs ctypes to work. ctypes is included in
734 Python2.5, but 2.4 users will need to manually install it. This
739 Python2.5, but 2.4 users will need to manually install it. This
735 feature makes multi-threaded shells so much more usable that it's
740 feature makes multi-threaded shells so much more usable that it's
736 a minor price to pay (ctypes is very easy to install, already a
741 a minor price to pay (ctypes is very easy to install, already a
737 requirement for win32 and available in major linux distros).
742 requirement for win32 and available in major linux distros).
738
743
739 2007-04-04 Ville Vainio <vivainio@gmail.com>
744 2007-04-04 Ville Vainio <vivainio@gmail.com>
740
745
741 * Extensions/ipy_completers.py, ipy_stock_completers.py:
746 * Extensions/ipy_completers.py, ipy_stock_completers.py:
742 Moved implementations of 'bundled' completers to ipy_completers.py,
747 Moved implementations of 'bundled' completers to ipy_completers.py,
743 they are only enabled in ipy_stock_completers.py.
748 they are only enabled in ipy_stock_completers.py.
744
749
745 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
750 2007-04-04 Fernando Perez <Fernando.Perez@colorado.edu>
746
751
747 * IPython/PyColorize.py (Parser.format2): Fix identation of
752 * IPython/PyColorize.py (Parser.format2): Fix identation of
748 colorzied output and return early if color scheme is NoColor, to
753 colorzied output and return early if color scheme is NoColor, to
749 avoid unnecessary and expensive tokenization. Closes #131.
754 avoid unnecessary and expensive tokenization. Closes #131.
750
755
751 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
756 2007-04-03 Fernando Perez <Fernando.Perez@colorado.edu>
752
757
753 * IPython/Debugger.py: disable the use of pydb version 1.17. It
758 * IPython/Debugger.py: disable the use of pydb version 1.17. It
754 has a critical bug (a missing import that makes post-mortem not
759 has a critical bug (a missing import that makes post-mortem not
755 work at all). Unfortunately as of this time, this is the version
760 work at all). Unfortunately as of this time, this is the version
756 shipped with Ubuntu Edgy, so quite a few people have this one. I
761 shipped with Ubuntu Edgy, so quite a few people have this one. I
757 hope Edgy will update to a more recent package.
762 hope Edgy will update to a more recent package.
758
763
759 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
764 2007-04-02 Fernando Perez <Fernando.Perez@colorado.edu>
760
765
761 * IPython/iplib.py (_prefilter): close #52, second part of a patch
766 * IPython/iplib.py (_prefilter): close #52, second part of a patch
762 set by Stefan (only the first part had been applied before).
767 set by Stefan (only the first part had been applied before).
763
768
764 * IPython/Extensions/ipy_stock_completers.py (module_completer):
769 * IPython/Extensions/ipy_stock_completers.py (module_completer):
765 remove usage of the dangerous pkgutil.walk_packages(). See
770 remove usage of the dangerous pkgutil.walk_packages(). See
766 details in comments left in the code.
771 details in comments left in the code.
767
772
768 * IPython/Magic.py (magic_whos): add support for numpy arrays
773 * IPython/Magic.py (magic_whos): add support for numpy arrays
769 similar to what we had for Numeric.
774 similar to what we had for Numeric.
770
775
771 * IPython/completer.py (IPCompleter.complete): extend the
776 * IPython/completer.py (IPCompleter.complete): extend the
772 complete() call API to support completions by other mechanisms
777 complete() call API to support completions by other mechanisms
773 than readline. Closes #109.
778 than readline. Closes #109.
774
779
775 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
780 * IPython/iplib.py (safe_execfile): add a safeguard under Win32 to
776 protect against a bug in Python's execfile(). Closes #123.
781 protect against a bug in Python's execfile(). Closes #123.
777
782
778 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
783 2007-04-01 Fernando Perez <Fernando.Perez@colorado.edu>
779
784
780 * IPython/iplib.py (split_user_input): ensure that when splitting
785 * IPython/iplib.py (split_user_input): ensure that when splitting
781 user input, the part that can be treated as a python name is pure
786 user input, the part that can be treated as a python name is pure
782 ascii (Python identifiers MUST be pure ascii). Part of the
787 ascii (Python identifiers MUST be pure ascii). Part of the
783 ongoing Unicode support work.
788 ongoing Unicode support work.
784
789
785 * IPython/Prompts.py (prompt_specials_color): Add \N for the
790 * IPython/Prompts.py (prompt_specials_color): Add \N for the
786 actual prompt number, without any coloring. This allows users to
791 actual prompt number, without any coloring. This allows users to
787 produce numbered prompts with their own colors. Added after a
792 produce numbered prompts with their own colors. Added after a
788 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
793 report/request by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
789
794
790 2007-03-31 Walter Doerwald <walter@livinglogic.de>
795 2007-03-31 Walter Doerwald <walter@livinglogic.de>
791
796
792 * IPython/Extensions/igrid.py: Map the return key
797 * IPython/Extensions/igrid.py: Map the return key
793 to enter() and shift-return to enterattr().
798 to enter() and shift-return to enterattr().
794
799
795 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
800 2007-03-30 Fernando Perez <Fernando.Perez@colorado.edu>
796
801
797 * IPython/Magic.py (magic_psearch): add unicode support by
802 * IPython/Magic.py (magic_psearch): add unicode support by
798 encoding to ascii the input, since this routine also only deals
803 encoding to ascii the input, since this routine also only deals
799 with valid Python names. Fixes a bug reported by Stefan.
804 with valid Python names. Fixes a bug reported by Stefan.
800
805
801 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
806 2007-03-29 Fernando Perez <Fernando.Perez@colorado.edu>
802
807
803 * IPython/Magic.py (_inspect): convert unicode input into ascii
808 * IPython/Magic.py (_inspect): convert unicode input into ascii
804 before trying to evaluate it as a Python identifier. This fixes a
809 before trying to evaluate it as a Python identifier. This fixes a
805 problem that the new unicode support had introduced when analyzing
810 problem that the new unicode support had introduced when analyzing
806 long definition lines for functions.
811 long definition lines for functions.
807
812
808 2007-03-24 Walter Doerwald <walter@livinglogic.de>
813 2007-03-24 Walter Doerwald <walter@livinglogic.de>
809
814
810 * IPython/Extensions/igrid.py: Fix picking. Using
815 * IPython/Extensions/igrid.py: Fix picking. Using
811 igrid with wxPython 2.6 and -wthread should work now.
816 igrid with wxPython 2.6 and -wthread should work now.
812 igrid.display() simply tries to create a frame without
817 igrid.display() simply tries to create a frame without
813 an application. Only if this fails an application is created.
818 an application. Only if this fails an application is created.
814
819
815 2007-03-23 Walter Doerwald <walter@livinglogic.de>
820 2007-03-23 Walter Doerwald <walter@livinglogic.de>
816
821
817 * IPython/Extensions/path.py: Updated to version 2.2.
822 * IPython/Extensions/path.py: Updated to version 2.2.
818
823
819 2007-03-23 Ville Vainio <vivainio@gmail.com>
824 2007-03-23 Ville Vainio <vivainio@gmail.com>
820
825
821 * iplib.py: recursive alias expansion now works better, so that
826 * iplib.py: recursive alias expansion now works better, so that
822 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
827 cases like 'top' -> 'd:/cygwin/top' -> 'ls :/cygwin/top'
823 doesn't trip up the process, if 'd' has been aliased to 'ls'.
828 doesn't trip up the process, if 'd' has been aliased to 'ls'.
824
829
825 * Extensions/ipy_gnuglobal.py added, provides %global magic
830 * Extensions/ipy_gnuglobal.py added, provides %global magic
826 for users of http://www.gnu.org/software/global
831 for users of http://www.gnu.org/software/global
827
832
828 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
833 * iplib.py: '!command /?' now doesn't invoke IPython's help system.
829 Closes #52. Patch by Stefan van der Walt.
834 Closes #52. Patch by Stefan van der Walt.
830
835
831 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
836 2007-03-23 Fernando Perez <Fernando.Perez@colorado.edu>
832
837
833 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
838 * IPython/FakeModule.py (FakeModule.__init__): Small fix to
834 respect the __file__ attribute when using %run. Thanks to a bug
839 respect the __file__ attribute when using %run. Thanks to a bug
835 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
840 report by Sebastian Rooks <sebastian.rooks-AT-free.fr>.
836
841
837 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
842 2007-03-22 Fernando Perez <Fernando.Perez@colorado.edu>
838
843
839 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
844 * IPython/iplib.py (raw_input): Fix mishandling of unicode at
840 input. Patch sent by Stefan.
845 input. Patch sent by Stefan.
841
846
842 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
847 2007-03-20 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
843 * IPython/Extensions/ipy_stock_completer.py
848 * IPython/Extensions/ipy_stock_completer.py
844 shlex_split, fix bug in shlex_split. len function
849 shlex_split, fix bug in shlex_split. len function
845 call was missing an if statement. Caused shlex_split to
850 call was missing an if statement. Caused shlex_split to
846 sometimes return "" as last element.
851 sometimes return "" as last element.
847
852
848 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
853 2007-03-18 Fernando Perez <Fernando.Perez@colorado.edu>
849
854
850 * IPython/completer.py
855 * IPython/completer.py
851 (IPCompleter.file_matches.single_dir_expand): fix a problem
856 (IPCompleter.file_matches.single_dir_expand): fix a problem
852 reported by Stefan, where directories containign a single subdir
857 reported by Stefan, where directories containign a single subdir
853 would be completed too early.
858 would be completed too early.
854
859
855 * IPython/Shell.py (_load_pylab): Make the execution of 'from
860 * IPython/Shell.py (_load_pylab): Make the execution of 'from
856 pylab import *' when -pylab is given be optional. A new flag,
861 pylab import *' when -pylab is given be optional. A new flag,
857 pylab_import_all controls this behavior, the default is True for
862 pylab_import_all controls this behavior, the default is True for
858 backwards compatibility.
863 backwards compatibility.
859
864
860 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
865 * IPython/ultraTB.py (_formatTracebackLines): Added (slightly
861 modified) R. Bernstein's patch for fully syntax highlighted
866 modified) R. Bernstein's patch for fully syntax highlighted
862 tracebacks. The functionality is also available under ultraTB for
867 tracebacks. The functionality is also available under ultraTB for
863 non-ipython users (someone using ultraTB but outside an ipython
868 non-ipython users (someone using ultraTB but outside an ipython
864 session). They can select the color scheme by setting the
869 session). They can select the color scheme by setting the
865 module-level global DEFAULT_SCHEME. The highlight functionality
870 module-level global DEFAULT_SCHEME. The highlight functionality
866 also works when debugging.
871 also works when debugging.
867
872
868 * IPython/genutils.py (IOStream.close): small patch by
873 * IPython/genutils.py (IOStream.close): small patch by
869 R. Bernstein for improved pydb support.
874 R. Bernstein for improved pydb support.
870
875
871 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
876 * IPython/Debugger.py (Pdb.format_stack_entry): Added patch by
872 DaveS <davls@telus.net> to improve support of debugging under
877 DaveS <davls@telus.net> to improve support of debugging under
873 NTEmacs, including improved pydb behavior.
878 NTEmacs, including improved pydb behavior.
874
879
875 * IPython/Magic.py (magic_prun): Fix saving of profile info for
880 * IPython/Magic.py (magic_prun): Fix saving of profile info for
876 Python 2.5, where the stats object API changed a little. Thanks
881 Python 2.5, where the stats object API changed a little. Thanks
877 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
882 to a bug report by Paul Smith <paul.smith-AT-catugmt.com>.
878
883
879 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
884 * IPython/ColorANSI.py (InputTermColors.Normal): applied Nicolas
880 Pernetty's patch to improve support for (X)Emacs under Win32.
885 Pernetty's patch to improve support for (X)Emacs under Win32.
881
886
882 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
887 2007-03-17 Fernando Perez <Fernando.Perez@colorado.edu>
883
888
884 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
889 * IPython/Shell.py (hijack_wx): ipmort WX with current semantics
885 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
890 to quiet a deprecation warning that fires with Wx 2.8. Thanks to
886 a report by Nik Tautenhahn.
891 a report by Nik Tautenhahn.
887
892
888 2007-03-16 Walter Doerwald <walter@livinglogic.de>
893 2007-03-16 Walter Doerwald <walter@livinglogic.de>
889
894
890 * setup.py: Add the igrid help files to the list of data files
895 * setup.py: Add the igrid help files to the list of data files
891 to be installed alongside igrid.
896 to be installed alongside igrid.
892 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
897 * IPython/Extensions/igrid.py: (Patch by Nik Tautenhahn)
893 Show the input object of the igrid browser as the window tile.
898 Show the input object of the igrid browser as the window tile.
894 Show the object the cursor is on in the statusbar.
899 Show the object the cursor is on in the statusbar.
895
900
896 2007-03-15 Ville Vainio <vivainio@gmail.com>
901 2007-03-15 Ville Vainio <vivainio@gmail.com>
897
902
898 * Extensions/ipy_stock_completers.py: Fixed exception
903 * Extensions/ipy_stock_completers.py: Fixed exception
899 on mismatching quotes in %run completer. Patch by
904 on mismatching quotes in %run completer. Patch by
900 Jorgen Stenarson. Closes #127.
905 Jorgen Stenarson. Closes #127.
901
906
902 2007-03-14 Ville Vainio <vivainio@gmail.com>
907 2007-03-14 Ville Vainio <vivainio@gmail.com>
903
908
904 * Extensions/ext_rehashdir.py: Do not do auto_alias
909 * Extensions/ext_rehashdir.py: Do not do auto_alias
905 in %rehashdir, it clobbers %store'd aliases.
910 in %rehashdir, it clobbers %store'd aliases.
906
911
907 * UserConfig/ipy_profile_sh.py: envpersist.py extension
912 * UserConfig/ipy_profile_sh.py: envpersist.py extension
908 (beefed up %env) imported for sh profile.
913 (beefed up %env) imported for sh profile.
909
914
910 2007-03-10 Walter Doerwald <walter@livinglogic.de>
915 2007-03-10 Walter Doerwald <walter@livinglogic.de>
911
916
912 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
917 * IPython/Extensions/ipipe.py: Prefer ibrowse over igrid
913 as the default browser.
918 as the default browser.
914 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
919 * IPython/Extensions/igrid.py: Make a few igrid attributes private.
915 As igrid displays all attributes it ever encounters, fetch() (which has
920 As igrid displays all attributes it ever encounters, fetch() (which has
916 been renamed to _fetch()) doesn't have to recalculate the display attributes
921 been renamed to _fetch()) doesn't have to recalculate the display attributes
917 every time a new item is fetched. This should speed up scrolling.
922 every time a new item is fetched. This should speed up scrolling.
918
923
919 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
924 2007-03-10 Fernando Perez <Fernando.Perez@colorado.edu>
920
925
921 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
926 * IPython/iplib.py (InteractiveShell.__init__): fix for Alex
922 Schmolck's recently reported tab-completion bug (my previous one
927 Schmolck's recently reported tab-completion bug (my previous one
923 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
928 had a problem). Patch by Dan Milstein <danmil-AT-comcast.net>.
924
929
925 2007-03-09 Walter Doerwald <walter@livinglogic.de>
930 2007-03-09 Walter Doerwald <walter@livinglogic.de>
926
931
927 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
932 * IPython/Extensions/igrid.py: Patch by Nik Tautenhahn:
928 Close help window if exiting igrid.
933 Close help window if exiting igrid.
929
934
930 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
935 2007-03-02 Jorgen Stenarson <jorgen.stenarson@bostream.nu>
931
936
932 * IPython/Extensions/ipy_defaults.py: Check if readline is available
937 * IPython/Extensions/ipy_defaults.py: Check if readline is available
933 before calling functions from readline.
938 before calling functions from readline.
934
939
935 2007-03-02 Walter Doerwald <walter@livinglogic.de>
940 2007-03-02 Walter Doerwald <walter@livinglogic.de>
936
941
937 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
942 * IPython/Extensions/igrid.py: Add Nik Tautenhahns igrid extension.
938 igrid is a wxPython-based display object for ipipe. If your system has
943 igrid is a wxPython-based display object for ipipe. If your system has
939 wx installed igrid will be the default display. Without wx ipipe falls
944 wx installed igrid will be the default display. Without wx ipipe falls
940 back to ibrowse (which needs curses). If no curses is installed ipipe
945 back to ibrowse (which needs curses). If no curses is installed ipipe
941 falls back to idump.
946 falls back to idump.
942
947
943 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
948 2007-03-01 Fernando Perez <Fernando.Perez@colorado.edu>
944
949
945 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
950 * IPython/iplib.py (split_user_inputBROKEN): temporarily disable
946 my changes from yesterday, they introduced bugs. Will reactivate
951 my changes from yesterday, they introduced bugs. Will reactivate
947 once I get a correct solution, which will be much easier thanks to
952 once I get a correct solution, which will be much easier thanks to
948 Dan Milstein's new prefilter test suite.
953 Dan Milstein's new prefilter test suite.
949
954
950 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
955 2007-02-28 Fernando Perez <Fernando.Perez@colorado.edu>
951
956
952 * IPython/iplib.py (split_user_input): fix input splitting so we
957 * IPython/iplib.py (split_user_input): fix input splitting so we
953 don't attempt attribute accesses on things that can't possibly be
958 don't attempt attribute accesses on things that can't possibly be
954 valid Python attributes. After a bug report by Alex Schmolck.
959 valid Python attributes. After a bug report by Alex Schmolck.
955 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
960 (InteractiveShell.__init__): brown-paper bag fix; regexp broke
956 %magic with explicit % prefix.
961 %magic with explicit % prefix.
957
962
958 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
963 2007-02-27 Fernando Perez <Fernando.Perez@colorado.edu>
959
964
960 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
965 * IPython/Shell.py (IPShellGTK.mainloop): update threads calls to
961 avoid a DeprecationWarning from GTK.
966 avoid a DeprecationWarning from GTK.
962
967
963 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
968 2007-02-22 Fernando Perez <Fernando.Perez@colorado.edu>
964
969
965 * IPython/genutils.py (clock): I modified clock() to return total
970 * IPython/genutils.py (clock): I modified clock() to return total
966 time, user+system. This is a more commonly needed metric. I also
971 time, user+system. This is a more commonly needed metric. I also
967 introduced the new clocku/clocks to get only user/system time if
972 introduced the new clocku/clocks to get only user/system time if
968 one wants those instead.
973 one wants those instead.
969
974
970 ***WARNING: API CHANGE*** clock() used to return only user time,
975 ***WARNING: API CHANGE*** clock() used to return only user time,
971 so if you want exactly the same results as before, use clocku
976 so if you want exactly the same results as before, use clocku
972 instead.
977 instead.
973
978
974 2007-02-22 Ville Vainio <vivainio@gmail.com>
979 2007-02-22 Ville Vainio <vivainio@gmail.com>
975
980
976 * IPython/Extensions/ipy_p4.py: Extension for improved
981 * IPython/Extensions/ipy_p4.py: Extension for improved
977 p4 (perforce version control system) experience.
982 p4 (perforce version control system) experience.
978 Adds %p4 magic with p4 command completion and
983 Adds %p4 magic with p4 command completion and
979 automatic -G argument (marshall output as python dict)
984 automatic -G argument (marshall output as python dict)
980
985
981 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
986 2007-02-19 Fernando Perez <Fernando.Perez@colorado.edu>
982
987
983 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
988 * IPython/demo.py (Demo.re_stop): make dashes optional in demo
984 stop marks.
989 stop marks.
985 (ClearingMixin): a simple mixin to easily make a Demo class clear
990 (ClearingMixin): a simple mixin to easily make a Demo class clear
986 the screen in between blocks and have empty marquees. The
991 the screen in between blocks and have empty marquees. The
987 ClearDemo and ClearIPDemo classes that use it are included.
992 ClearDemo and ClearIPDemo classes that use it are included.
988
993
989 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
994 2007-02-18 Fernando Perez <Fernando.Perez@colorado.edu>
990
995
991 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
996 * IPython/irunner.py (pexpect_monkeypatch): patch pexpect to
992 protect against exceptions at Python shutdown time. Patch
997 protect against exceptions at Python shutdown time. Patch
993 sumbmitted to upstream.
998 sumbmitted to upstream.
994
999
995 2007-02-14 Walter Doerwald <walter@livinglogic.de>
1000 2007-02-14 Walter Doerwald <walter@livinglogic.de>
996
1001
997 * IPython/Extensions/ibrowse.py: If entering the first object level
1002 * IPython/Extensions/ibrowse.py: If entering the first object level
998 (i.e. the object for which the browser has been started) fails,
1003 (i.e. the object for which the browser has been started) fails,
999 now the error is raised directly (aborting the browser) instead of
1004 now the error is raised directly (aborting the browser) instead of
1000 running into an empty levels list later.
1005 running into an empty levels list later.
1001
1006
1002 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1007 2007-02-03 Walter Doerwald <walter@livinglogic.de>
1003
1008
1004 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1009 * IPython/Extensions/ipipe.py: Add an xrepr implementation
1005 for the noitem object.
1010 for the noitem object.
1006
1011
1007 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1012 2007-01-31 Fernando Perez <Fernando.Perez@colorado.edu>
1008
1013
1009 * IPython/completer.py (Completer.attr_matches): Fix small
1014 * IPython/completer.py (Completer.attr_matches): Fix small
1010 tab-completion bug with Enthought Traits objects with units.
1015 tab-completion bug with Enthought Traits objects with units.
1011 Thanks to a bug report by Tom Denniston
1016 Thanks to a bug report by Tom Denniston
1012 <tom.denniston-AT-alum.dartmouth.org>.
1017 <tom.denniston-AT-alum.dartmouth.org>.
1013
1018
1014 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1019 2007-01-27 Fernando Perez <Fernando.Perez@colorado.edu>
1015
1020
1016 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1021 * IPython/Extensions/ipy_stock_completers.py (runlistpy): fix a
1017 bug where only .ipy or .py would be completed. Once the first
1022 bug where only .ipy or .py would be completed. Once the first
1018 argument to %run has been given, all completions are valid because
1023 argument to %run has been given, all completions are valid because
1019 they are the arguments to the script, which may well be non-python
1024 they are the arguments to the script, which may well be non-python
1020 filenames.
1025 filenames.
1021
1026
1022 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1027 * IPython/irunner.py (InteractiveRunner.run_source): major updates
1023 to irunner to allow it to correctly support real doctesting of
1028 to irunner to allow it to correctly support real doctesting of
1024 out-of-process ipython code.
1029 out-of-process ipython code.
1025
1030
1026 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1031 * IPython/Magic.py (magic_cd): Make the setting of the terminal
1027 title an option (-noterm_title) because it completely breaks
1032 title an option (-noterm_title) because it completely breaks
1028 doctesting.
1033 doctesting.
1029
1034
1030 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1035 * IPython/demo.py: fix IPythonDemo class that was not actually working.
1031
1036
1032 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1037 2007-01-24 Fernando Perez <Fernando.Perez@colorado.edu>
1033
1038
1034 * IPython/irunner.py (main): fix small bug where extensions were
1039 * IPython/irunner.py (main): fix small bug where extensions were
1035 not being correctly recognized.
1040 not being correctly recognized.
1036
1041
1037 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1042 2007-01-23 Walter Doerwald <walter@livinglogic.de>
1038
1043
1039 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1044 * IPython/Extensions/ipipe.py (xiter): Make sure that iterating
1040 a string containing a single line yields the string itself as the
1045 a string containing a single line yields the string itself as the
1041 only item.
1046 only item.
1042
1047
1043 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1048 * IPython/Extensions/ibrowse.py (ibrowse): Avoid entering an
1044 object if it's the same as the one on the last level (This avoids
1049 object if it's the same as the one on the last level (This avoids
1045 infinite recursion for one line strings).
1050 infinite recursion for one line strings).
1046
1051
1047 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1052 2007-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
1048
1053
1049 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1054 * IPython/ultraTB.py (AutoFormattedTB.__call__): properly flush
1050 all output streams before printing tracebacks. This ensures that
1055 all output streams before printing tracebacks. This ensures that
1051 user output doesn't end up interleaved with traceback output.
1056 user output doesn't end up interleaved with traceback output.
1052
1057
1053 2007-01-10 Ville Vainio <vivainio@gmail.com>
1058 2007-01-10 Ville Vainio <vivainio@gmail.com>
1054
1059
1055 * Extensions/envpersist.py: Turbocharged %env that remembers
1060 * Extensions/envpersist.py: Turbocharged %env that remembers
1056 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1061 env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or
1057 "%env VISUAL=jed".
1062 "%env VISUAL=jed".
1058
1063
1059 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1064 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu>
1060
1065
1061 * IPython/iplib.py (showtraceback): ensure that we correctly call
1066 * IPython/iplib.py (showtraceback): ensure that we correctly call
1062 custom handlers in all cases (some with pdb were slipping through,
1067 custom handlers in all cases (some with pdb were slipping through,
1063 but I'm not exactly sure why).
1068 but I'm not exactly sure why).
1064
1069
1065 * IPython/Debugger.py (Tracer.__init__): added new class to
1070 * IPython/Debugger.py (Tracer.__init__): added new class to
1066 support set_trace-like usage of IPython's enhanced debugger.
1071 support set_trace-like usage of IPython's enhanced debugger.
1067
1072
1068 2006-12-24 Ville Vainio <vivainio@gmail.com>
1073 2006-12-24 Ville Vainio <vivainio@gmail.com>
1069
1074
1070 * ipmaker.py: more informative message when ipy_user_conf
1075 * ipmaker.py: more informative message when ipy_user_conf
1071 import fails (suggest running %upgrade).
1076 import fails (suggest running %upgrade).
1072
1077
1073 * tools/run_ipy_in_profiler.py: Utility to see where
1078 * tools/run_ipy_in_profiler.py: Utility to see where
1074 the time during IPython startup is spent.
1079 the time during IPython startup is spent.
1075
1080
1076 2006-12-20 Ville Vainio <vivainio@gmail.com>
1081 2006-12-20 Ville Vainio <vivainio@gmail.com>
1077
1082
1078 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1083 * 0.7.3 is out - merge all from 0.7.3 branch to trunk
1079
1084
1080 * ipapi.py: Add new ipapi method, expand_alias.
1085 * ipapi.py: Add new ipapi method, expand_alias.
1081
1086
1082 * Release.py: Bump up version to 0.7.4.svn
1087 * Release.py: Bump up version to 0.7.4.svn
1083
1088
1084 2006-12-17 Ville Vainio <vivainio@gmail.com>
1089 2006-12-17 Ville Vainio <vivainio@gmail.com>
1085
1090
1086 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1091 * Extensions/jobctrl.py: Fixed &cmd arg arg...
1087 to work properly on posix too
1092 to work properly on posix too
1088
1093
1089 * Release.py: Update revnum (version is still just 0.7.3).
1094 * Release.py: Update revnum (version is still just 0.7.3).
1090
1095
1091 2006-12-15 Ville Vainio <vivainio@gmail.com>
1096 2006-12-15 Ville Vainio <vivainio@gmail.com>
1092
1097
1093 * scripts/ipython_win_post_install: create ipython.py in
1098 * scripts/ipython_win_post_install: create ipython.py in
1094 prefix + "/scripts".
1099 prefix + "/scripts".
1095
1100
1096 * Release.py: Update version to 0.7.3.
1101 * Release.py: Update version to 0.7.3.
1097
1102
1098 2006-12-14 Ville Vainio <vivainio@gmail.com>
1103 2006-12-14 Ville Vainio <vivainio@gmail.com>
1099
1104
1100 * scripts/ipython_win_post_install: Overwrite old shortcuts
1105 * scripts/ipython_win_post_install: Overwrite old shortcuts
1101 if they already exist
1106 if they already exist
1102
1107
1103 * Release.py: release 0.7.3rc2
1108 * Release.py: release 0.7.3rc2
1104
1109
1105 2006-12-13 Ville Vainio <vivainio@gmail.com>
1110 2006-12-13 Ville Vainio <vivainio@gmail.com>
1106
1111
1107 * Branch and update Release.py for 0.7.3rc1
1112 * Branch and update Release.py for 0.7.3rc1
1108
1113
1109 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1114 2006-12-13 Fernando Perez <Fernando.Perez@colorado.edu>
1110
1115
1111 * IPython/Shell.py (IPShellWX): update for current WX naming
1116 * IPython/Shell.py (IPShellWX): update for current WX naming
1112 conventions, to avoid a deprecation warning with current WX
1117 conventions, to avoid a deprecation warning with current WX
1113 versions. Thanks to a report by Danny Shevitz.
1118 versions. Thanks to a report by Danny Shevitz.
1114
1119
1115 2006-12-12 Ville Vainio <vivainio@gmail.com>
1120 2006-12-12 Ville Vainio <vivainio@gmail.com>
1116
1121
1117 * ipmaker.py: apply david cournapeau's patch to make
1122 * ipmaker.py: apply david cournapeau's patch to make
1118 import_some work properly even when ipythonrc does
1123 import_some work properly even when ipythonrc does
1119 import_some on empty list (it was an old bug!).
1124 import_some on empty list (it was an old bug!).
1120
1125
1121 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1126 * UserConfig/ipy_user_conf.py, UserConfig/ipythonrc:
1122 Add deprecation note to ipythonrc and a url to wiki
1127 Add deprecation note to ipythonrc and a url to wiki
1123 in ipy_user_conf.py
1128 in ipy_user_conf.py
1124
1129
1125
1130
1126 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1131 * Magic.py (%run): %run myscript.ipy now runs myscript.ipy
1127 as if it was typed on IPython command prompt, i.e.
1132 as if it was typed on IPython command prompt, i.e.
1128 as IPython script.
1133 as IPython script.
1129
1134
1130 * example-magic.py, magic_grepl.py: remove outdated examples
1135 * example-magic.py, magic_grepl.py: remove outdated examples
1131
1136
1132 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1137 2006-12-11 Fernando Perez <Fernando.Perez@colorado.edu>
1133
1138
1134 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1139 * IPython/iplib.py (debugger): prevent a nasty traceback if %debug
1135 is called before any exception has occurred.
1140 is called before any exception has occurred.
1136
1141
1137 2006-12-08 Ville Vainio <vivainio@gmail.com>
1142 2006-12-08 Ville Vainio <vivainio@gmail.com>
1138
1143
1139 * Extensions/ipy_stock_completers.py: fix cd completer
1144 * Extensions/ipy_stock_completers.py: fix cd completer
1140 to translate /'s to \'s again.
1145 to translate /'s to \'s again.
1141
1146
1142 * completer.py: prevent traceback on file completions w/
1147 * completer.py: prevent traceback on file completions w/
1143 backslash.
1148 backslash.
1144
1149
1145 * Release.py: Update release number to 0.7.3b3 for release
1150 * Release.py: Update release number to 0.7.3b3 for release
1146
1151
1147 2006-12-07 Ville Vainio <vivainio@gmail.com>
1152 2006-12-07 Ville Vainio <vivainio@gmail.com>
1148
1153
1149 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1154 * Extensions/ipy_signals.py: Ignore ctrl+C in IPython process
1150 while executing external code. Provides more shell-like behaviour
1155 while executing external code. Provides more shell-like behaviour
1151 and overall better response to ctrl + C / ctrl + break.
1156 and overall better response to ctrl + C / ctrl + break.
1152
1157
1153 * tools/make_tarball.py: new script to create tarball straight from svn
1158 * tools/make_tarball.py: new script to create tarball straight from svn
1154 (setup.py sdist doesn't work on win32).
1159 (setup.py sdist doesn't work on win32).
1155
1160
1156 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1161 * Extensions/ipy_stock_completers.py: fix cd completer to give up
1157 on dirnames with spaces and use the default completer instead.
1162 on dirnames with spaces and use the default completer instead.
1158
1163
1159 * Revision.py: Change version to 0.7.3b2 for release.
1164 * Revision.py: Change version to 0.7.3b2 for release.
1160
1165
1161 2006-12-05 Ville Vainio <vivainio@gmail.com>
1166 2006-12-05 Ville Vainio <vivainio@gmail.com>
1162
1167
1163 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1168 * Magic.py, iplib.py, completer.py: Apply R. Bernstein's
1164 pydb patch 4 (rm debug printing, py 2.5 checking)
1169 pydb patch 4 (rm debug printing, py 2.5 checking)
1165
1170
1166 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1171 2006-11-30 Walter Doerwald <walter@livinglogic.de>
1167 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1172 * IPython/Extensions/ibrowse.py: Add two new commands to ibrowse:
1168 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1173 "refresh" (mapped to "r") refreshes the screen by restarting the iterator.
1169 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1174 "refreshfind" (mapped to "R") does the same but tries to go back to the same
1170 object the cursor was on before the refresh. The command "markrange" is
1175 object the cursor was on before the refresh. The command "markrange" is
1171 mapped to "%" now.
1176 mapped to "%" now.
1172 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1177 * IPython/Extensions/ibrowse.py: Make igrpentry and ipwdentry comparable.
1173
1178
1174 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1179 2006-11-29 Fernando Perez <Fernando.Perez@colorado.edu>
1175
1180
1176 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1181 * IPython/Magic.py (magic_debug): new %debug magic to activate the
1177 interactive debugger on the last traceback, without having to call
1182 interactive debugger on the last traceback, without having to call
1178 %pdb and rerun your code. Made minor changes in various modules,
1183 %pdb and rerun your code. Made minor changes in various modules,
1179 should automatically recognize pydb if available.
1184 should automatically recognize pydb if available.
1180
1185
1181 2006-11-28 Ville Vainio <vivainio@gmail.com>
1186 2006-11-28 Ville Vainio <vivainio@gmail.com>
1182
1187
1183 * completer.py: If the text start with !, show file completions
1188 * completer.py: If the text start with !, show file completions
1184 properly. This helps when trying to complete command name
1189 properly. This helps when trying to complete command name
1185 for shell escapes.
1190 for shell escapes.
1186
1191
1187 2006-11-27 Ville Vainio <vivainio@gmail.com>
1192 2006-11-27 Ville Vainio <vivainio@gmail.com>
1188
1193
1189 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1194 * ipy_stock_completers.py: bzr completer submitted by Stefan van
1190 der Walt. Clean up svn and hg completers by using a common
1195 der Walt. Clean up svn and hg completers by using a common
1191 vcs_completer.
1196 vcs_completer.
1192
1197
1193 2006-11-26 Ville Vainio <vivainio@gmail.com>
1198 2006-11-26 Ville Vainio <vivainio@gmail.com>
1194
1199
1195 * Remove ipconfig and %config; you should use _ip.options structure
1200 * Remove ipconfig and %config; you should use _ip.options structure
1196 directly instead!
1201 directly instead!
1197
1202
1198 * genutils.py: add wrap_deprecated function for deprecating callables
1203 * genutils.py: add wrap_deprecated function for deprecating callables
1199
1204
1200 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1205 * iplib.py: deprecate ipmagic, ipsystem, ipalias. Use _ip.magic and
1201 _ip.system instead. ipalias is redundant.
1206 _ip.system instead. ipalias is redundant.
1202
1207
1203 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1208 * Magic.py: %rehashdir no longer aliases 'cmdname' to 'cmdname.exe' on
1204 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1209 win32, but just 'cmdname'. Other extensions (non-'exe') are still made
1205 explicit.
1210 explicit.
1206
1211
1207 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1212 * ipy_stock_completers.py: 'hg' (mercurial VCS) now has a custom
1208 completer. Try it by entering 'hg ' and pressing tab.
1213 completer. Try it by entering 'hg ' and pressing tab.
1209
1214
1210 * macro.py: Give Macro a useful __repr__ method
1215 * macro.py: Give Macro a useful __repr__ method
1211
1216
1212 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1217 * Magic.py: %whos abbreviates the typename of Macro for brevity.
1213
1218
1214 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1219 2006-11-24 Walter Doerwald <walter@livinglogic.de>
1215 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1220 * IPython/Extensions/astyle.py: Do a relative import of ipipe, so that
1216 we don't get a duplicate ipipe module, where registration of the xrepr
1221 we don't get a duplicate ipipe module, where registration of the xrepr
1217 implementation for Text is useless.
1222 implementation for Text is useless.
1218
1223
1219 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1224 * IPython/Extensions/ipipe.py: Fix __xrepr__() implementation for ils.
1220
1225
1221 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1226 * IPython/Extensions/ibrowse.py: Fix keymapping for the enter command.
1222
1227
1223 2006-11-24 Ville Vainio <vivainio@gmail.com>
1228 2006-11-24 Ville Vainio <vivainio@gmail.com>
1224
1229
1225 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1230 * Magic.py, manual_base.lyx: Kirill Smelkov patch:
1226 try to use "cProfile" instead of the slower pure python
1231 try to use "cProfile" instead of the slower pure python
1227 "profile"
1232 "profile"
1228
1233
1229 2006-11-23 Ville Vainio <vivainio@gmail.com>
1234 2006-11-23 Ville Vainio <vivainio@gmail.com>
1230
1235
1231 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1236 * manual_base.lyx: Kirill Smelkov patch: Fix wrong
1232 Qt+IPython+Designer link in documentation.
1237 Qt+IPython+Designer link in documentation.
1233
1238
1234 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1239 * Extensions/ipy_pydb.py: R. Bernstein's patch for passing
1235 correct Pdb object to %pydb.
1240 correct Pdb object to %pydb.
1236
1241
1237
1242
1238 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1243 2006-11-22 Walter Doerwald <walter@livinglogic.de>
1239 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1244 * IPython/Extensions/astyle.py: Text needs it's own implemenation of the
1240 generic xrepr(), otherwise the list implementation would kick in.
1245 generic xrepr(), otherwise the list implementation would kick in.
1241
1246
1242 2006-11-21 Ville Vainio <vivainio@gmail.com>
1247 2006-11-21 Ville Vainio <vivainio@gmail.com>
1243
1248
1244 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1249 * upgrade_dir.py: Now actually overwrites a nonmodified user file
1245 with one from UserConfig.
1250 with one from UserConfig.
1246
1251
1247 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1252 * ipy_profile_sh.py: Add dummy "depth" to var_expand lambda,
1248 it was missing which broke the sh profile.
1253 it was missing which broke the sh profile.
1249
1254
1250 * completer.py: file completer now uses explicit '/' instead
1255 * completer.py: file completer now uses explicit '/' instead
1251 of os.path.join, expansion of 'foo' was broken on win32
1256 of os.path.join, expansion of 'foo' was broken on win32
1252 if there was one directory with name 'foobar'.
1257 if there was one directory with name 'foobar'.
1253
1258
1254 * A bunch of patches from Kirill Smelkov:
1259 * A bunch of patches from Kirill Smelkov:
1255
1260
1256 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1261 * [patch 9/9] doc: point bug-tracker URL to IPythons trac-tickets.
1257
1262
1258 * [patch 7/9] Implement %page -r (page in raw mode) -
1263 * [patch 7/9] Implement %page -r (page in raw mode) -
1259
1264
1260 * [patch 5/9] ScientificPython webpage has moved
1265 * [patch 5/9] ScientificPython webpage has moved
1261
1266
1262 * [patch 4/9] The manual mentions %ds, should be %dhist
1267 * [patch 4/9] The manual mentions %ds, should be %dhist
1263
1268
1264 * [patch 3/9] Kill old bits from %prun doc.
1269 * [patch 3/9] Kill old bits from %prun doc.
1265
1270
1266 * [patch 1/9] Fix typos here and there.
1271 * [patch 1/9] Fix typos here and there.
1267
1272
1268 2006-11-08 Ville Vainio <vivainio@gmail.com>
1273 2006-11-08 Ville Vainio <vivainio@gmail.com>
1269
1274
1270 * completer.py (attr_matches): catch all exceptions raised
1275 * completer.py (attr_matches): catch all exceptions raised
1271 by eval of expr with dots.
1276 by eval of expr with dots.
1272
1277
1273 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1278 2006-11-07 Fernando Perez <Fernando.Perez@colorado.edu>
1274
1279
1275 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1280 * IPython/iplib.py (runsource): Prepend an 'if 1:' to the user
1276 input if it starts with whitespace. This allows you to paste
1281 input if it starts with whitespace. This allows you to paste
1277 indented input from any editor without manually having to type in
1282 indented input from any editor without manually having to type in
1278 the 'if 1:', which is convenient when working interactively.
1283 the 'if 1:', which is convenient when working interactively.
1279 Slightly modifed version of a patch by Bo Peng
1284 Slightly modifed version of a patch by Bo Peng
1280 <bpeng-AT-rice.edu>.
1285 <bpeng-AT-rice.edu>.
1281
1286
1282 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1287 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1283
1288
1284 * IPython/irunner.py (main): modified irunner so it automatically
1289 * IPython/irunner.py (main): modified irunner so it automatically
1285 recognizes the right runner to use based on the extension (.py for
1290 recognizes the right runner to use based on the extension (.py for
1286 python, .ipy for ipython and .sage for sage).
1291 python, .ipy for ipython and .sage for sage).
1287
1292
1288 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1293 * IPython/iplib.py (InteractiveShell.ipconfig): new builtin, also
1289 visible in ipapi as ip.config(), to programatically control the
1294 visible in ipapi as ip.config(), to programatically control the
1290 internal rc object. There's an accompanying %config magic for
1295 internal rc object. There's an accompanying %config magic for
1291 interactive use, which has been enhanced to match the
1296 interactive use, which has been enhanced to match the
1292 funtionality in ipconfig.
1297 funtionality in ipconfig.
1293
1298
1294 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1299 * IPython/Magic.py (magic_system_verbose): Change %system_verbose
1295 so it's not just a toggle, it now takes an argument. Add support
1300 so it's not just a toggle, it now takes an argument. Add support
1296 for a customizable header when making system calls, as the new
1301 for a customizable header when making system calls, as the new
1297 system_header variable in the ipythonrc file.
1302 system_header variable in the ipythonrc file.
1298
1303
1299 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1304 2006-11-03 Walter Doerwald <walter@livinglogic.de>
1300
1305
1301 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1306 * IPython/Extensions/ipipe.py: xrepr(), xiter() and xattrs() are now
1302 generic functions (using Philip J. Eby's simplegeneric package).
1307 generic functions (using Philip J. Eby's simplegeneric package).
1303 This makes it possible to customize the display of third-party classes
1308 This makes it possible to customize the display of third-party classes
1304 without having to monkeypatch them. xiter() no longer supports a mode
1309 without having to monkeypatch them. xiter() no longer supports a mode
1305 argument and the XMode class has been removed. The same functionality can
1310 argument and the XMode class has been removed. The same functionality can
1306 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1311 be implemented via IterAttributeDescriptor and IterMethodDescriptor.
1307 One consequence of the switch to generic functions is that xrepr() and
1312 One consequence of the switch to generic functions is that xrepr() and
1308 xattrs() implementation must define the default value for the mode
1313 xattrs() implementation must define the default value for the mode
1309 argument themselves and xattrs() implementations must return real
1314 argument themselves and xattrs() implementations must return real
1310 descriptors.
1315 descriptors.
1311
1316
1312 * IPython/external: This new subpackage will contain all third-party
1317 * IPython/external: This new subpackage will contain all third-party
1313 packages that are bundled with IPython. (The first one is simplegeneric).
1318 packages that are bundled with IPython. (The first one is simplegeneric).
1314
1319
1315 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1320 * IPython/Extensions/ipipe.py (ifile/ils): Readd output of the parent
1316 directory which as been dropped in r1703.
1321 directory which as been dropped in r1703.
1317
1322
1318 * IPython/Extensions/ipipe.py (iless): Fixed.
1323 * IPython/Extensions/ipipe.py (iless): Fixed.
1319
1324
1320 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1325 * IPython/Extensions/ibrowse: Fixed sorting under Python 2.3.
1321
1326
1322 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1327 2006-11-03 Fernando Perez <Fernando.Perez@colorado.edu>
1323
1328
1324 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1329 * IPython/iplib.py (InteractiveShell.var_expand): fix stack
1325 handling in variable expansion so that shells and magics recognize
1330 handling in variable expansion so that shells and magics recognize
1326 function local scopes correctly. Bug reported by Brian.
1331 function local scopes correctly. Bug reported by Brian.
1327
1332
1328 * scripts/ipython: remove the very first entry in sys.path which
1333 * scripts/ipython: remove the very first entry in sys.path which
1329 Python auto-inserts for scripts, so that sys.path under IPython is
1334 Python auto-inserts for scripts, so that sys.path under IPython is
1330 as similar as possible to that under plain Python.
1335 as similar as possible to that under plain Python.
1331
1336
1332 * IPython/completer.py (IPCompleter.file_matches): Fix
1337 * IPython/completer.py (IPCompleter.file_matches): Fix
1333 tab-completion so that quotes are not closed unless the completion
1338 tab-completion so that quotes are not closed unless the completion
1334 is unambiguous. After a request by Stefan. Minor cleanups in
1339 is unambiguous. After a request by Stefan. Minor cleanups in
1335 ipy_stock_completers.
1340 ipy_stock_completers.
1336
1341
1337 2006-11-02 Ville Vainio <vivainio@gmail.com>
1342 2006-11-02 Ville Vainio <vivainio@gmail.com>
1338
1343
1339 * ipy_stock_completers.py: Add %run and %cd completers.
1344 * ipy_stock_completers.py: Add %run and %cd completers.
1340
1345
1341 * completer.py: Try running custom completer for both
1346 * completer.py: Try running custom completer for both
1342 "foo" and "%foo" if the command is just "foo". Ignore case
1347 "foo" and "%foo" if the command is just "foo". Ignore case
1343 when filtering possible completions.
1348 when filtering possible completions.
1344
1349
1345 * UserConfig/ipy_user_conf.py: install stock completers as default
1350 * UserConfig/ipy_user_conf.py: install stock completers as default
1346
1351
1347 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1352 * iplib.py (history_saving_wrapper), debugger(), ipy_pydb.py:
1348 simplified readline history save / restore through a wrapper
1353 simplified readline history save / restore through a wrapper
1349 function
1354 function
1350
1355
1351
1356
1352 2006-10-31 Ville Vainio <vivainio@gmail.com>
1357 2006-10-31 Ville Vainio <vivainio@gmail.com>
1353
1358
1354 * strdispatch.py, completer.py, ipy_stock_completers.py:
1359 * strdispatch.py, completer.py, ipy_stock_completers.py:
1355 Allow str_key ("command") in completer hooks. Implement
1360 Allow str_key ("command") in completer hooks. Implement
1356 trivial completer for 'import' (stdlib modules only). Rename
1361 trivial completer for 'import' (stdlib modules only). Rename
1357 ipy_linux_package_managers.py to ipy_stock_completers.py.
1362 ipy_linux_package_managers.py to ipy_stock_completers.py.
1358 SVN completer.
1363 SVN completer.
1359
1364
1360 * Extensions/ledit.py: %magic line editor for easily and
1365 * Extensions/ledit.py: %magic line editor for easily and
1361 incrementally manipulating lists of strings. The magic command
1366 incrementally manipulating lists of strings. The magic command
1362 name is %led.
1367 name is %led.
1363
1368
1364 2006-10-30 Ville Vainio <vivainio@gmail.com>
1369 2006-10-30 Ville Vainio <vivainio@gmail.com>
1365
1370
1366 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1371 * Debugger.py, iplib.py (debugger()): Add last set of Rocky
1367 Bernsteins's patches for pydb integration.
1372 Bernsteins's patches for pydb integration.
1368 http://bashdb.sourceforge.net/pydb/
1373 http://bashdb.sourceforge.net/pydb/
1369
1374
1370 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1375 * strdispatch.py, iplib.py, completer.py, IPython/__init__.py,
1371 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1376 Extensions/ipy_linux_package_managers.py, hooks.py: Implement
1372 custom completer hook to allow the users to implement their own
1377 custom completer hook to allow the users to implement their own
1373 completers. See ipy_linux_package_managers.py for example. The
1378 completers. See ipy_linux_package_managers.py for example. The
1374 hook name is 'complete_command'.
1379 hook name is 'complete_command'.
1375
1380
1376 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1381 2006-10-28 Fernando Perez <Fernando.Perez@colorado.edu>
1377
1382
1378 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1383 * IPython/UserConfig/ipythonrc-scipy: minor cleanups to remove old
1379 Numeric leftovers.
1384 Numeric leftovers.
1380
1385
1381 * ipython.el (py-execute-region): apply Stefan's patch to fix
1386 * ipython.el (py-execute-region): apply Stefan's patch to fix
1382 garbled results if the python shell hasn't been previously started.
1387 garbled results if the python shell hasn't been previously started.
1383
1388
1384 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1389 * IPython/genutils.py (arg_split): moved to genutils, since it's a
1385 pretty generic function and useful for other things.
1390 pretty generic function and useful for other things.
1386
1391
1387 * IPython/OInspect.py (getsource): Add customizable source
1392 * IPython/OInspect.py (getsource): Add customizable source
1388 extractor. After a request/patch form W. Stein (SAGE).
1393 extractor. After a request/patch form W. Stein (SAGE).
1389
1394
1390 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1395 * IPython/irunner.py (InteractiveRunner.run_source): reset tty
1391 window size to a more reasonable value from what pexpect does,
1396 window size to a more reasonable value from what pexpect does,
1392 since their choice causes wrapping bugs with long input lines.
1397 since their choice causes wrapping bugs with long input lines.
1393
1398
1394 2006-10-28 Ville Vainio <vivainio@gmail.com>
1399 2006-10-28 Ville Vainio <vivainio@gmail.com>
1395
1400
1396 * Magic.py (%run): Save and restore the readline history from
1401 * Magic.py (%run): Save and restore the readline history from
1397 file around %run commands to prevent side effects from
1402 file around %run commands to prevent side effects from
1398 %runned programs that might use readline (e.g. pydb).
1403 %runned programs that might use readline (e.g. pydb).
1399
1404
1400 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1405 * extensions/ipy_pydb.py: Adds %pydb magic when imported, for
1401 invoking the pydb enhanced debugger.
1406 invoking the pydb enhanced debugger.
1402
1407
1403 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1408 2006-10-23 Walter Doerwald <walter@livinglogic.de>
1404
1409
1405 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1410 * IPython/Extensions/ipipe.py (ifile): Remove all methods that
1406 call the base class method and propagate the return value to
1411 call the base class method and propagate the return value to
1407 ifile. This is now done by path itself.
1412 ifile. This is now done by path itself.
1408
1413
1409 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1414 2006-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1410
1415
1411 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1416 * IPython/ipapi.py (IPApi.__init__): Added new entry to public
1412 api: set_crash_handler(), to expose the ability to change the
1417 api: set_crash_handler(), to expose the ability to change the
1413 internal crash handler.
1418 internal crash handler.
1414
1419
1415 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1420 * IPython/CrashHandler.py (CrashHandler.__init__): abstract out
1416 the various parameters of the crash handler so that apps using
1421 the various parameters of the crash handler so that apps using
1417 IPython as their engine can customize crash handling. Ipmlemented
1422 IPython as their engine can customize crash handling. Ipmlemented
1418 at the request of SAGE.
1423 at the request of SAGE.
1419
1424
1420 2006-10-14 Ville Vainio <vivainio@gmail.com>
1425 2006-10-14 Ville Vainio <vivainio@gmail.com>
1421
1426
1422 * Magic.py, ipython.el: applied first "safe" part of Rocky
1427 * Magic.py, ipython.el: applied first "safe" part of Rocky
1423 Bernstein's patch set for pydb integration.
1428 Bernstein's patch set for pydb integration.
1424
1429
1425 * Magic.py (%unalias, %alias): %store'd aliases can now be
1430 * Magic.py (%unalias, %alias): %store'd aliases can now be
1426 removed with '%unalias'. %alias w/o args now shows most
1431 removed with '%unalias'. %alias w/o args now shows most
1427 interesting (stored / manually defined) aliases last
1432 interesting (stored / manually defined) aliases last
1428 where they catch the eye w/o scrolling.
1433 where they catch the eye w/o scrolling.
1429
1434
1430 * Magic.py (%rehashx), ext_rehashdir.py: files with
1435 * Magic.py (%rehashx), ext_rehashdir.py: files with
1431 'py' extension are always considered executable, even
1436 'py' extension are always considered executable, even
1432 when not in PATHEXT environment variable.
1437 when not in PATHEXT environment variable.
1433
1438
1434 2006-10-12 Ville Vainio <vivainio@gmail.com>
1439 2006-10-12 Ville Vainio <vivainio@gmail.com>
1435
1440
1436 * jobctrl.py: Add new "jobctrl" extension for spawning background
1441 * jobctrl.py: Add new "jobctrl" extension for spawning background
1437 processes with "&find /". 'import jobctrl' to try it out. Requires
1442 processes with "&find /". 'import jobctrl' to try it out. Requires
1438 'subprocess' module, standard in python 2.4+.
1443 'subprocess' module, standard in python 2.4+.
1439
1444
1440 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1445 * iplib.py (expand_aliases, handle_alias): Aliases expand transitively,
1441 so if foo -> bar and bar -> baz, then foo -> baz.
1446 so if foo -> bar and bar -> baz, then foo -> baz.
1442
1447
1443 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1448 2006-10-09 Fernando Perez <Fernando.Perez@colorado.edu>
1444
1449
1445 * IPython/Magic.py (Magic.parse_options): add a new posix option
1450 * IPython/Magic.py (Magic.parse_options): add a new posix option
1446 to allow parsing of input args in magics that doesn't strip quotes
1451 to allow parsing of input args in magics that doesn't strip quotes
1447 (if posix=False). This also closes %timeit bug reported by
1452 (if posix=False). This also closes %timeit bug reported by
1448 Stefan.
1453 Stefan.
1449
1454
1450 2006-10-03 Ville Vainio <vivainio@gmail.com>
1455 2006-10-03 Ville Vainio <vivainio@gmail.com>
1451
1456
1452 * iplib.py (raw_input, interact): Return ValueError catching for
1457 * iplib.py (raw_input, interact): Return ValueError catching for
1453 raw_input. Fixes infinite loop for sys.stdin.close() or
1458 raw_input. Fixes infinite loop for sys.stdin.close() or
1454 sys.stdout.close().
1459 sys.stdout.close().
1455
1460
1456 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1461 2006-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1457
1462
1458 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1463 * IPython/irunner.py (InteractiveRunner.run_source): small fixes
1459 to help in handling doctests. irunner is now pretty useful for
1464 to help in handling doctests. irunner is now pretty useful for
1460 running standalone scripts and simulate a full interactive session
1465 running standalone scripts and simulate a full interactive session
1461 in a format that can be then pasted as a doctest.
1466 in a format that can be then pasted as a doctest.
1462
1467
1463 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1468 * IPython/iplib.py (InteractiveShell.__init__): Install exit/quit
1464 on top of the default (useless) ones. This also fixes the nasty
1469 on top of the default (useless) ones. This also fixes the nasty
1465 way in which 2.5's Quitter() exits (reverted [1785]).
1470 way in which 2.5's Quitter() exits (reverted [1785]).
1466
1471
1467 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1472 * IPython/Debugger.py (Pdb.__init__): Fix ipdb to work with python
1468 2.5.
1473 2.5.
1469
1474
1470 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1475 * IPython/ultraTB.py (TBTools.set_colors): Make sure that ipdb
1471 color scheme is updated as well when color scheme is changed
1476 color scheme is updated as well when color scheme is changed
1472 interactively.
1477 interactively.
1473
1478
1474 2006-09-27 Ville Vainio <vivainio@gmail.com>
1479 2006-09-27 Ville Vainio <vivainio@gmail.com>
1475
1480
1476 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1481 * iplib.py (raw_input): python 2.5 closes stdin on quit -> avoid
1477 infinite loop and just exit. It's a hack, but will do for a while.
1482 infinite loop and just exit. It's a hack, but will do for a while.
1478
1483
1479 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1484 2006-08-25 Walter Doerwald <walter@livinglogic.de>
1480
1485
1481 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1486 * IPython/Extensions/ipipe.py (ils): Add arguments dirs and files to
1482 the constructor, this makes it possible to get a list of only directories
1487 the constructor, this makes it possible to get a list of only directories
1483 or only files.
1488 or only files.
1484
1489
1485 2006-08-12 Ville Vainio <vivainio@gmail.com>
1490 2006-08-12 Ville Vainio <vivainio@gmail.com>
1486
1491
1487 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1492 * Fakemodule.py, OInspect.py: Reverted 2006-08-11 mods,
1488 they broke unittest
1493 they broke unittest
1489
1494
1490 2006-08-11 Ville Vainio <vivainio@gmail.com>
1495 2006-08-11 Ville Vainio <vivainio@gmail.com>
1491
1496
1492 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1497 * Fakemodule.py, OInspect.py: remove 2006-08-09 monkepatch
1493 by resolving issue properly, i.e. by inheriting FakeModule
1498 by resolving issue properly, i.e. by inheriting FakeModule
1494 from types.ModuleType. Pickling ipython interactive data
1499 from types.ModuleType. Pickling ipython interactive data
1495 should still work as usual (testing appreciated).
1500 should still work as usual (testing appreciated).
1496
1501
1497 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1502 2006-08-09 Fernando Perez <Fernando.Perez@colorado.edu>
1498
1503
1499 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1504 * IPython/OInspect.py: monkeypatch inspect from the stdlib if
1500 running under python 2.3 with code from 2.4 to fix a bug with
1505 running under python 2.3 with code from 2.4 to fix a bug with
1501 help(). Reported by the Debian maintainers, Norbert Tretkowski
1506 help(). Reported by the Debian maintainers, Norbert Tretkowski
1502 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1507 <norbert-AT-tretkowski.de> and Alexandre Fayolle
1503 <afayolle-AT-debian.org>.
1508 <afayolle-AT-debian.org>.
1504
1509
1505 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1510 2006-08-04 Walter Doerwald <walter@livinglogic.de>
1506
1511
1507 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1512 * IPython/Extensions/ibrowse.py: Fixed the help message in the footer
1508 (which was displaying "quit" twice).
1513 (which was displaying "quit" twice).
1509
1514
1510 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1515 2006-07-28 Walter Doerwald <walter@livinglogic.de>
1511
1516
1512 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1517 * IPython/Extensions/ipipe.py: Fix isort.__iter__() (was still using
1513 the mode argument).
1518 the mode argument).
1514
1519
1515 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1520 2006-07-27 Walter Doerwald <walter@livinglogic.de>
1516
1521
1517 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1522 * IPython/Extensions/ipipe.py: Fix getglobals() if we're
1518 not running under IPython.
1523 not running under IPython.
1519
1524
1520 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1525 * IPython/Extensions/ipipe.py: Rename XAttr to AttributeDetail
1521 and make it iterable (iterating over the attribute itself). Add two new
1526 and make it iterable (iterating over the attribute itself). Add two new
1522 magic strings for __xattrs__(): If the string starts with "-", the attribute
1527 magic strings for __xattrs__(): If the string starts with "-", the attribute
1523 will not be displayed in ibrowse's detail view (but it can still be
1528 will not be displayed in ibrowse's detail view (but it can still be
1524 iterated over). This makes it possible to add attributes that are large
1529 iterated over). This makes it possible to add attributes that are large
1525 lists or generator methods to the detail view. Replace magic attribute names
1530 lists or generator methods to the detail view. Replace magic attribute names
1526 and _attrname() and _getattr() with "descriptors": For each type of magic
1531 and _attrname() and _getattr() with "descriptors": For each type of magic
1527 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1532 attribute name there's a subclass of Descriptor: None -> SelfDescriptor();
1528 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1533 "foo" -> AttributeDescriptor("foo"); "foo()" -> MethodDescriptor("foo");
1529 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1534 "-foo" -> IterAttributeDescriptor("foo"); "-foo()" -> IterMethodDescriptor("foo");
1530 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1535 foo() -> FunctionDescriptor(foo). Magic strings returned from __xattrs__()
1531 are still supported.
1536 are still supported.
1532
1537
1533 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1538 * IPython/Extensions/ibrowse.py: If fetching the next row from the input
1534 fails in ibrowse.fetch(), the exception object is added as the last item
1539 fails in ibrowse.fetch(), the exception object is added as the last item
1535 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1540 and item fetching is canceled. This prevents ibrowse from aborting if e.g.
1536 a generator throws an exception midway through execution.
1541 a generator throws an exception midway through execution.
1537
1542
1538 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1543 * IPython/Extensions/ipipe.py: Turn ifile's properties mimetype and
1539 encoding into methods.
1544 encoding into methods.
1540
1545
1541 2006-07-26 Ville Vainio <vivainio@gmail.com>
1546 2006-07-26 Ville Vainio <vivainio@gmail.com>
1542
1547
1543 * iplib.py: history now stores multiline input as single
1548 * iplib.py: history now stores multiline input as single
1544 history entries. Patch by Jorgen Cederlof.
1549 history entries. Patch by Jorgen Cederlof.
1545
1550
1546 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1551 2006-07-18 Walter Doerwald <walter@livinglogic.de>
1547
1552
1548 * IPython/Extensions/ibrowse.py: Make cursor visible over
1553 * IPython/Extensions/ibrowse.py: Make cursor visible over
1549 non existing attributes.
1554 non existing attributes.
1550
1555
1551 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1556 2006-07-14 Walter Doerwald <walter@livinglogic.de>
1552
1557
1553 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1558 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
1554 error output of the running command doesn't mess up the screen.
1559 error output of the running command doesn't mess up the screen.
1555
1560
1556 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1561 2006-07-13 Walter Doerwald <walter@livinglogic.de>
1557
1562
1558 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1563 * IPython/Extensions/ipipe.py (isort): Make isort usable without
1559 argument. This sorts the items themselves.
1564 argument. This sorts the items themselves.
1560
1565
1561 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1566 2006-07-12 Walter Doerwald <walter@livinglogic.de>
1562
1567
1563 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1568 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
1564 Compile expression strings into code objects. This should speed
1569 Compile expression strings into code objects. This should speed
1565 up ifilter and friends somewhat.
1570 up ifilter and friends somewhat.
1566
1571
1567 2006-07-08 Ville Vainio <vivainio@gmail.com>
1572 2006-07-08 Ville Vainio <vivainio@gmail.com>
1568
1573
1569 * Magic.py: %cpaste now strips > from the beginning of lines
1574 * Magic.py: %cpaste now strips > from the beginning of lines
1570 to ease pasting quoted code from emails. Contributed by
1575 to ease pasting quoted code from emails. Contributed by
1571 Stefan van der Walt.
1576 Stefan van der Walt.
1572
1577
1573 2006-06-29 Ville Vainio <vivainio@gmail.com>
1578 2006-06-29 Ville Vainio <vivainio@gmail.com>
1574
1579
1575 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1580 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
1576 mode, patch contributed by Darren Dale. NEEDS TESTING!
1581 mode, patch contributed by Darren Dale. NEEDS TESTING!
1577
1582
1578 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1583 2006-06-28 Walter Doerwald <walter@livinglogic.de>
1579
1584
1580 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1585 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
1581 a blue background. Fix fetching new display rows when the browser
1586 a blue background. Fix fetching new display rows when the browser
1582 scrolls more than a screenful (e.g. by using the goto command).
1587 scrolls more than a screenful (e.g. by using the goto command).
1583
1588
1584 2006-06-27 Ville Vainio <vivainio@gmail.com>
1589 2006-06-27 Ville Vainio <vivainio@gmail.com>
1585
1590
1586 * Magic.py (_inspect, _ofind) Apply David Huard's
1591 * Magic.py (_inspect, _ofind) Apply David Huard's
1587 patch for displaying the correct docstring for 'property'
1592 patch for displaying the correct docstring for 'property'
1588 attributes.
1593 attributes.
1589
1594
1590 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1595 2006-06-23 Walter Doerwald <walter@livinglogic.de>
1591
1596
1592 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1597 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
1593 commands into the methods implementing them.
1598 commands into the methods implementing them.
1594
1599
1595 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1600 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
1596
1601
1597 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1602 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
1598 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1603 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
1599 autoindent support was authored by Jin Liu.
1604 autoindent support was authored by Jin Liu.
1600
1605
1601 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1606 2006-06-22 Walter Doerwald <walter@livinglogic.de>
1602
1607
1603 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1608 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
1604 for keymaps with a custom class that simplifies handling.
1609 for keymaps with a custom class that simplifies handling.
1605
1610
1606 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1611 2006-06-19 Walter Doerwald <walter@livinglogic.de>
1607
1612
1608 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1613 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
1609 resizing. This requires Python 2.5 to work.
1614 resizing. This requires Python 2.5 to work.
1610
1615
1611 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1616 2006-06-16 Walter Doerwald <walter@livinglogic.de>
1612
1617
1613 * IPython/Extensions/ibrowse.py: Add two new commands to
1618 * IPython/Extensions/ibrowse.py: Add two new commands to
1614 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1619 ibrowse: "hideattr" (mapped to "h") hides the attribute under
1615 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1620 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
1616 attributes again. Remapped the help command to "?". Display
1621 attributes again. Remapped the help command to "?". Display
1617 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1622 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
1618 as keys for the "home" and "end" commands. Add three new commands
1623 as keys for the "home" and "end" commands. Add three new commands
1619 to the input mode for "find" and friends: "delend" (CTRL-K)
1624 to the input mode for "find" and friends: "delend" (CTRL-K)
1620 deletes to the end of line. "incsearchup" searches upwards in the
1625 deletes to the end of line. "incsearchup" searches upwards in the
1621 command history for an input that starts with the text before the cursor.
1626 command history for an input that starts with the text before the cursor.
1622 "incsearchdown" does the same downwards. Removed a bogus mapping of
1627 "incsearchdown" does the same downwards. Removed a bogus mapping of
1623 the x key to "delete".
1628 the x key to "delete".
1624
1629
1625 2006-06-15 Ville Vainio <vivainio@gmail.com>
1630 2006-06-15 Ville Vainio <vivainio@gmail.com>
1626
1631
1627 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1632 * iplib.py, hooks.py: Added new generate_prompt hook that can be
1628 used to create prompts dynamically, instead of the "old" way of
1633 used to create prompts dynamically, instead of the "old" way of
1629 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1634 assigning "magic" strings to prompt_in1 and prompt_in2. The old
1630 way still works (it's invoked by the default hook), of course.
1635 way still works (it's invoked by the default hook), of course.
1631
1636
1632 * Prompts.py: added generate_output_prompt hook for altering output
1637 * Prompts.py: added generate_output_prompt hook for altering output
1633 prompt
1638 prompt
1634
1639
1635 * Release.py: Changed version string to 0.7.3.svn.
1640 * Release.py: Changed version string to 0.7.3.svn.
1636
1641
1637 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1642 2006-06-15 Walter Doerwald <walter@livinglogic.de>
1638
1643
1639 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1644 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
1640 the call to fetch() always tries to fetch enough data for at least one
1645 the call to fetch() always tries to fetch enough data for at least one
1641 full screen. This makes it possible to simply call moveto(0,0,True) in
1646 full screen. This makes it possible to simply call moveto(0,0,True) in
1642 the constructor. Fix typos and removed the obsolete goto attribute.
1647 the constructor. Fix typos and removed the obsolete goto attribute.
1643
1648
1644 2006-06-12 Ville Vainio <vivainio@gmail.com>
1649 2006-06-12 Ville Vainio <vivainio@gmail.com>
1645
1650
1646 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1651 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
1647 allowing $variable interpolation within multiline statements,
1652 allowing $variable interpolation within multiline statements,
1648 though so far only with "sh" profile for a testing period.
1653 though so far only with "sh" profile for a testing period.
1649 The patch also enables splitting long commands with \ but it
1654 The patch also enables splitting long commands with \ but it
1650 doesn't work properly yet.
1655 doesn't work properly yet.
1651
1656
1652 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1657 2006-06-12 Walter Doerwald <walter@livinglogic.de>
1653
1658
1654 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1659 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
1655 input history and the position of the cursor in the input history for
1660 input history and the position of the cursor in the input history for
1656 the find, findbackwards and goto command.
1661 the find, findbackwards and goto command.
1657
1662
1658 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1663 2006-06-10 Walter Doerwald <walter@livinglogic.de>
1659
1664
1660 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1665 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
1661 implements the basic functionality of browser commands that require
1666 implements the basic functionality of browser commands that require
1662 input. Reimplement the goto, find and findbackwards commands as
1667 input. Reimplement the goto, find and findbackwards commands as
1663 subclasses of _CommandInput. Add an input history and keymaps to those
1668 subclasses of _CommandInput. Add an input history and keymaps to those
1664 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1669 commands. Add "\r" as a keyboard shortcut for the enterdefault and
1665 execute commands.
1670 execute commands.
1666
1671
1667 2006-06-07 Ville Vainio <vivainio@gmail.com>
1672 2006-06-07 Ville Vainio <vivainio@gmail.com>
1668
1673
1669 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1674 * iplib.py: ipython mybatch.ipy exits ipython immediately after
1670 running the batch files instead of leaving the session open.
1675 running the batch files instead of leaving the session open.
1671
1676
1672 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1677 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
1673
1678
1674 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1679 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
1675 the original fix was incomplete. Patch submitted by W. Maier.
1680 the original fix was incomplete. Patch submitted by W. Maier.
1676
1681
1677 2006-06-07 Ville Vainio <vivainio@gmail.com>
1682 2006-06-07 Ville Vainio <vivainio@gmail.com>
1678
1683
1679 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1684 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
1680 Confirmation prompts can be supressed by 'quiet' option.
1685 Confirmation prompts can be supressed by 'quiet' option.
1681 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1686 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
1682
1687
1683 2006-06-06 *** Released version 0.7.2
1688 2006-06-06 *** Released version 0.7.2
1684
1689
1685 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1690 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
1686
1691
1687 * IPython/Release.py (version): Made 0.7.2 final for release.
1692 * IPython/Release.py (version): Made 0.7.2 final for release.
1688 Repo tagged and release cut.
1693 Repo tagged and release cut.
1689
1694
1690 2006-06-05 Ville Vainio <vivainio@gmail.com>
1695 2006-06-05 Ville Vainio <vivainio@gmail.com>
1691
1696
1692 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1697 * Magic.py (magic_rehashx): Honor no_alias list earlier in
1693 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1698 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
1694
1699
1695 * upgrade_dir.py: try import 'path' module a bit harder
1700 * upgrade_dir.py: try import 'path' module a bit harder
1696 (for %upgrade)
1701 (for %upgrade)
1697
1702
1698 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1703 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
1699
1704
1700 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1705 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
1701 instead of looping 20 times.
1706 instead of looping 20 times.
1702
1707
1703 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1708 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
1704 correctly at initialization time. Bug reported by Krishna Mohan
1709 correctly at initialization time. Bug reported by Krishna Mohan
1705 Gundu <gkmohan-AT-gmail.com> on the user list.
1710 Gundu <gkmohan-AT-gmail.com> on the user list.
1706
1711
1707 * IPython/Release.py (version): Mark 0.7.2 version to start
1712 * IPython/Release.py (version): Mark 0.7.2 version to start
1708 testing for release on 06/06.
1713 testing for release on 06/06.
1709
1714
1710 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1715 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
1711
1716
1712 * scripts/irunner: thin script interface so users don't have to
1717 * scripts/irunner: thin script interface so users don't have to
1713 find the module and call it as an executable, since modules rarely
1718 find the module and call it as an executable, since modules rarely
1714 live in people's PATH.
1719 live in people's PATH.
1715
1720
1716 * IPython/irunner.py (InteractiveRunner.__init__): added
1721 * IPython/irunner.py (InteractiveRunner.__init__): added
1717 delaybeforesend attribute to control delays with newer versions of
1722 delaybeforesend attribute to control delays with newer versions of
1718 pexpect. Thanks to detailed help from pexpect's author, Noah
1723 pexpect. Thanks to detailed help from pexpect's author, Noah
1719 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1724 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
1720 correctly (it works in NoColor mode).
1725 correctly (it works in NoColor mode).
1721
1726
1722 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1727 * IPython/iplib.py (handle_normal): fix nasty crash reported on
1723 SAGE list, from improper log() calls.
1728 SAGE list, from improper log() calls.
1724
1729
1725 2006-05-31 Ville Vainio <vivainio@gmail.com>
1730 2006-05-31 Ville Vainio <vivainio@gmail.com>
1726
1731
1727 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1732 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
1728 with args in parens to work correctly with dirs that have spaces.
1733 with args in parens to work correctly with dirs that have spaces.
1729
1734
1730 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1735 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
1731
1736
1732 * IPython/Logger.py (Logger.logstart): add option to log raw input
1737 * IPython/Logger.py (Logger.logstart): add option to log raw input
1733 instead of the processed one. A -r flag was added to the
1738 instead of the processed one. A -r flag was added to the
1734 %logstart magic used for controlling logging.
1739 %logstart magic used for controlling logging.
1735
1740
1736 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1741 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1737
1742
1738 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1743 * IPython/iplib.py (InteractiveShell.__init__): add check for the
1739 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1744 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
1740 recognize the option. After a bug report by Will Maier. This
1745 recognize the option. After a bug report by Will Maier. This
1741 closes #64 (will do it after confirmation from W. Maier).
1746 closes #64 (will do it after confirmation from W. Maier).
1742
1747
1743 * IPython/irunner.py: New module to run scripts as if manually
1748 * IPython/irunner.py: New module to run scripts as if manually
1744 typed into an interactive environment, based on pexpect. After a
1749 typed into an interactive environment, based on pexpect. After a
1745 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1750 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
1746 ipython-user list. Simple unittests in the tests/ directory.
1751 ipython-user list. Simple unittests in the tests/ directory.
1747
1752
1748 * tools/release: add Will Maier, OpenBSD port maintainer, to
1753 * tools/release: add Will Maier, OpenBSD port maintainer, to
1749 recepients list. We are now officially part of the OpenBSD ports:
1754 recepients list. We are now officially part of the OpenBSD ports:
1750 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1755 http://www.openbsd.org/ports.html ! Many thanks to Will for the
1751 work.
1756 work.
1752
1757
1753 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1758 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
1754
1759
1755 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1760 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
1756 so that it doesn't break tkinter apps.
1761 so that it doesn't break tkinter apps.
1757
1762
1758 * IPython/iplib.py (_prefilter): fix bug where aliases would
1763 * IPython/iplib.py (_prefilter): fix bug where aliases would
1759 shadow variables when autocall was fully off. Reported by SAGE
1764 shadow variables when autocall was fully off. Reported by SAGE
1760 author William Stein.
1765 author William Stein.
1761
1766
1762 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1767 * IPython/OInspect.py (Inspector.__init__): add a flag to control
1763 at what detail level strings are computed when foo? is requested.
1768 at what detail level strings are computed when foo? is requested.
1764 This allows users to ask for example that the string form of an
1769 This allows users to ask for example that the string form of an
1765 object is only computed when foo?? is called, or even never, by
1770 object is only computed when foo?? is called, or even never, by
1766 setting the object_info_string_level >= 2 in the configuration
1771 setting the object_info_string_level >= 2 in the configuration
1767 file. This new option has been added and documented. After a
1772 file. This new option has been added and documented. After a
1768 request by SAGE to be able to control the printing of very large
1773 request by SAGE to be able to control the printing of very large
1769 objects more easily.
1774 objects more easily.
1770
1775
1771 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1776 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
1772
1777
1773 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1778 * IPython/ipmaker.py (make_IPython): remove the ipython call path
1774 from sys.argv, to be 100% consistent with how Python itself works
1779 from sys.argv, to be 100% consistent with how Python itself works
1775 (as seen for example with python -i file.py). After a bug report
1780 (as seen for example with python -i file.py). After a bug report
1776 by Jeffrey Collins.
1781 by Jeffrey Collins.
1777
1782
1778 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1783 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
1779 nasty bug which was preventing custom namespaces with -pylab,
1784 nasty bug which was preventing custom namespaces with -pylab,
1780 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1785 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
1781 compatibility (long gone from mpl).
1786 compatibility (long gone from mpl).
1782
1787
1783 * IPython/ipapi.py (make_session): name change: create->make. We
1788 * IPython/ipapi.py (make_session): name change: create->make. We
1784 use make in other places (ipmaker,...), it's shorter and easier to
1789 use make in other places (ipmaker,...), it's shorter and easier to
1785 type and say, etc. I'm trying to clean things before 0.7.2 so
1790 type and say, etc. I'm trying to clean things before 0.7.2 so
1786 that I can keep things stable wrt to ipapi in the chainsaw branch.
1791 that I can keep things stable wrt to ipapi in the chainsaw branch.
1787
1792
1788 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1793 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
1789 python-mode recognizes our debugger mode. Add support for
1794 python-mode recognizes our debugger mode. Add support for
1790 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1795 autoindent inside (X)emacs. After a patch sent in by Jin Liu
1791 <m.liu.jin-AT-gmail.com> originally written by
1796 <m.liu.jin-AT-gmail.com> originally written by
1792 doxgen-AT-newsmth.net (with minor modifications for xemacs
1797 doxgen-AT-newsmth.net (with minor modifications for xemacs
1793 compatibility)
1798 compatibility)
1794
1799
1795 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1800 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
1796 tracebacks when walking the stack so that the stack tracking system
1801 tracebacks when walking the stack so that the stack tracking system
1797 in emacs' python-mode can identify the frames correctly.
1802 in emacs' python-mode can identify the frames correctly.
1798
1803
1799 * IPython/ipmaker.py (make_IPython): make the internal (and
1804 * IPython/ipmaker.py (make_IPython): make the internal (and
1800 default config) autoedit_syntax value false by default. Too many
1805 default config) autoedit_syntax value false by default. Too many
1801 users have complained to me (both on and off-list) about problems
1806 users have complained to me (both on and off-list) about problems
1802 with this option being on by default, so I'm making it default to
1807 with this option being on by default, so I'm making it default to
1803 off. It can still be enabled by anyone via the usual mechanisms.
1808 off. It can still be enabled by anyone via the usual mechanisms.
1804
1809
1805 * IPython/completer.py (Completer.attr_matches): add support for
1810 * IPython/completer.py (Completer.attr_matches): add support for
1806 PyCrust-style _getAttributeNames magic method. Patch contributed
1811 PyCrust-style _getAttributeNames magic method. Patch contributed
1807 by <mscott-AT-goldenspud.com>. Closes #50.
1812 by <mscott-AT-goldenspud.com>. Closes #50.
1808
1813
1809 * IPython/iplib.py (InteractiveShell.__init__): remove the
1814 * IPython/iplib.py (InteractiveShell.__init__): remove the
1810 deletion of exit/quit from __builtin__, which can break
1815 deletion of exit/quit from __builtin__, which can break
1811 third-party tools like the Zope debugging console. The
1816 third-party tools like the Zope debugging console. The
1812 %exit/%quit magics remain. In general, it's probably a good idea
1817 %exit/%quit magics remain. In general, it's probably a good idea
1813 not to delete anything from __builtin__, since we never know what
1818 not to delete anything from __builtin__, since we never know what
1814 that will break. In any case, python now (for 2.5) will support
1819 that will break. In any case, python now (for 2.5) will support
1815 'real' exit/quit, so this issue is moot. Closes #55.
1820 'real' exit/quit, so this issue is moot. Closes #55.
1816
1821
1817 * IPython/genutils.py (with_obj): rename the 'with' function to
1822 * IPython/genutils.py (with_obj): rename the 'with' function to
1818 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1823 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
1819 becomes a language keyword. Closes #53.
1824 becomes a language keyword. Closes #53.
1820
1825
1821 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1826 * IPython/FakeModule.py (FakeModule.__init__): add a proper
1822 __file__ attribute to this so it fools more things into thinking
1827 __file__ attribute to this so it fools more things into thinking
1823 it is a real module. Closes #59.
1828 it is a real module. Closes #59.
1824
1829
1825 * IPython/Magic.py (magic_edit): add -n option to open the editor
1830 * IPython/Magic.py (magic_edit): add -n option to open the editor
1826 at a specific line number. After a patch by Stefan van der Walt.
1831 at a specific line number. After a patch by Stefan van der Walt.
1827
1832
1828 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1833 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
1829
1834
1830 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1835 * IPython/iplib.py (edit_syntax_error): fix crash when for some
1831 reason the file could not be opened. After automatic crash
1836 reason the file could not be opened. After automatic crash
1832 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1837 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
1833 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1838 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
1834 (_should_recompile): Don't fire editor if using %bg, since there
1839 (_should_recompile): Don't fire editor if using %bg, since there
1835 is no file in the first place. From the same report as above.
1840 is no file in the first place. From the same report as above.
1836 (raw_input): protect against faulty third-party prefilters. After
1841 (raw_input): protect against faulty third-party prefilters. After
1837 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1842 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
1838 while running under SAGE.
1843 while running under SAGE.
1839
1844
1840 2006-05-23 Ville Vainio <vivainio@gmail.com>
1845 2006-05-23 Ville Vainio <vivainio@gmail.com>
1841
1846
1842 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1847 * ipapi.py: Stripped down ip.to_user_ns() to work only as
1843 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1848 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
1844 now returns None (again), unless dummy is specifically allowed by
1849 now returns None (again), unless dummy is specifically allowed by
1845 ipapi.get(allow_dummy=True).
1850 ipapi.get(allow_dummy=True).
1846
1851
1847 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1852 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
1848
1853
1849 * IPython: remove all 2.2-compatibility objects and hacks from
1854 * IPython: remove all 2.2-compatibility objects and hacks from
1850 everywhere, since we only support 2.3 at this point. Docs
1855 everywhere, since we only support 2.3 at this point. Docs
1851 updated.
1856 updated.
1852
1857
1853 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1858 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
1854 Anything requiring extra validation can be turned into a Python
1859 Anything requiring extra validation can be turned into a Python
1855 property in the future. I used a property for the db one b/c
1860 property in the future. I used a property for the db one b/c
1856 there was a nasty circularity problem with the initialization
1861 there was a nasty circularity problem with the initialization
1857 order, which right now I don't have time to clean up.
1862 order, which right now I don't have time to clean up.
1858
1863
1859 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1864 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
1860 another locking bug reported by Jorgen. I'm not 100% sure though,
1865 another locking bug reported by Jorgen. I'm not 100% sure though,
1861 so more testing is needed...
1866 so more testing is needed...
1862
1867
1863 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1868 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
1864
1869
1865 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1870 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
1866 local variables from any routine in user code (typically executed
1871 local variables from any routine in user code (typically executed
1867 with %run) directly into the interactive namespace. Very useful
1872 with %run) directly into the interactive namespace. Very useful
1868 when doing complex debugging.
1873 when doing complex debugging.
1869 (IPythonNotRunning): Changed the default None object to a dummy
1874 (IPythonNotRunning): Changed the default None object to a dummy
1870 whose attributes can be queried as well as called without
1875 whose attributes can be queried as well as called without
1871 exploding, to ease writing code which works transparently both in
1876 exploding, to ease writing code which works transparently both in
1872 and out of ipython and uses some of this API.
1877 and out of ipython and uses some of this API.
1873
1878
1874 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1879 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
1875
1880
1876 * IPython/hooks.py (result_display): Fix the fact that our display
1881 * IPython/hooks.py (result_display): Fix the fact that our display
1877 hook was using str() instead of repr(), as the default python
1882 hook was using str() instead of repr(), as the default python
1878 console does. This had gone unnoticed b/c it only happened if
1883 console does. This had gone unnoticed b/c it only happened if
1879 %Pprint was off, but the inconsistency was there.
1884 %Pprint was off, but the inconsistency was there.
1880
1885
1881 2006-05-15 Ville Vainio <vivainio@gmail.com>
1886 2006-05-15 Ville Vainio <vivainio@gmail.com>
1882
1887
1883 * Oinspect.py: Only show docstring for nonexisting/binary files
1888 * Oinspect.py: Only show docstring for nonexisting/binary files
1884 when doing object??, closing ticket #62
1889 when doing object??, closing ticket #62
1885
1890
1886 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1891 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
1887
1892
1888 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1893 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
1889 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1894 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
1890 was being released in a routine which hadn't checked if it had
1895 was being released in a routine which hadn't checked if it had
1891 been the one to acquire it.
1896 been the one to acquire it.
1892
1897
1893 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1898 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
1894
1899
1895 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1900 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
1896
1901
1897 2006-04-11 Ville Vainio <vivainio@gmail.com>
1902 2006-04-11 Ville Vainio <vivainio@gmail.com>
1898
1903
1899 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1904 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
1900 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1905 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
1901 prefilters, allowing stuff like magics and aliases in the file.
1906 prefilters, allowing stuff like magics and aliases in the file.
1902
1907
1903 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1908 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
1904 added. Supported now are "%clear in" and "%clear out" (clear input and
1909 added. Supported now are "%clear in" and "%clear out" (clear input and
1905 output history, respectively). Also fixed CachedOutput.flush to
1910 output history, respectively). Also fixed CachedOutput.flush to
1906 properly flush the output cache.
1911 properly flush the output cache.
1907
1912
1908 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1913 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
1909 half-success (and fail explicitly).
1914 half-success (and fail explicitly).
1910
1915
1911 2006-03-28 Ville Vainio <vivainio@gmail.com>
1916 2006-03-28 Ville Vainio <vivainio@gmail.com>
1912
1917
1913 * iplib.py: Fix quoting of aliases so that only argless ones
1918 * iplib.py: Fix quoting of aliases so that only argless ones
1914 are quoted
1919 are quoted
1915
1920
1916 2006-03-28 Ville Vainio <vivainio@gmail.com>
1921 2006-03-28 Ville Vainio <vivainio@gmail.com>
1917
1922
1918 * iplib.py: Quote aliases with spaces in the name.
1923 * iplib.py: Quote aliases with spaces in the name.
1919 "c:\program files\blah\bin" is now legal alias target.
1924 "c:\program files\blah\bin" is now legal alias target.
1920
1925
1921 * ext_rehashdir.py: Space no longer allowed as arg
1926 * ext_rehashdir.py: Space no longer allowed as arg
1922 separator, since space is legal in path names.
1927 separator, since space is legal in path names.
1923
1928
1924 2006-03-16 Ville Vainio <vivainio@gmail.com>
1929 2006-03-16 Ville Vainio <vivainio@gmail.com>
1925
1930
1926 * upgrade_dir.py: Take path.py from Extensions, correcting
1931 * upgrade_dir.py: Take path.py from Extensions, correcting
1927 %upgrade magic
1932 %upgrade magic
1928
1933
1929 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1934 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
1930
1935
1931 * hooks.py: Only enclose editor binary in quotes if legal and
1936 * hooks.py: Only enclose editor binary in quotes if legal and
1932 necessary (space in the name, and is an existing file). Fixes a bug
1937 necessary (space in the name, and is an existing file). Fixes a bug
1933 reported by Zachary Pincus.
1938 reported by Zachary Pincus.
1934
1939
1935 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1940 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
1936
1941
1937 * Manual: thanks to a tip on proper color handling for Emacs, by
1942 * Manual: thanks to a tip on proper color handling for Emacs, by
1938 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1943 Eric J Haywiser <ejh1-AT-MIT.EDU>.
1939
1944
1940 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1945 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
1941 by applying the provided patch. Thanks to Liu Jin
1946 by applying the provided patch. Thanks to Liu Jin
1942 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1947 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
1943 XEmacs/Linux, I'm trusting the submitter that it actually helps
1948 XEmacs/Linux, I'm trusting the submitter that it actually helps
1944 under win32/GNU Emacs. Will revisit if any problems are reported.
1949 under win32/GNU Emacs. Will revisit if any problems are reported.
1945
1950
1946 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1951 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1947
1952
1948 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1953 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
1949 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1954 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
1950
1955
1951 2006-03-12 Ville Vainio <vivainio@gmail.com>
1956 2006-03-12 Ville Vainio <vivainio@gmail.com>
1952
1957
1953 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1958 * Magic.py (magic_timeit): Added %timeit magic, contributed by
1954 Torsten Marek.
1959 Torsten Marek.
1955
1960
1956 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1961 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
1957
1962
1958 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1963 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
1959 line ranges works again.
1964 line ranges works again.
1960
1965
1961 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1966 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
1962
1967
1963 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1968 * IPython/iplib.py (showtraceback): add back sys.last_traceback
1964 and friends, after a discussion with Zach Pincus on ipython-user.
1969 and friends, after a discussion with Zach Pincus on ipython-user.
1965 I'm not 100% sure, but after thinking about it quite a bit, it may
1970 I'm not 100% sure, but after thinking about it quite a bit, it may
1966 be OK. Testing with the multithreaded shells didn't reveal any
1971 be OK. Testing with the multithreaded shells didn't reveal any
1967 problems, but let's keep an eye out.
1972 problems, but let's keep an eye out.
1968
1973
1969 In the process, I fixed a few things which were calling
1974 In the process, I fixed a few things which were calling
1970 self.InteractiveTB() directly (like safe_execfile), which is a
1975 self.InteractiveTB() directly (like safe_execfile), which is a
1971 mistake: ALL exception reporting should be done by calling
1976 mistake: ALL exception reporting should be done by calling
1972 self.showtraceback(), which handles state and tab-completion and
1977 self.showtraceback(), which handles state and tab-completion and
1973 more.
1978 more.
1974
1979
1975 2006-03-01 Ville Vainio <vivainio@gmail.com>
1980 2006-03-01 Ville Vainio <vivainio@gmail.com>
1976
1981
1977 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1982 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
1978 To use, do "from ipipe import *".
1983 To use, do "from ipipe import *".
1979
1984
1980 2006-02-24 Ville Vainio <vivainio@gmail.com>
1985 2006-02-24 Ville Vainio <vivainio@gmail.com>
1981
1986
1982 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1987 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
1983 "cleanly" and safely than the older upgrade mechanism.
1988 "cleanly" and safely than the older upgrade mechanism.
1984
1989
1985 2006-02-21 Ville Vainio <vivainio@gmail.com>
1990 2006-02-21 Ville Vainio <vivainio@gmail.com>
1986
1991
1987 * Magic.py: %save works again.
1992 * Magic.py: %save works again.
1988
1993
1989 2006-02-15 Ville Vainio <vivainio@gmail.com>
1994 2006-02-15 Ville Vainio <vivainio@gmail.com>
1990
1995
1991 * Magic.py: %Pprint works again
1996 * Magic.py: %Pprint works again
1992
1997
1993 * Extensions/ipy_sane_defaults.py: Provide everything provided
1998 * Extensions/ipy_sane_defaults.py: Provide everything provided
1994 in default ipythonrc, to make it possible to have a completely empty
1999 in default ipythonrc, to make it possible to have a completely empty
1995 ipythonrc (and thus completely rc-file free configuration)
2000 ipythonrc (and thus completely rc-file free configuration)
1996
2001
1997 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
2002 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
1998
2003
1999 * IPython/hooks.py (editor): quote the call to the editor command,
2004 * IPython/hooks.py (editor): quote the call to the editor command,
2000 to allow commands with spaces in them. Problem noted by watching
2005 to allow commands with spaces in them. Problem noted by watching
2001 Ian Oswald's video about textpad under win32 at
2006 Ian Oswald's video about textpad under win32 at
2002 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2007 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
2003
2008
2004 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2009 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
2005 describing magics (we haven't used @ for a loong time).
2010 describing magics (we haven't used @ for a loong time).
2006
2011
2007 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2012 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
2008 contributed by marienz to close
2013 contributed by marienz to close
2009 http://www.scipy.net/roundup/ipython/issue53.
2014 http://www.scipy.net/roundup/ipython/issue53.
2010
2015
2011 2006-02-10 Ville Vainio <vivainio@gmail.com>
2016 2006-02-10 Ville Vainio <vivainio@gmail.com>
2012
2017
2013 * genutils.py: getoutput now works in win32 too
2018 * genutils.py: getoutput now works in win32 too
2014
2019
2015 * completer.py: alias and magic completion only invoked
2020 * completer.py: alias and magic completion only invoked
2016 at the first "item" in the line, to avoid "cd %store"
2021 at the first "item" in the line, to avoid "cd %store"
2017 nonsense.
2022 nonsense.
2018
2023
2019 2006-02-09 Ville Vainio <vivainio@gmail.com>
2024 2006-02-09 Ville Vainio <vivainio@gmail.com>
2020
2025
2021 * test/*: Added a unit testing framework (finally).
2026 * test/*: Added a unit testing framework (finally).
2022 '%run runtests.py' to run test_*.
2027 '%run runtests.py' to run test_*.
2023
2028
2024 * ipapi.py: Exposed runlines and set_custom_exc
2029 * ipapi.py: Exposed runlines and set_custom_exc
2025
2030
2026 2006-02-07 Ville Vainio <vivainio@gmail.com>
2031 2006-02-07 Ville Vainio <vivainio@gmail.com>
2027
2032
2028 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2033 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
2029 instead use "f(1 2)" as before.
2034 instead use "f(1 2)" as before.
2030
2035
2031 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2036 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
2032
2037
2033 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2038 * IPython/demo.py (IPythonDemo): Add new classes to the demo
2034 facilities, for demos processed by the IPython input filter
2039 facilities, for demos processed by the IPython input filter
2035 (IPythonDemo), and for running a script one-line-at-a-time as a
2040 (IPythonDemo), and for running a script one-line-at-a-time as a
2036 demo, both for pure Python (LineDemo) and for IPython-processed
2041 demo, both for pure Python (LineDemo) and for IPython-processed
2037 input (IPythonLineDemo). After a request by Dave Kohel, from the
2042 input (IPythonLineDemo). After a request by Dave Kohel, from the
2038 SAGE team.
2043 SAGE team.
2039 (Demo.edit): added an edit() method to the demo objects, to edit
2044 (Demo.edit): added an edit() method to the demo objects, to edit
2040 the in-memory copy of the last executed block.
2045 the in-memory copy of the last executed block.
2041
2046
2042 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2047 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
2043 processing to %edit, %macro and %save. These commands can now be
2048 processing to %edit, %macro and %save. These commands can now be
2044 invoked on the unprocessed input as it was typed by the user
2049 invoked on the unprocessed input as it was typed by the user
2045 (without any prefilters applied). After requests by the SAGE team
2050 (without any prefilters applied). After requests by the SAGE team
2046 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2051 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
2047
2052
2048 2006-02-01 Ville Vainio <vivainio@gmail.com>
2053 2006-02-01 Ville Vainio <vivainio@gmail.com>
2049
2054
2050 * setup.py, eggsetup.py: easy_install ipython==dev works
2055 * setup.py, eggsetup.py: easy_install ipython==dev works
2051 correctly now (on Linux)
2056 correctly now (on Linux)
2052
2057
2053 * ipy_user_conf,ipmaker: user config changes, removed spurious
2058 * ipy_user_conf,ipmaker: user config changes, removed spurious
2054 warnings
2059 warnings
2055
2060
2056 * iplib: if rc.banner is string, use it as is.
2061 * iplib: if rc.banner is string, use it as is.
2057
2062
2058 * Magic: %pycat accepts a string argument and pages it's contents.
2063 * Magic: %pycat accepts a string argument and pages it's contents.
2059
2064
2060
2065
2061 2006-01-30 Ville Vainio <vivainio@gmail.com>
2066 2006-01-30 Ville Vainio <vivainio@gmail.com>
2062
2067
2063 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2068 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
2064 Now %store and bookmarks work through PickleShare, meaning that
2069 Now %store and bookmarks work through PickleShare, meaning that
2065 concurrent access is possible and all ipython sessions see the
2070 concurrent access is possible and all ipython sessions see the
2066 same database situation all the time, instead of snapshot of
2071 same database situation all the time, instead of snapshot of
2067 the situation when the session was started. Hence, %bookmark
2072 the situation when the session was started. Hence, %bookmark
2068 results are immediately accessible from othes sessions. The database
2073 results are immediately accessible from othes sessions. The database
2069 is also available for use by user extensions. See:
2074 is also available for use by user extensions. See:
2070 http://www.python.org/pypi/pickleshare
2075 http://www.python.org/pypi/pickleshare
2071
2076
2072 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2077 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
2073
2078
2074 * aliases can now be %store'd
2079 * aliases can now be %store'd
2075
2080
2076 * path.py moved to Extensions so that pickleshare does not need
2081 * path.py moved to Extensions so that pickleshare does not need
2077 IPython-specific import. Extensions added to pythonpath right
2082 IPython-specific import. Extensions added to pythonpath right
2078 at __init__.
2083 at __init__.
2079
2084
2080 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2085 * iplib.py: ipalias deprecated/redundant; aliases are converted and
2081 called with _ip.system and the pre-transformed command string.
2086 called with _ip.system and the pre-transformed command string.
2082
2087
2083 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2088 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
2084
2089
2085 * IPython/iplib.py (interact): Fix that we were not catching
2090 * IPython/iplib.py (interact): Fix that we were not catching
2086 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2091 KeyboardInterrupt exceptions properly. I'm not quite sure why the
2087 logic here had to change, but it's fixed now.
2092 logic here had to change, but it's fixed now.
2088
2093
2089 2006-01-29 Ville Vainio <vivainio@gmail.com>
2094 2006-01-29 Ville Vainio <vivainio@gmail.com>
2090
2095
2091 * iplib.py: Try to import pyreadline on Windows.
2096 * iplib.py: Try to import pyreadline on Windows.
2092
2097
2093 2006-01-27 Ville Vainio <vivainio@gmail.com>
2098 2006-01-27 Ville Vainio <vivainio@gmail.com>
2094
2099
2095 * iplib.py: Expose ipapi as _ip in builtin namespace.
2100 * iplib.py: Expose ipapi as _ip in builtin namespace.
2096 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2101 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
2097 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2102 and ip_set_hook (-> _ip.set_hook) redundant. % and !
2098 syntax now produce _ip.* variant of the commands.
2103 syntax now produce _ip.* variant of the commands.
2099
2104
2100 * "_ip.options().autoedit_syntax = 2" automatically throws
2105 * "_ip.options().autoedit_syntax = 2" automatically throws
2101 user to editor for syntax error correction without prompting.
2106 user to editor for syntax error correction without prompting.
2102
2107
2103 2006-01-27 Ville Vainio <vivainio@gmail.com>
2108 2006-01-27 Ville Vainio <vivainio@gmail.com>
2104
2109
2105 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2110 * ipmaker.py: Give "realistic" sys.argv for scripts (without
2106 'ipython' at argv[0]) executed through command line.
2111 'ipython' at argv[0]) executed through command line.
2107 NOTE: this DEPRECATES calling ipython with multiple scripts
2112 NOTE: this DEPRECATES calling ipython with multiple scripts
2108 ("ipython a.py b.py c.py")
2113 ("ipython a.py b.py c.py")
2109
2114
2110 * iplib.py, hooks.py: Added configurable input prefilter,
2115 * iplib.py, hooks.py: Added configurable input prefilter,
2111 named 'input_prefilter'. See ext_rescapture.py for example
2116 named 'input_prefilter'. See ext_rescapture.py for example
2112 usage.
2117 usage.
2113
2118
2114 * ext_rescapture.py, Magic.py: Better system command output capture
2119 * ext_rescapture.py, Magic.py: Better system command output capture
2115 through 'var = !ls' (deprecates user-visible %sc). Same notation
2120 through 'var = !ls' (deprecates user-visible %sc). Same notation
2116 applies for magics, 'var = %alias' assigns alias list to var.
2121 applies for magics, 'var = %alias' assigns alias list to var.
2117
2122
2118 * ipapi.py: added meta() for accessing extension-usable data store.
2123 * ipapi.py: added meta() for accessing extension-usable data store.
2119
2124
2120 * iplib.py: added InteractiveShell.getapi(). New magics should be
2125 * iplib.py: added InteractiveShell.getapi(). New magics should be
2121 written doing self.getapi() instead of using the shell directly.
2126 written doing self.getapi() instead of using the shell directly.
2122
2127
2123 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2128 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
2124 %store foo >> ~/myfoo.txt to store variables to files (in clean
2129 %store foo >> ~/myfoo.txt to store variables to files (in clean
2125 textual form, not a restorable pickle).
2130 textual form, not a restorable pickle).
2126
2131
2127 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2132 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
2128
2133
2129 * usage.py, Magic.py: added %quickref
2134 * usage.py, Magic.py: added %quickref
2130
2135
2131 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2136 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
2132
2137
2133 * GetoptErrors when invoking magics etc. with wrong args
2138 * GetoptErrors when invoking magics etc. with wrong args
2134 are now more helpful:
2139 are now more helpful:
2135 GetoptError: option -l not recognized (allowed: "qb" )
2140 GetoptError: option -l not recognized (allowed: "qb" )
2136
2141
2137 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2142 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
2138
2143
2139 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2144 * IPython/demo.py (Demo.show): Flush stdout after each block, so
2140 computationally intensive blocks don't appear to stall the demo.
2145 computationally intensive blocks don't appear to stall the demo.
2141
2146
2142 2006-01-24 Ville Vainio <vivainio@gmail.com>
2147 2006-01-24 Ville Vainio <vivainio@gmail.com>
2143
2148
2144 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2149 * iplib.py, hooks.py: 'result_display' hook can return a non-None
2145 value to manipulate resulting history entry.
2150 value to manipulate resulting history entry.
2146
2151
2147 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2152 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
2148 to instance methods of IPApi class, to make extending an embedded
2153 to instance methods of IPApi class, to make extending an embedded
2149 IPython feasible. See ext_rehashdir.py for example usage.
2154 IPython feasible. See ext_rehashdir.py for example usage.
2150
2155
2151 * Merged 1071-1076 from branches/0.7.1
2156 * Merged 1071-1076 from branches/0.7.1
2152
2157
2153
2158
2154 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2159 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
2155
2160
2156 * tools/release (daystamp): Fix build tools to use the new
2161 * tools/release (daystamp): Fix build tools to use the new
2157 eggsetup.py script to build lightweight eggs.
2162 eggsetup.py script to build lightweight eggs.
2158
2163
2159 * Applied changesets 1062 and 1064 before 0.7.1 release.
2164 * Applied changesets 1062 and 1064 before 0.7.1 release.
2160
2165
2161 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2166 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
2162 see the raw input history (without conversions like %ls ->
2167 see the raw input history (without conversions like %ls ->
2163 ipmagic("ls")). After a request from W. Stein, SAGE
2168 ipmagic("ls")). After a request from W. Stein, SAGE
2164 (http://modular.ucsd.edu/sage) developer. This information is
2169 (http://modular.ucsd.edu/sage) developer. This information is
2165 stored in the input_hist_raw attribute of the IPython instance, so
2170 stored in the input_hist_raw attribute of the IPython instance, so
2166 developers can access it if needed (it's an InputList instance).
2171 developers can access it if needed (it's an InputList instance).
2167
2172
2168 * Versionstring = 0.7.2.svn
2173 * Versionstring = 0.7.2.svn
2169
2174
2170 * eggsetup.py: A separate script for constructing eggs, creates
2175 * eggsetup.py: A separate script for constructing eggs, creates
2171 proper launch scripts even on Windows (an .exe file in
2176 proper launch scripts even on Windows (an .exe file in
2172 \python24\scripts).
2177 \python24\scripts).
2173
2178
2174 * ipapi.py: launch_new_instance, launch entry point needed for the
2179 * ipapi.py: launch_new_instance, launch entry point needed for the
2175 egg.
2180 egg.
2176
2181
2177 2006-01-23 Ville Vainio <vivainio@gmail.com>
2182 2006-01-23 Ville Vainio <vivainio@gmail.com>
2178
2183
2179 * Added %cpaste magic for pasting python code
2184 * Added %cpaste magic for pasting python code
2180
2185
2181 2006-01-22 Ville Vainio <vivainio@gmail.com>
2186 2006-01-22 Ville Vainio <vivainio@gmail.com>
2182
2187
2183 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2188 * Merge from branches/0.7.1 into trunk, revs 1052-1057
2184
2189
2185 * Versionstring = 0.7.2.svn
2190 * Versionstring = 0.7.2.svn
2186
2191
2187 * eggsetup.py: A separate script for constructing eggs, creates
2192 * eggsetup.py: A separate script for constructing eggs, creates
2188 proper launch scripts even on Windows (an .exe file in
2193 proper launch scripts even on Windows (an .exe file in
2189 \python24\scripts).
2194 \python24\scripts).
2190
2195
2191 * ipapi.py: launch_new_instance, launch entry point needed for the
2196 * ipapi.py: launch_new_instance, launch entry point needed for the
2192 egg.
2197 egg.
2193
2198
2194 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2199 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
2195
2200
2196 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2201 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
2197 %pfile foo would print the file for foo even if it was a binary.
2202 %pfile foo would print the file for foo even if it was a binary.
2198 Now, extensions '.so' and '.dll' are skipped.
2203 Now, extensions '.so' and '.dll' are skipped.
2199
2204
2200 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2205 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
2201 bug, where macros would fail in all threaded modes. I'm not 100%
2206 bug, where macros would fail in all threaded modes. I'm not 100%
2202 sure, so I'm going to put out an rc instead of making a release
2207 sure, so I'm going to put out an rc instead of making a release
2203 today, and wait for feedback for at least a few days.
2208 today, and wait for feedback for at least a few days.
2204
2209
2205 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2210 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
2206 it...) the handling of pasting external code with autoindent on.
2211 it...) the handling of pasting external code with autoindent on.
2207 To get out of a multiline input, the rule will appear for most
2212 To get out of a multiline input, the rule will appear for most
2208 users unchanged: two blank lines or change the indent level
2213 users unchanged: two blank lines or change the indent level
2209 proposed by IPython. But there is a twist now: you can
2214 proposed by IPython. But there is a twist now: you can
2210 add/subtract only *one or two spaces*. If you add/subtract three
2215 add/subtract only *one or two spaces*. If you add/subtract three
2211 or more (unless you completely delete the line), IPython will
2216 or more (unless you completely delete the line), IPython will
2212 accept that line, and you'll need to enter a second one of pure
2217 accept that line, and you'll need to enter a second one of pure
2213 whitespace. I know it sounds complicated, but I can't find a
2218 whitespace. I know it sounds complicated, but I can't find a
2214 different solution that covers all the cases, with the right
2219 different solution that covers all the cases, with the right
2215 heuristics. Hopefully in actual use, nobody will really notice
2220 heuristics. Hopefully in actual use, nobody will really notice
2216 all these strange rules and things will 'just work'.
2221 all these strange rules and things will 'just work'.
2217
2222
2218 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2223 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
2219
2224
2220 * IPython/iplib.py (interact): catch exceptions which can be
2225 * IPython/iplib.py (interact): catch exceptions which can be
2221 triggered asynchronously by signal handlers. Thanks to an
2226 triggered asynchronously by signal handlers. Thanks to an
2222 automatic crash report, submitted by Colin Kingsley
2227 automatic crash report, submitted by Colin Kingsley
2223 <tercel-AT-gentoo.org>.
2228 <tercel-AT-gentoo.org>.
2224
2229
2225 2006-01-20 Ville Vainio <vivainio@gmail.com>
2230 2006-01-20 Ville Vainio <vivainio@gmail.com>
2226
2231
2227 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2232 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
2228 (%rehashdir, very useful, try it out) of how to extend ipython
2233 (%rehashdir, very useful, try it out) of how to extend ipython
2229 with new magics. Also added Extensions dir to pythonpath to make
2234 with new magics. Also added Extensions dir to pythonpath to make
2230 importing extensions easy.
2235 importing extensions easy.
2231
2236
2232 * %store now complains when trying to store interactively declared
2237 * %store now complains when trying to store interactively declared
2233 classes / instances of those classes.
2238 classes / instances of those classes.
2234
2239
2235 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2240 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
2236 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2241 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
2237 if they exist, and ipy_user_conf.py with some defaults is created for
2242 if they exist, and ipy_user_conf.py with some defaults is created for
2238 the user.
2243 the user.
2239
2244
2240 * Startup rehashing done by the config file, not InterpreterExec.
2245 * Startup rehashing done by the config file, not InterpreterExec.
2241 This means system commands are available even without selecting the
2246 This means system commands are available even without selecting the
2242 pysh profile. It's the sensible default after all.
2247 pysh profile. It's the sensible default after all.
2243
2248
2244 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2249 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
2245
2250
2246 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2251 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
2247 multiline code with autoindent on working. But I am really not
2252 multiline code with autoindent on working. But I am really not
2248 sure, so this needs more testing. Will commit a debug-enabled
2253 sure, so this needs more testing. Will commit a debug-enabled
2249 version for now, while I test it some more, so that Ville and
2254 version for now, while I test it some more, so that Ville and
2250 others may also catch any problems. Also made
2255 others may also catch any problems. Also made
2251 self.indent_current_str() a method, to ensure that there's no
2256 self.indent_current_str() a method, to ensure that there's no
2252 chance of the indent space count and the corresponding string
2257 chance of the indent space count and the corresponding string
2253 falling out of sync. All code needing the string should just call
2258 falling out of sync. All code needing the string should just call
2254 the method.
2259 the method.
2255
2260
2256 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2261 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
2257
2262
2258 * IPython/Magic.py (magic_edit): fix check for when users don't
2263 * IPython/Magic.py (magic_edit): fix check for when users don't
2259 save their output files, the try/except was in the wrong section.
2264 save their output files, the try/except was in the wrong section.
2260
2265
2261 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2266 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
2262
2267
2263 * IPython/Magic.py (magic_run): fix __file__ global missing from
2268 * IPython/Magic.py (magic_run): fix __file__ global missing from
2264 script's namespace when executed via %run. After a report by
2269 script's namespace when executed via %run. After a report by
2265 Vivian.
2270 Vivian.
2266
2271
2267 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2272 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
2268 when using python 2.4. The parent constructor changed in 2.4, and
2273 when using python 2.4. The parent constructor changed in 2.4, and
2269 we need to track it directly (we can't call it, as it messes up
2274 we need to track it directly (we can't call it, as it messes up
2270 readline and tab-completion inside our pdb would stop working).
2275 readline and tab-completion inside our pdb would stop working).
2271 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2276 After a bug report by R. Bernstein <rocky-AT-panix.com>.
2272
2277
2273 2006-01-16 Ville Vainio <vivainio@gmail.com>
2278 2006-01-16 Ville Vainio <vivainio@gmail.com>
2274
2279
2275 * Ipython/magic.py: Reverted back to old %edit functionality
2280 * Ipython/magic.py: Reverted back to old %edit functionality
2276 that returns file contents on exit.
2281 that returns file contents on exit.
2277
2282
2278 * IPython/path.py: Added Jason Orendorff's "path" module to
2283 * IPython/path.py: Added Jason Orendorff's "path" module to
2279 IPython tree, http://www.jorendorff.com/articles/python/path/.
2284 IPython tree, http://www.jorendorff.com/articles/python/path/.
2280 You can get path objects conveniently through %sc, and !!, e.g.:
2285 You can get path objects conveniently through %sc, and !!, e.g.:
2281 sc files=ls
2286 sc files=ls
2282 for p in files.paths: # or files.p
2287 for p in files.paths: # or files.p
2283 print p,p.mtime
2288 print p,p.mtime
2284
2289
2285 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2290 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
2286 now work again without considering the exclusion regexp -
2291 now work again without considering the exclusion regexp -
2287 hence, things like ',foo my/path' turn to 'foo("my/path")'
2292 hence, things like ',foo my/path' turn to 'foo("my/path")'
2288 instead of syntax error.
2293 instead of syntax error.
2289
2294
2290
2295
2291 2006-01-14 Ville Vainio <vivainio@gmail.com>
2296 2006-01-14 Ville Vainio <vivainio@gmail.com>
2292
2297
2293 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2298 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
2294 ipapi decorators for python 2.4 users, options() provides access to rc
2299 ipapi decorators for python 2.4 users, options() provides access to rc
2295 data.
2300 data.
2296
2301
2297 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2302 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
2298 as path separators (even on Linux ;-). Space character after
2303 as path separators (even on Linux ;-). Space character after
2299 backslash (as yielded by tab completer) is still space;
2304 backslash (as yielded by tab completer) is still space;
2300 "%cd long\ name" works as expected.
2305 "%cd long\ name" works as expected.
2301
2306
2302 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2307 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
2303 as "chain of command", with priority. API stays the same,
2308 as "chain of command", with priority. API stays the same,
2304 TryNext exception raised by a hook function signals that
2309 TryNext exception raised by a hook function signals that
2305 current hook failed and next hook should try handling it, as
2310 current hook failed and next hook should try handling it, as
2306 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2311 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
2307 requested configurable display hook, which is now implemented.
2312 requested configurable display hook, which is now implemented.
2308
2313
2309 2006-01-13 Ville Vainio <vivainio@gmail.com>
2314 2006-01-13 Ville Vainio <vivainio@gmail.com>
2310
2315
2311 * IPython/platutils*.py: platform specific utility functions,
2316 * IPython/platutils*.py: platform specific utility functions,
2312 so far only set_term_title is implemented (change terminal
2317 so far only set_term_title is implemented (change terminal
2313 label in windowing systems). %cd now changes the title to
2318 label in windowing systems). %cd now changes the title to
2314 current dir.
2319 current dir.
2315
2320
2316 * IPython/Release.py: Added myself to "authors" list,
2321 * IPython/Release.py: Added myself to "authors" list,
2317 had to create new files.
2322 had to create new files.
2318
2323
2319 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2324 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
2320 shell escape; not a known bug but had potential to be one in the
2325 shell escape; not a known bug but had potential to be one in the
2321 future.
2326 future.
2322
2327
2323 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2328 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
2324 extension API for IPython! See the module for usage example. Fix
2329 extension API for IPython! See the module for usage example. Fix
2325 OInspect for docstring-less magic functions.
2330 OInspect for docstring-less magic functions.
2326
2331
2327
2332
2328 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2333 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
2329
2334
2330 * IPython/iplib.py (raw_input): temporarily deactivate all
2335 * IPython/iplib.py (raw_input): temporarily deactivate all
2331 attempts at allowing pasting of code with autoindent on. It
2336 attempts at allowing pasting of code with autoindent on. It
2332 introduced bugs (reported by Prabhu) and I can't seem to find a
2337 introduced bugs (reported by Prabhu) and I can't seem to find a
2333 robust combination which works in all cases. Will have to revisit
2338 robust combination which works in all cases. Will have to revisit
2334 later.
2339 later.
2335
2340
2336 * IPython/genutils.py: remove isspace() function. We've dropped
2341 * IPython/genutils.py: remove isspace() function. We've dropped
2337 2.2 compatibility, so it's OK to use the string method.
2342 2.2 compatibility, so it's OK to use the string method.
2338
2343
2339 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2344 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2340
2345
2341 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2346 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
2342 matching what NOT to autocall on, to include all python binary
2347 matching what NOT to autocall on, to include all python binary
2343 operators (including things like 'and', 'or', 'is' and 'in').
2348 operators (including things like 'and', 'or', 'is' and 'in').
2344 Prompted by a bug report on 'foo & bar', but I realized we had
2349 Prompted by a bug report on 'foo & bar', but I realized we had
2345 many more potential bug cases with other operators. The regexp is
2350 many more potential bug cases with other operators. The regexp is
2346 self.re_exclude_auto, it's fairly commented.
2351 self.re_exclude_auto, it's fairly commented.
2347
2352
2348 2006-01-12 Ville Vainio <vivainio@gmail.com>
2353 2006-01-12 Ville Vainio <vivainio@gmail.com>
2349
2354
2350 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2355 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
2351 Prettified and hardened string/backslash quoting with ipsystem(),
2356 Prettified and hardened string/backslash quoting with ipsystem(),
2352 ipalias() and ipmagic(). Now even \ characters are passed to
2357 ipalias() and ipmagic(). Now even \ characters are passed to
2353 %magics, !shell escapes and aliases exactly as they are in the
2358 %magics, !shell escapes and aliases exactly as they are in the
2354 ipython command line. Should improve backslash experience,
2359 ipython command line. Should improve backslash experience,
2355 particularly in Windows (path delimiter for some commands that
2360 particularly in Windows (path delimiter for some commands that
2356 won't understand '/'), but Unix benefits as well (regexps). %cd
2361 won't understand '/'), but Unix benefits as well (regexps). %cd
2357 magic still doesn't support backslash path delimiters, though. Also
2362 magic still doesn't support backslash path delimiters, though. Also
2358 deleted all pretense of supporting multiline command strings in
2363 deleted all pretense of supporting multiline command strings in
2359 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2364 !system or %magic commands. Thanks to Jerry McRae for suggestions.
2360
2365
2361 * doc/build_doc_instructions.txt added. Documentation on how to
2366 * doc/build_doc_instructions.txt added. Documentation on how to
2362 use doc/update_manual.py, added yesterday. Both files contributed
2367 use doc/update_manual.py, added yesterday. Both files contributed
2363 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2368 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
2364 doc/*.sh for deprecation at a later date.
2369 doc/*.sh for deprecation at a later date.
2365
2370
2366 * /ipython.py Added ipython.py to root directory for
2371 * /ipython.py Added ipython.py to root directory for
2367 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2372 zero-installation (tar xzvf ipython.tgz; cd ipython; python
2368 ipython.py) and development convenience (no need to keep doing
2373 ipython.py) and development convenience (no need to keep doing
2369 "setup.py install" between changes).
2374 "setup.py install" between changes).
2370
2375
2371 * Made ! and !! shell escapes work (again) in multiline expressions:
2376 * Made ! and !! shell escapes work (again) in multiline expressions:
2372 if 1:
2377 if 1:
2373 !ls
2378 !ls
2374 !!ls
2379 !!ls
2375
2380
2376 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2381 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
2377
2382
2378 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2383 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
2379 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2384 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
2380 module in case-insensitive installation. Was causing crashes
2385 module in case-insensitive installation. Was causing crashes
2381 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2386 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
2382
2387
2383 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2388 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
2384 <marienz-AT-gentoo.org>, closes
2389 <marienz-AT-gentoo.org>, closes
2385 http://www.scipy.net/roundup/ipython/issue51.
2390 http://www.scipy.net/roundup/ipython/issue51.
2386
2391
2387 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2392 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
2388
2393
2389 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2394 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
2390 problem of excessive CPU usage under *nix and keyboard lag under
2395 problem of excessive CPU usage under *nix and keyboard lag under
2391 win32.
2396 win32.
2392
2397
2393 2006-01-10 *** Released version 0.7.0
2398 2006-01-10 *** Released version 0.7.0
2394
2399
2395 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2400 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
2396
2401
2397 * IPython/Release.py (revision): tag version number to 0.7.0,
2402 * IPython/Release.py (revision): tag version number to 0.7.0,
2398 ready for release.
2403 ready for release.
2399
2404
2400 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2405 * IPython/Magic.py (magic_edit): Add print statement to %edit so
2401 it informs the user of the name of the temp. file used. This can
2406 it informs the user of the name of the temp. file used. This can
2402 help if you decide later to reuse that same file, so you know
2407 help if you decide later to reuse that same file, so you know
2403 where to copy the info from.
2408 where to copy the info from.
2404
2409
2405 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2410 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
2406
2411
2407 * setup_bdist_egg.py: little script to build an egg. Added
2412 * setup_bdist_egg.py: little script to build an egg. Added
2408 support in the release tools as well.
2413 support in the release tools as well.
2409
2414
2410 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2415 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
2411
2416
2412 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2417 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
2413 version selection (new -wxversion command line and ipythonrc
2418 version selection (new -wxversion command line and ipythonrc
2414 parameter). Patch contributed by Arnd Baecker
2419 parameter). Patch contributed by Arnd Baecker
2415 <arnd.baecker-AT-web.de>.
2420 <arnd.baecker-AT-web.de>.
2416
2421
2417 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2422 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2418 embedded instances, for variables defined at the interactive
2423 embedded instances, for variables defined at the interactive
2419 prompt of the embedded ipython. Reported by Arnd.
2424 prompt of the embedded ipython. Reported by Arnd.
2420
2425
2421 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2426 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
2422 it can be used as a (stateful) toggle, or with a direct parameter.
2427 it can be used as a (stateful) toggle, or with a direct parameter.
2423
2428
2424 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2429 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
2425 could be triggered in certain cases and cause the traceback
2430 could be triggered in certain cases and cause the traceback
2426 printer not to work.
2431 printer not to work.
2427
2432
2428 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2433 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
2429
2434
2430 * IPython/iplib.py (_should_recompile): Small fix, closes
2435 * IPython/iplib.py (_should_recompile): Small fix, closes
2431 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2436 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
2432
2437
2433 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2438 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
2434
2439
2435 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2440 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
2436 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2441 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
2437 Moad for help with tracking it down.
2442 Moad for help with tracking it down.
2438
2443
2439 * IPython/iplib.py (handle_auto): fix autocall handling for
2444 * IPython/iplib.py (handle_auto): fix autocall handling for
2440 objects which support BOTH __getitem__ and __call__ (so that f [x]
2445 objects which support BOTH __getitem__ and __call__ (so that f [x]
2441 is left alone, instead of becoming f([x]) automatically).
2446 is left alone, instead of becoming f([x]) automatically).
2442
2447
2443 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2448 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
2444 Ville's patch.
2449 Ville's patch.
2445
2450
2446 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2451 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
2447
2452
2448 * IPython/iplib.py (handle_auto): changed autocall semantics to
2453 * IPython/iplib.py (handle_auto): changed autocall semantics to
2449 include 'smart' mode, where the autocall transformation is NOT
2454 include 'smart' mode, where the autocall transformation is NOT
2450 applied if there are no arguments on the line. This allows you to
2455 applied if there are no arguments on the line. This allows you to
2451 just type 'foo' if foo is a callable to see its internal form,
2456 just type 'foo' if foo is a callable to see its internal form,
2452 instead of having it called with no arguments (typically a
2457 instead of having it called with no arguments (typically a
2453 mistake). The old 'full' autocall still exists: for that, you
2458 mistake). The old 'full' autocall still exists: for that, you
2454 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2459 need to set the 'autocall' parameter to 2 in your ipythonrc file.
2455
2460
2456 * IPython/completer.py (Completer.attr_matches): add
2461 * IPython/completer.py (Completer.attr_matches): add
2457 tab-completion support for Enthoughts' traits. After a report by
2462 tab-completion support for Enthoughts' traits. After a report by
2458 Arnd and a patch by Prabhu.
2463 Arnd and a patch by Prabhu.
2459
2464
2460 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2465 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
2461
2466
2462 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2467 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
2463 Schmolck's patch to fix inspect.getinnerframes().
2468 Schmolck's patch to fix inspect.getinnerframes().
2464
2469
2465 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2470 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
2466 for embedded instances, regarding handling of namespaces and items
2471 for embedded instances, regarding handling of namespaces and items
2467 added to the __builtin__ one. Multiple embedded instances and
2472 added to the __builtin__ one. Multiple embedded instances and
2468 recursive embeddings should work better now (though I'm not sure
2473 recursive embeddings should work better now (though I'm not sure
2469 I've got all the corner cases fixed, that code is a bit of a brain
2474 I've got all the corner cases fixed, that code is a bit of a brain
2470 twister).
2475 twister).
2471
2476
2472 * IPython/Magic.py (magic_edit): added support to edit in-memory
2477 * IPython/Magic.py (magic_edit): added support to edit in-memory
2473 macros (automatically creates the necessary temp files). %edit
2478 macros (automatically creates the necessary temp files). %edit
2474 also doesn't return the file contents anymore, it's just noise.
2479 also doesn't return the file contents anymore, it's just noise.
2475
2480
2476 * IPython/completer.py (Completer.attr_matches): revert change to
2481 * IPython/completer.py (Completer.attr_matches): revert change to
2477 complete only on attributes listed in __all__. I realized it
2482 complete only on attributes listed in __all__. I realized it
2478 cripples the tab-completion system as a tool for exploring the
2483 cripples the tab-completion system as a tool for exploring the
2479 internals of unknown libraries (it renders any non-__all__
2484 internals of unknown libraries (it renders any non-__all__
2480 attribute off-limits). I got bit by this when trying to see
2485 attribute off-limits). I got bit by this when trying to see
2481 something inside the dis module.
2486 something inside the dis module.
2482
2487
2483 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2488 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
2484
2489
2485 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2490 * IPython/iplib.py (InteractiveShell.__init__): add .meta
2486 namespace for users and extension writers to hold data in. This
2491 namespace for users and extension writers to hold data in. This
2487 follows the discussion in
2492 follows the discussion in
2488 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2493 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
2489
2494
2490 * IPython/completer.py (IPCompleter.complete): small patch to help
2495 * IPython/completer.py (IPCompleter.complete): small patch to help
2491 tab-completion under Emacs, after a suggestion by John Barnard
2496 tab-completion under Emacs, after a suggestion by John Barnard
2492 <barnarj-AT-ccf.org>.
2497 <barnarj-AT-ccf.org>.
2493
2498
2494 * IPython/Magic.py (Magic.extract_input_slices): added support for
2499 * IPython/Magic.py (Magic.extract_input_slices): added support for
2495 the slice notation in magics to use N-M to represent numbers N...M
2500 the slice notation in magics to use N-M to represent numbers N...M
2496 (closed endpoints). This is used by %macro and %save.
2501 (closed endpoints). This is used by %macro and %save.
2497
2502
2498 * IPython/completer.py (Completer.attr_matches): for modules which
2503 * IPython/completer.py (Completer.attr_matches): for modules which
2499 define __all__, complete only on those. After a patch by Jeffrey
2504 define __all__, complete only on those. After a patch by Jeffrey
2500 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2505 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
2501 speed up this routine.
2506 speed up this routine.
2502
2507
2503 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2508 * IPython/Logger.py (Logger.log): fix a history handling bug. I
2504 don't know if this is the end of it, but the behavior now is
2509 don't know if this is the end of it, but the behavior now is
2505 certainly much more correct. Note that coupled with macros,
2510 certainly much more correct. Note that coupled with macros,
2506 slightly surprising (at first) behavior may occur: a macro will in
2511 slightly surprising (at first) behavior may occur: a macro will in
2507 general expand to multiple lines of input, so upon exiting, the
2512 general expand to multiple lines of input, so upon exiting, the
2508 in/out counters will both be bumped by the corresponding amount
2513 in/out counters will both be bumped by the corresponding amount
2509 (as if the macro's contents had been typed interactively). Typing
2514 (as if the macro's contents had been typed interactively). Typing
2510 %hist will reveal the intermediate (silently processed) lines.
2515 %hist will reveal the intermediate (silently processed) lines.
2511
2516
2512 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2517 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
2513 pickle to fail (%run was overwriting __main__ and not restoring
2518 pickle to fail (%run was overwriting __main__ and not restoring
2514 it, but pickle relies on __main__ to operate).
2519 it, but pickle relies on __main__ to operate).
2515
2520
2516 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2521 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
2517 using properties, but forgot to make the main InteractiveShell
2522 using properties, but forgot to make the main InteractiveShell
2518 class a new-style class. Properties fail silently, and
2523 class a new-style class. Properties fail silently, and
2519 mysteriously, with old-style class (getters work, but
2524 mysteriously, with old-style class (getters work, but
2520 setters don't do anything).
2525 setters don't do anything).
2521
2526
2522 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2527 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
2523
2528
2524 * IPython/Magic.py (magic_history): fix history reporting bug (I
2529 * IPython/Magic.py (magic_history): fix history reporting bug (I
2525 know some nasties are still there, I just can't seem to find a
2530 know some nasties are still there, I just can't seem to find a
2526 reproducible test case to track them down; the input history is
2531 reproducible test case to track them down; the input history is
2527 falling out of sync...)
2532 falling out of sync...)
2528
2533
2529 * IPython/iplib.py (handle_shell_escape): fix bug where both
2534 * IPython/iplib.py (handle_shell_escape): fix bug where both
2530 aliases and system accesses where broken for indented code (such
2535 aliases and system accesses where broken for indented code (such
2531 as loops).
2536 as loops).
2532
2537
2533 * IPython/genutils.py (shell): fix small but critical bug for
2538 * IPython/genutils.py (shell): fix small but critical bug for
2534 win32 system access.
2539 win32 system access.
2535
2540
2536 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2541 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
2537
2542
2538 * IPython/iplib.py (showtraceback): remove use of the
2543 * IPython/iplib.py (showtraceback): remove use of the
2539 sys.last_{type/value/traceback} structures, which are non
2544 sys.last_{type/value/traceback} structures, which are non
2540 thread-safe.
2545 thread-safe.
2541 (_prefilter): change control flow to ensure that we NEVER
2546 (_prefilter): change control flow to ensure that we NEVER
2542 introspect objects when autocall is off. This will guarantee that
2547 introspect objects when autocall is off. This will guarantee that
2543 having an input line of the form 'x.y', where access to attribute
2548 having an input line of the form 'x.y', where access to attribute
2544 'y' has side effects, doesn't trigger the side effect TWICE. It
2549 'y' has side effects, doesn't trigger the side effect TWICE. It
2545 is important to note that, with autocall on, these side effects
2550 is important to note that, with autocall on, these side effects
2546 can still happen.
2551 can still happen.
2547 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2552 (ipsystem): new builtin, to complete the ip{magic/alias/system}
2548 trio. IPython offers these three kinds of special calls which are
2553 trio. IPython offers these three kinds of special calls which are
2549 not python code, and it's a good thing to have their call method
2554 not python code, and it's a good thing to have their call method
2550 be accessible as pure python functions (not just special syntax at
2555 be accessible as pure python functions (not just special syntax at
2551 the command line). It gives us a better internal implementation
2556 the command line). It gives us a better internal implementation
2552 structure, as well as exposing these for user scripting more
2557 structure, as well as exposing these for user scripting more
2553 cleanly.
2558 cleanly.
2554
2559
2555 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2560 * IPython/macro.py (Macro.__init__): moved macros to a standalone
2556 file. Now that they'll be more likely to be used with the
2561 file. Now that they'll be more likely to be used with the
2557 persistance system (%store), I want to make sure their module path
2562 persistance system (%store), I want to make sure their module path
2558 doesn't change in the future, so that we don't break things for
2563 doesn't change in the future, so that we don't break things for
2559 users' persisted data.
2564 users' persisted data.
2560
2565
2561 * IPython/iplib.py (autoindent_update): move indentation
2566 * IPython/iplib.py (autoindent_update): move indentation
2562 management into the _text_ processing loop, not the keyboard
2567 management into the _text_ processing loop, not the keyboard
2563 interactive one. This is necessary to correctly process non-typed
2568 interactive one. This is necessary to correctly process non-typed
2564 multiline input (such as macros).
2569 multiline input (such as macros).
2565
2570
2566 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2571 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
2567 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2572 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
2568 which was producing problems in the resulting manual.
2573 which was producing problems in the resulting manual.
2569 (magic_whos): improve reporting of instances (show their class,
2574 (magic_whos): improve reporting of instances (show their class,
2570 instead of simply printing 'instance' which isn't terribly
2575 instead of simply printing 'instance' which isn't terribly
2571 informative).
2576 informative).
2572
2577
2573 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2578 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
2574 (minor mods) to support network shares under win32.
2579 (minor mods) to support network shares under win32.
2575
2580
2576 * IPython/winconsole.py (get_console_size): add new winconsole
2581 * IPython/winconsole.py (get_console_size): add new winconsole
2577 module and fixes to page_dumb() to improve its behavior under
2582 module and fixes to page_dumb() to improve its behavior under
2578 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2583 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
2579
2584
2580 * IPython/Magic.py (Macro): simplified Macro class to just
2585 * IPython/Magic.py (Macro): simplified Macro class to just
2581 subclass list. We've had only 2.2 compatibility for a very long
2586 subclass list. We've had only 2.2 compatibility for a very long
2582 time, yet I was still avoiding subclassing the builtin types. No
2587 time, yet I was still avoiding subclassing the builtin types. No
2583 more (I'm also starting to use properties, though I won't shift to
2588 more (I'm also starting to use properties, though I won't shift to
2584 2.3-specific features quite yet).
2589 2.3-specific features quite yet).
2585 (magic_store): added Ville's patch for lightweight variable
2590 (magic_store): added Ville's patch for lightweight variable
2586 persistence, after a request on the user list by Matt Wilkie
2591 persistence, after a request on the user list by Matt Wilkie
2587 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2592 <maphew-AT-gmail.com>. The new %store magic's docstring has full
2588 details.
2593 details.
2589
2594
2590 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2595 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2591 changed the default logfile name from 'ipython.log' to
2596 changed the default logfile name from 'ipython.log' to
2592 'ipython_log.py'. These logs are real python files, and now that
2597 'ipython_log.py'. These logs are real python files, and now that
2593 we have much better multiline support, people are more likely to
2598 we have much better multiline support, people are more likely to
2594 want to use them as such. Might as well name them correctly.
2599 want to use them as such. Might as well name them correctly.
2595
2600
2596 * IPython/Magic.py: substantial cleanup. While we can't stop
2601 * IPython/Magic.py: substantial cleanup. While we can't stop
2597 using magics as mixins, due to the existing customizations 'out
2602 using magics as mixins, due to the existing customizations 'out
2598 there' which rely on the mixin naming conventions, at least I
2603 there' which rely on the mixin naming conventions, at least I
2599 cleaned out all cross-class name usage. So once we are OK with
2604 cleaned out all cross-class name usage. So once we are OK with
2600 breaking compatibility, the two systems can be separated.
2605 breaking compatibility, the two systems can be separated.
2601
2606
2602 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2607 * IPython/Logger.py: major cleanup. This one is NOT a mixin
2603 anymore, and the class is a fair bit less hideous as well. New
2608 anymore, and the class is a fair bit less hideous as well. New
2604 features were also introduced: timestamping of input, and logging
2609 features were also introduced: timestamping of input, and logging
2605 of output results. These are user-visible with the -t and -o
2610 of output results. These are user-visible with the -t and -o
2606 options to %logstart. Closes
2611 options to %logstart. Closes
2607 http://www.scipy.net/roundup/ipython/issue11 and a request by
2612 http://www.scipy.net/roundup/ipython/issue11 and a request by
2608 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2613 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
2609
2614
2610 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2615 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
2611
2616
2612 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2617 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
2613 better handle backslashes in paths. See the thread 'More Windows
2618 better handle backslashes in paths. See the thread 'More Windows
2614 questions part 2 - \/ characters revisited' on the iypthon user
2619 questions part 2 - \/ characters revisited' on the iypthon user
2615 list:
2620 list:
2616 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2621 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
2617
2622
2618 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2623 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
2619
2624
2620 (InteractiveShell.__init__): change threaded shells to not use the
2625 (InteractiveShell.__init__): change threaded shells to not use the
2621 ipython crash handler. This was causing more problems than not,
2626 ipython crash handler. This was causing more problems than not,
2622 as exceptions in the main thread (GUI code, typically) would
2627 as exceptions in the main thread (GUI code, typically) would
2623 always show up as a 'crash', when they really weren't.
2628 always show up as a 'crash', when they really weren't.
2624
2629
2625 The colors and exception mode commands (%colors/%xmode) have been
2630 The colors and exception mode commands (%colors/%xmode) have been
2626 synchronized to also take this into account, so users can get
2631 synchronized to also take this into account, so users can get
2627 verbose exceptions for their threaded code as well. I also added
2632 verbose exceptions for their threaded code as well. I also added
2628 support for activating pdb inside this exception handler as well,
2633 support for activating pdb inside this exception handler as well,
2629 so now GUI authors can use IPython's enhanced pdb at runtime.
2634 so now GUI authors can use IPython's enhanced pdb at runtime.
2630
2635
2631 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2636 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
2632 true by default, and add it to the shipped ipythonrc file. Since
2637 true by default, and add it to the shipped ipythonrc file. Since
2633 this asks the user before proceeding, I think it's OK to make it
2638 this asks the user before proceeding, I think it's OK to make it
2634 true by default.
2639 true by default.
2635
2640
2636 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2641 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
2637 of the previous special-casing of input in the eval loop. I think
2642 of the previous special-casing of input in the eval loop. I think
2638 this is cleaner, as they really are commands and shouldn't have
2643 this is cleaner, as they really are commands and shouldn't have
2639 a special role in the middle of the core code.
2644 a special role in the middle of the core code.
2640
2645
2641 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2646 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
2642
2647
2643 * IPython/iplib.py (edit_syntax_error): added support for
2648 * IPython/iplib.py (edit_syntax_error): added support for
2644 automatically reopening the editor if the file had a syntax error
2649 automatically reopening the editor if the file had a syntax error
2645 in it. Thanks to scottt who provided the patch at:
2650 in it. Thanks to scottt who provided the patch at:
2646 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2651 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
2647 version committed).
2652 version committed).
2648
2653
2649 * IPython/iplib.py (handle_normal): add suport for multi-line
2654 * IPython/iplib.py (handle_normal): add suport for multi-line
2650 input with emtpy lines. This fixes
2655 input with emtpy lines. This fixes
2651 http://www.scipy.net/roundup/ipython/issue43 and a similar
2656 http://www.scipy.net/roundup/ipython/issue43 and a similar
2652 discussion on the user list.
2657 discussion on the user list.
2653
2658
2654 WARNING: a behavior change is necessarily introduced to support
2659 WARNING: a behavior change is necessarily introduced to support
2655 blank lines: now a single blank line with whitespace does NOT
2660 blank lines: now a single blank line with whitespace does NOT
2656 break the input loop, which means that when autoindent is on, by
2661 break the input loop, which means that when autoindent is on, by
2657 default hitting return on the next (indented) line does NOT exit.
2662 default hitting return on the next (indented) line does NOT exit.
2658
2663
2659 Instead, to exit a multiline input you can either have:
2664 Instead, to exit a multiline input you can either have:
2660
2665
2661 - TWO whitespace lines (just hit return again), or
2666 - TWO whitespace lines (just hit return again), or
2662 - a single whitespace line of a different length than provided
2667 - a single whitespace line of a different length than provided
2663 by the autoindent (add or remove a space).
2668 by the autoindent (add or remove a space).
2664
2669
2665 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2670 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
2666 module to better organize all readline-related functionality.
2671 module to better organize all readline-related functionality.
2667 I've deleted FlexCompleter and put all completion clases here.
2672 I've deleted FlexCompleter and put all completion clases here.
2668
2673
2669 * IPython/iplib.py (raw_input): improve indentation management.
2674 * IPython/iplib.py (raw_input): improve indentation management.
2670 It is now possible to paste indented code with autoindent on, and
2675 It is now possible to paste indented code with autoindent on, and
2671 the code is interpreted correctly (though it still looks bad on
2676 the code is interpreted correctly (though it still looks bad on
2672 screen, due to the line-oriented nature of ipython).
2677 screen, due to the line-oriented nature of ipython).
2673 (MagicCompleter.complete): change behavior so that a TAB key on an
2678 (MagicCompleter.complete): change behavior so that a TAB key on an
2674 otherwise empty line actually inserts a tab, instead of completing
2679 otherwise empty line actually inserts a tab, instead of completing
2675 on the entire global namespace. This makes it easier to use the
2680 on the entire global namespace. This makes it easier to use the
2676 TAB key for indentation. After a request by Hans Meine
2681 TAB key for indentation. After a request by Hans Meine
2677 <hans_meine-AT-gmx.net>
2682 <hans_meine-AT-gmx.net>
2678 (_prefilter): add support so that typing plain 'exit' or 'quit'
2683 (_prefilter): add support so that typing plain 'exit' or 'quit'
2679 does a sensible thing. Originally I tried to deviate as little as
2684 does a sensible thing. Originally I tried to deviate as little as
2680 possible from the default python behavior, but even that one may
2685 possible from the default python behavior, but even that one may
2681 change in this direction (thread on python-dev to that effect).
2686 change in this direction (thread on python-dev to that effect).
2682 Regardless, ipython should do the right thing even if CPython's
2687 Regardless, ipython should do the right thing even if CPython's
2683 '>>>' prompt doesn't.
2688 '>>>' prompt doesn't.
2684 (InteractiveShell): removed subclassing code.InteractiveConsole
2689 (InteractiveShell): removed subclassing code.InteractiveConsole
2685 class. By now we'd overridden just about all of its methods: I've
2690 class. By now we'd overridden just about all of its methods: I've
2686 copied the remaining two over, and now ipython is a standalone
2691 copied the remaining two over, and now ipython is a standalone
2687 class. This will provide a clearer picture for the chainsaw
2692 class. This will provide a clearer picture for the chainsaw
2688 branch refactoring.
2693 branch refactoring.
2689
2694
2690 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2695 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
2691
2696
2692 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2697 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
2693 failures for objects which break when dir() is called on them.
2698 failures for objects which break when dir() is called on them.
2694
2699
2695 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2700 * IPython/FlexCompleter.py (Completer.__init__): Added support for
2696 distinct local and global namespaces in the completer API. This
2701 distinct local and global namespaces in the completer API. This
2697 change allows us to properly handle completion with distinct
2702 change allows us to properly handle completion with distinct
2698 scopes, including in embedded instances (this had never really
2703 scopes, including in embedded instances (this had never really
2699 worked correctly).
2704 worked correctly).
2700
2705
2701 Note: this introduces a change in the constructor for
2706 Note: this introduces a change in the constructor for
2702 MagicCompleter, as a new global_namespace parameter is now the
2707 MagicCompleter, as a new global_namespace parameter is now the
2703 second argument (the others were bumped one position).
2708 second argument (the others were bumped one position).
2704
2709
2705 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2710 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
2706
2711
2707 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2712 * IPython/iplib.py (embed_mainloop): fix tab-completion in
2708 embedded instances (which can be done now thanks to Vivian's
2713 embedded instances (which can be done now thanks to Vivian's
2709 frame-handling fixes for pdb).
2714 frame-handling fixes for pdb).
2710 (InteractiveShell.__init__): Fix namespace handling problem in
2715 (InteractiveShell.__init__): Fix namespace handling problem in
2711 embedded instances. We were overwriting __main__ unconditionally,
2716 embedded instances. We were overwriting __main__ unconditionally,
2712 and this should only be done for 'full' (non-embedded) IPython;
2717 and this should only be done for 'full' (non-embedded) IPython;
2713 embedded instances must respect the caller's __main__. Thanks to
2718 embedded instances must respect the caller's __main__. Thanks to
2714 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2719 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
2715
2720
2716 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2721 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
2717
2722
2718 * setup.py: added download_url to setup(). This registers the
2723 * setup.py: added download_url to setup(). This registers the
2719 download address at PyPI, which is not only useful to humans
2724 download address at PyPI, which is not only useful to humans
2720 browsing the site, but is also picked up by setuptools (the Eggs
2725 browsing the site, but is also picked up by setuptools (the Eggs
2721 machinery). Thanks to Ville and R. Kern for the info/discussion
2726 machinery). Thanks to Ville and R. Kern for the info/discussion
2722 on this.
2727 on this.
2723
2728
2724 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2729 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
2725
2730
2726 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2731 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
2727 This brings a lot of nice functionality to the pdb mode, which now
2732 This brings a lot of nice functionality to the pdb mode, which now
2728 has tab-completion, syntax highlighting, and better stack handling
2733 has tab-completion, syntax highlighting, and better stack handling
2729 than before. Many thanks to Vivian De Smedt
2734 than before. Many thanks to Vivian De Smedt
2730 <vivian-AT-vdesmedt.com> for the original patches.
2735 <vivian-AT-vdesmedt.com> for the original patches.
2731
2736
2732 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2737 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
2733
2738
2734 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2739 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
2735 sequence to consistently accept the banner argument. The
2740 sequence to consistently accept the banner argument. The
2736 inconsistency was tripping SAGE, thanks to Gary Zablackis
2741 inconsistency was tripping SAGE, thanks to Gary Zablackis
2737 <gzabl-AT-yahoo.com> for the report.
2742 <gzabl-AT-yahoo.com> for the report.
2738
2743
2739 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2744 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2740
2745
2741 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2746 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2742 Fix bug where a naked 'alias' call in the ipythonrc file would
2747 Fix bug where a naked 'alias' call in the ipythonrc file would
2743 cause a crash. Bug reported by Jorgen Stenarson.
2748 cause a crash. Bug reported by Jorgen Stenarson.
2744
2749
2745 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2750 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
2746
2751
2747 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2752 * IPython/ipmaker.py (make_IPython): cleanups which should improve
2748 startup time.
2753 startup time.
2749
2754
2750 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2755 * IPython/iplib.py (runcode): my globals 'fix' for embedded
2751 instances had introduced a bug with globals in normal code. Now
2756 instances had introduced a bug with globals in normal code. Now
2752 it's working in all cases.
2757 it's working in all cases.
2753
2758
2754 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2759 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
2755 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2760 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
2756 has been introduced to set the default case sensitivity of the
2761 has been introduced to set the default case sensitivity of the
2757 searches. Users can still select either mode at runtime on a
2762 searches. Users can still select either mode at runtime on a
2758 per-search basis.
2763 per-search basis.
2759
2764
2760 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2765 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
2761
2766
2762 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2767 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
2763 attributes in wildcard searches for subclasses. Modified version
2768 attributes in wildcard searches for subclasses. Modified version
2764 of a patch by Jorgen.
2769 of a patch by Jorgen.
2765
2770
2766 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2771 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
2767
2772
2768 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2773 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
2769 embedded instances. I added a user_global_ns attribute to the
2774 embedded instances. I added a user_global_ns attribute to the
2770 InteractiveShell class to handle this.
2775 InteractiveShell class to handle this.
2771
2776
2772 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2777 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
2773
2778
2774 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2779 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
2775 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2780 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
2776 (reported under win32, but may happen also in other platforms).
2781 (reported under win32, but may happen also in other platforms).
2777 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2782 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
2778
2783
2779 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2784 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
2780
2785
2781 * IPython/Magic.py (magic_psearch): new support for wildcard
2786 * IPython/Magic.py (magic_psearch): new support for wildcard
2782 patterns. Now, typing ?a*b will list all names which begin with a
2787 patterns. Now, typing ?a*b will list all names which begin with a
2783 and end in b, for example. The %psearch magic has full
2788 and end in b, for example. The %psearch magic has full
2784 docstrings. Many thanks to JΓΆrgen Stenarson
2789 docstrings. Many thanks to JΓΆrgen Stenarson
2785 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2790 <jorgen.stenarson-AT-bostream.nu>, author of the patches
2786 implementing this functionality.
2791 implementing this functionality.
2787
2792
2788 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2793 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2789
2794
2790 * Manual: fixed long-standing annoyance of double-dashes (as in
2795 * Manual: fixed long-standing annoyance of double-dashes (as in
2791 --prefix=~, for example) being stripped in the HTML version. This
2796 --prefix=~, for example) being stripped in the HTML version. This
2792 is a latex2html bug, but a workaround was provided. Many thanks
2797 is a latex2html bug, but a workaround was provided. Many thanks
2793 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2798 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
2794 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2799 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
2795 rolling. This seemingly small issue had tripped a number of users
2800 rolling. This seemingly small issue had tripped a number of users
2796 when first installing, so I'm glad to see it gone.
2801 when first installing, so I'm glad to see it gone.
2797
2802
2798 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2803 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
2799
2804
2800 * IPython/Extensions/numeric_formats.py: fix missing import,
2805 * IPython/Extensions/numeric_formats.py: fix missing import,
2801 reported by Stephen Walton.
2806 reported by Stephen Walton.
2802
2807
2803 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2808 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
2804
2809
2805 * IPython/demo.py: finish demo module, fully documented now.
2810 * IPython/demo.py: finish demo module, fully documented now.
2806
2811
2807 * IPython/genutils.py (file_read): simple little utility to read a
2812 * IPython/genutils.py (file_read): simple little utility to read a
2808 file and ensure it's closed afterwards.
2813 file and ensure it's closed afterwards.
2809
2814
2810 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2815 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
2811
2816
2812 * IPython/demo.py (Demo.__init__): added support for individually
2817 * IPython/demo.py (Demo.__init__): added support for individually
2813 tagging blocks for automatic execution.
2818 tagging blocks for automatic execution.
2814
2819
2815 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2820 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
2816 syntax-highlighted python sources, requested by John.
2821 syntax-highlighted python sources, requested by John.
2817
2822
2818 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2823 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
2819
2824
2820 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2825 * IPython/demo.py (Demo.again): fix bug where again() blocks after
2821 finishing.
2826 finishing.
2822
2827
2823 * IPython/genutils.py (shlex_split): moved from Magic to here,
2828 * IPython/genutils.py (shlex_split): moved from Magic to here,
2824 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2829 where all 2.2 compatibility stuff lives. I needed it for demo.py.
2825
2830
2826 * IPython/demo.py (Demo.__init__): added support for silent
2831 * IPython/demo.py (Demo.__init__): added support for silent
2827 blocks, improved marks as regexps, docstrings written.
2832 blocks, improved marks as regexps, docstrings written.
2828 (Demo.__init__): better docstring, added support for sys.argv.
2833 (Demo.__init__): better docstring, added support for sys.argv.
2829
2834
2830 * IPython/genutils.py (marquee): little utility used by the demo
2835 * IPython/genutils.py (marquee): little utility used by the demo
2831 code, handy in general.
2836 code, handy in general.
2832
2837
2833 * IPython/demo.py (Demo.__init__): new class for interactive
2838 * IPython/demo.py (Demo.__init__): new class for interactive
2834 demos. Not documented yet, I just wrote it in a hurry for
2839 demos. Not documented yet, I just wrote it in a hurry for
2835 scipy'05. Will docstring later.
2840 scipy'05. Will docstring later.
2836
2841
2837 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2842 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
2838
2843
2839 * IPython/Shell.py (sigint_handler): Drastic simplification which
2844 * IPython/Shell.py (sigint_handler): Drastic simplification which
2840 also seems to make Ctrl-C work correctly across threads! This is
2845 also seems to make Ctrl-C work correctly across threads! This is
2841 so simple, that I can't beleive I'd missed it before. Needs more
2846 so simple, that I can't beleive I'd missed it before. Needs more
2842 testing, though.
2847 testing, though.
2843 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2848 (KBINT): Never mind, revert changes. I'm sure I'd tried something
2844 like this before...
2849 like this before...
2845
2850
2846 * IPython/genutils.py (get_home_dir): add protection against
2851 * IPython/genutils.py (get_home_dir): add protection against
2847 non-dirs in win32 registry.
2852 non-dirs in win32 registry.
2848
2853
2849 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2854 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
2850 bug where dict was mutated while iterating (pysh crash).
2855 bug where dict was mutated while iterating (pysh crash).
2851
2856
2852 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2857 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
2853
2858
2854 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2859 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
2855 spurious newlines added by this routine. After a report by
2860 spurious newlines added by this routine. After a report by
2856 F. Mantegazza.
2861 F. Mantegazza.
2857
2862
2858 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2863 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
2859
2864
2860 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2865 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
2861 calls. These were a leftover from the GTK 1.x days, and can cause
2866 calls. These were a leftover from the GTK 1.x days, and can cause
2862 problems in certain cases (after a report by John Hunter).
2867 problems in certain cases (after a report by John Hunter).
2863
2868
2864 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2869 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
2865 os.getcwd() fails at init time. Thanks to patch from David Remahl
2870 os.getcwd() fails at init time. Thanks to patch from David Remahl
2866 <chmod007-AT-mac.com>.
2871 <chmod007-AT-mac.com>.
2867 (InteractiveShell.__init__): prevent certain special magics from
2872 (InteractiveShell.__init__): prevent certain special magics from
2868 being shadowed by aliases. Closes
2873 being shadowed by aliases. Closes
2869 http://www.scipy.net/roundup/ipython/issue41.
2874 http://www.scipy.net/roundup/ipython/issue41.
2870
2875
2871 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2876 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
2872
2877
2873 * IPython/iplib.py (InteractiveShell.complete): Added new
2878 * IPython/iplib.py (InteractiveShell.complete): Added new
2874 top-level completion method to expose the completion mechanism
2879 top-level completion method to expose the completion mechanism
2875 beyond readline-based environments.
2880 beyond readline-based environments.
2876
2881
2877 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2882 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
2878
2883
2879 * tools/ipsvnc (svnversion): fix svnversion capture.
2884 * tools/ipsvnc (svnversion): fix svnversion capture.
2880
2885
2881 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2886 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
2882 attribute to self, which was missing. Before, it was set by a
2887 attribute to self, which was missing. Before, it was set by a
2883 routine which in certain cases wasn't being called, so the
2888 routine which in certain cases wasn't being called, so the
2884 instance could end up missing the attribute. This caused a crash.
2889 instance could end up missing the attribute. This caused a crash.
2885 Closes http://www.scipy.net/roundup/ipython/issue40.
2890 Closes http://www.scipy.net/roundup/ipython/issue40.
2886
2891
2887 2005-08-16 Fernando Perez <fperez@colorado.edu>
2892 2005-08-16 Fernando Perez <fperez@colorado.edu>
2888
2893
2889 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2894 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
2890 contains non-string attribute. Closes
2895 contains non-string attribute. Closes
2891 http://www.scipy.net/roundup/ipython/issue38.
2896 http://www.scipy.net/roundup/ipython/issue38.
2892
2897
2893 2005-08-14 Fernando Perez <fperez@colorado.edu>
2898 2005-08-14 Fernando Perez <fperez@colorado.edu>
2894
2899
2895 * tools/ipsvnc: Minor improvements, to add changeset info.
2900 * tools/ipsvnc: Minor improvements, to add changeset info.
2896
2901
2897 2005-08-12 Fernando Perez <fperez@colorado.edu>
2902 2005-08-12 Fernando Perez <fperez@colorado.edu>
2898
2903
2899 * IPython/iplib.py (runsource): remove self.code_to_run_src
2904 * IPython/iplib.py (runsource): remove self.code_to_run_src
2900 attribute. I realized this is nothing more than
2905 attribute. I realized this is nothing more than
2901 '\n'.join(self.buffer), and having the same data in two different
2906 '\n'.join(self.buffer), and having the same data in two different
2902 places is just asking for synchronization bugs. This may impact
2907 places is just asking for synchronization bugs. This may impact
2903 people who have custom exception handlers, so I need to warn
2908 people who have custom exception handlers, so I need to warn
2904 ipython-dev about it (F. Mantegazza may use them).
2909 ipython-dev about it (F. Mantegazza may use them).
2905
2910
2906 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2911 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
2907
2912
2908 * IPython/genutils.py: fix 2.2 compatibility (generators)
2913 * IPython/genutils.py: fix 2.2 compatibility (generators)
2909
2914
2910 2005-07-18 Fernando Perez <fperez@colorado.edu>
2915 2005-07-18 Fernando Perez <fperez@colorado.edu>
2911
2916
2912 * IPython/genutils.py (get_home_dir): fix to help users with
2917 * IPython/genutils.py (get_home_dir): fix to help users with
2913 invalid $HOME under win32.
2918 invalid $HOME under win32.
2914
2919
2915 2005-07-17 Fernando Perez <fperez@colorado.edu>
2920 2005-07-17 Fernando Perez <fperez@colorado.edu>
2916
2921
2917 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2922 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
2918 some old hacks and clean up a bit other routines; code should be
2923 some old hacks and clean up a bit other routines; code should be
2919 simpler and a bit faster.
2924 simpler and a bit faster.
2920
2925
2921 * IPython/iplib.py (interact): removed some last-resort attempts
2926 * IPython/iplib.py (interact): removed some last-resort attempts
2922 to survive broken stdout/stderr. That code was only making it
2927 to survive broken stdout/stderr. That code was only making it
2923 harder to abstract out the i/o (necessary for gui integration),
2928 harder to abstract out the i/o (necessary for gui integration),
2924 and the crashes it could prevent were extremely rare in practice
2929 and the crashes it could prevent were extremely rare in practice
2925 (besides being fully user-induced in a pretty violent manner).
2930 (besides being fully user-induced in a pretty violent manner).
2926
2931
2927 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2932 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
2928 Nothing major yet, but the code is simpler to read; this should
2933 Nothing major yet, but the code is simpler to read; this should
2929 make it easier to do more serious modifications in the future.
2934 make it easier to do more serious modifications in the future.
2930
2935
2931 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2936 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
2932 which broke in .15 (thanks to a report by Ville).
2937 which broke in .15 (thanks to a report by Ville).
2933
2938
2934 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2939 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
2935 be quite correct, I know next to nothing about unicode). This
2940 be quite correct, I know next to nothing about unicode). This
2936 will allow unicode strings to be used in prompts, amongst other
2941 will allow unicode strings to be used in prompts, amongst other
2937 cases. It also will prevent ipython from crashing when unicode
2942 cases. It also will prevent ipython from crashing when unicode
2938 shows up unexpectedly in many places. If ascii encoding fails, we
2943 shows up unexpectedly in many places. If ascii encoding fails, we
2939 assume utf_8. Currently the encoding is not a user-visible
2944 assume utf_8. Currently the encoding is not a user-visible
2940 setting, though it could be made so if there is demand for it.
2945 setting, though it could be made so if there is demand for it.
2941
2946
2942 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2947 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
2943
2948
2944 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2949 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
2945
2950
2946 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2951 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
2947
2952
2948 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2953 * IPython/genutils.py: Add 2.2 compatibility here, so all other
2949 code can work transparently for 2.2/2.3.
2954 code can work transparently for 2.2/2.3.
2950
2955
2951 2005-07-16 Fernando Perez <fperez@colorado.edu>
2956 2005-07-16 Fernando Perez <fperez@colorado.edu>
2952
2957
2953 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2958 * IPython/ultraTB.py (ExceptionColors): Make a global variable
2954 out of the color scheme table used for coloring exception
2959 out of the color scheme table used for coloring exception
2955 tracebacks. This allows user code to add new schemes at runtime.
2960 tracebacks. This allows user code to add new schemes at runtime.
2956 This is a minimally modified version of the patch at
2961 This is a minimally modified version of the patch at
2957 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2962 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
2958 for the contribution.
2963 for the contribution.
2959
2964
2960 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2965 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
2961 slightly modified version of the patch in
2966 slightly modified version of the patch in
2962 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2967 http://www.scipy.net/roundup/ipython/issue34, which also allows me
2963 to remove the previous try/except solution (which was costlier).
2968 to remove the previous try/except solution (which was costlier).
2964 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2969 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
2965
2970
2966 2005-06-08 Fernando Perez <fperez@colorado.edu>
2971 2005-06-08 Fernando Perez <fperez@colorado.edu>
2967
2972
2968 * IPython/iplib.py (write/write_err): Add methods to abstract all
2973 * IPython/iplib.py (write/write_err): Add methods to abstract all
2969 I/O a bit more.
2974 I/O a bit more.
2970
2975
2971 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2976 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
2972 warning, reported by Aric Hagberg, fix by JD Hunter.
2977 warning, reported by Aric Hagberg, fix by JD Hunter.
2973
2978
2974 2005-06-02 *** Released version 0.6.15
2979 2005-06-02 *** Released version 0.6.15
2975
2980
2976 2005-06-01 Fernando Perez <fperez@colorado.edu>
2981 2005-06-01 Fernando Perez <fperez@colorado.edu>
2977
2982
2978 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2983 * IPython/iplib.py (MagicCompleter.file_matches): Fix
2979 tab-completion of filenames within open-quoted strings. Note that
2984 tab-completion of filenames within open-quoted strings. Note that
2980 this requires that in ~/.ipython/ipythonrc, users change the
2985 this requires that in ~/.ipython/ipythonrc, users change the
2981 readline delimiters configuration to read:
2986 readline delimiters configuration to read:
2982
2987
2983 readline_remove_delims -/~
2988 readline_remove_delims -/~
2984
2989
2985
2990
2986 2005-05-31 *** Released version 0.6.14
2991 2005-05-31 *** Released version 0.6.14
2987
2992
2988 2005-05-29 Fernando Perez <fperez@colorado.edu>
2993 2005-05-29 Fernando Perez <fperez@colorado.edu>
2989
2994
2990 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2995 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
2991 with files not on the filesystem. Reported by Eliyahu Sandler
2996 with files not on the filesystem. Reported by Eliyahu Sandler
2992 <eli@gondolin.net>
2997 <eli@gondolin.net>
2993
2998
2994 2005-05-22 Fernando Perez <fperez@colorado.edu>
2999 2005-05-22 Fernando Perez <fperez@colorado.edu>
2995
3000
2996 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
3001 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
2997 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
3002 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
2998
3003
2999 2005-05-19 Fernando Perez <fperez@colorado.edu>
3004 2005-05-19 Fernando Perez <fperez@colorado.edu>
3000
3005
3001 * IPython/iplib.py (safe_execfile): close a file which could be
3006 * IPython/iplib.py (safe_execfile): close a file which could be
3002 left open (causing problems in win32, which locks open files).
3007 left open (causing problems in win32, which locks open files).
3003 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3008 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
3004
3009
3005 2005-05-18 Fernando Perez <fperez@colorado.edu>
3010 2005-05-18 Fernando Perez <fperez@colorado.edu>
3006
3011
3007 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3012 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
3008 keyword arguments correctly to safe_execfile().
3013 keyword arguments correctly to safe_execfile().
3009
3014
3010 2005-05-13 Fernando Perez <fperez@colorado.edu>
3015 2005-05-13 Fernando Perez <fperez@colorado.edu>
3011
3016
3012 * ipython.1: Added info about Qt to manpage, and threads warning
3017 * ipython.1: Added info about Qt to manpage, and threads warning
3013 to usage page (invoked with --help).
3018 to usage page (invoked with --help).
3014
3019
3015 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3020 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
3016 new matcher (it goes at the end of the priority list) to do
3021 new matcher (it goes at the end of the priority list) to do
3017 tab-completion on named function arguments. Submitted by George
3022 tab-completion on named function arguments. Submitted by George
3018 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3023 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
3019 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3024 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
3020 for more details.
3025 for more details.
3021
3026
3022 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3027 * IPython/Magic.py (magic_run): Added new -e flag to ignore
3023 SystemExit exceptions in the script being run. Thanks to a report
3028 SystemExit exceptions in the script being run. Thanks to a report
3024 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3029 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
3025 producing very annoying behavior when running unit tests.
3030 producing very annoying behavior when running unit tests.
3026
3031
3027 2005-05-12 Fernando Perez <fperez@colorado.edu>
3032 2005-05-12 Fernando Perez <fperez@colorado.edu>
3028
3033
3029 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3034 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
3030 which I'd broken (again) due to a changed regexp. In the process,
3035 which I'd broken (again) due to a changed regexp. In the process,
3031 added ';' as an escape to auto-quote the whole line without
3036 added ';' as an escape to auto-quote the whole line without
3032 splitting its arguments. Thanks to a report by Jerry McRae
3037 splitting its arguments. Thanks to a report by Jerry McRae
3033 <qrs0xyc02-AT-sneakemail.com>.
3038 <qrs0xyc02-AT-sneakemail.com>.
3034
3039
3035 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3040 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
3036 possible crashes caused by a TokenError. Reported by Ed Schofield
3041 possible crashes caused by a TokenError. Reported by Ed Schofield
3037 <schofield-AT-ftw.at>.
3042 <schofield-AT-ftw.at>.
3038
3043
3039 2005-05-06 Fernando Perez <fperez@colorado.edu>
3044 2005-05-06 Fernando Perez <fperez@colorado.edu>
3040
3045
3041 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3046 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
3042
3047
3043 2005-04-29 Fernando Perez <fperez@colorado.edu>
3048 2005-04-29 Fernando Perez <fperez@colorado.edu>
3044
3049
3045 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3050 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
3046 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3051 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
3047 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3052 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
3048 which provides support for Qt interactive usage (similar to the
3053 which provides support for Qt interactive usage (similar to the
3049 existing one for WX and GTK). This had been often requested.
3054 existing one for WX and GTK). This had been often requested.
3050
3055
3051 2005-04-14 *** Released version 0.6.13
3056 2005-04-14 *** Released version 0.6.13
3052
3057
3053 2005-04-08 Fernando Perez <fperez@colorado.edu>
3058 2005-04-08 Fernando Perez <fperez@colorado.edu>
3054
3059
3055 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3060 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
3056 from _ofind, which gets called on almost every input line. Now,
3061 from _ofind, which gets called on almost every input line. Now,
3057 we only try to get docstrings if they are actually going to be
3062 we only try to get docstrings if they are actually going to be
3058 used (the overhead of fetching unnecessary docstrings can be
3063 used (the overhead of fetching unnecessary docstrings can be
3059 noticeable for certain objects, such as Pyro proxies).
3064 noticeable for certain objects, such as Pyro proxies).
3060
3065
3061 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3066 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
3062 for completers. For some reason I had been passing them the state
3067 for completers. For some reason I had been passing them the state
3063 variable, which completers never actually need, and was in
3068 variable, which completers never actually need, and was in
3064 conflict with the rlcompleter API. Custom completers ONLY need to
3069 conflict with the rlcompleter API. Custom completers ONLY need to
3065 take the text parameter.
3070 take the text parameter.
3066
3071
3067 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3072 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
3068 work correctly in pysh. I've also moved all the logic which used
3073 work correctly in pysh. I've also moved all the logic which used
3069 to be in pysh.py here, which will prevent problems with future
3074 to be in pysh.py here, which will prevent problems with future
3070 upgrades. However, this time I must warn users to update their
3075 upgrades. However, this time I must warn users to update their
3071 pysh profile to include the line
3076 pysh profile to include the line
3072
3077
3073 import_all IPython.Extensions.InterpreterExec
3078 import_all IPython.Extensions.InterpreterExec
3074
3079
3075 because otherwise things won't work for them. They MUST also
3080 because otherwise things won't work for them. They MUST also
3076 delete pysh.py and the line
3081 delete pysh.py and the line
3077
3082
3078 execfile pysh.py
3083 execfile pysh.py
3079
3084
3080 from their ipythonrc-pysh.
3085 from their ipythonrc-pysh.
3081
3086
3082 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3087 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
3083 robust in the face of objects whose dir() returns non-strings
3088 robust in the face of objects whose dir() returns non-strings
3084 (which it shouldn't, but some broken libs like ITK do). Thanks to
3089 (which it shouldn't, but some broken libs like ITK do). Thanks to
3085 a patch by John Hunter (implemented differently, though). Also
3090 a patch by John Hunter (implemented differently, though). Also
3086 minor improvements by using .extend instead of + on lists.
3091 minor improvements by using .extend instead of + on lists.
3087
3092
3088 * pysh.py:
3093 * pysh.py:
3089
3094
3090 2005-04-06 Fernando Perez <fperez@colorado.edu>
3095 2005-04-06 Fernando Perez <fperez@colorado.edu>
3091
3096
3092 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3097 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
3093 by default, so that all users benefit from it. Those who don't
3098 by default, so that all users benefit from it. Those who don't
3094 want it can still turn it off.
3099 want it can still turn it off.
3095
3100
3096 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3101 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
3097 config file, I'd forgotten about this, so users were getting it
3102 config file, I'd forgotten about this, so users were getting it
3098 off by default.
3103 off by default.
3099
3104
3100 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3105 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
3101 consistency. Now magics can be called in multiline statements,
3106 consistency. Now magics can be called in multiline statements,
3102 and python variables can be expanded in magic calls via $var.
3107 and python variables can be expanded in magic calls via $var.
3103 This makes the magic system behave just like aliases or !system
3108 This makes the magic system behave just like aliases or !system
3104 calls.
3109 calls.
3105
3110
3106 2005-03-28 Fernando Perez <fperez@colorado.edu>
3111 2005-03-28 Fernando Perez <fperez@colorado.edu>
3107
3112
3108 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3113 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
3109 expensive string additions for building command. Add support for
3114 expensive string additions for building command. Add support for
3110 trailing ';' when autocall is used.
3115 trailing ';' when autocall is used.
3111
3116
3112 2005-03-26 Fernando Perez <fperez@colorado.edu>
3117 2005-03-26 Fernando Perez <fperez@colorado.edu>
3113
3118
3114 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3119 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
3115 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3120 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
3116 ipython.el robust against prompts with any number of spaces
3121 ipython.el robust against prompts with any number of spaces
3117 (including 0) after the ':' character.
3122 (including 0) after the ':' character.
3118
3123
3119 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3124 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
3120 continuation prompt, which misled users to think the line was
3125 continuation prompt, which misled users to think the line was
3121 already indented. Closes debian Bug#300847, reported to me by
3126 already indented. Closes debian Bug#300847, reported to me by
3122 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3127 Norbert Tretkowski <tretkowski-AT-inittab.de>.
3123
3128
3124 2005-03-23 Fernando Perez <fperez@colorado.edu>
3129 2005-03-23 Fernando Perez <fperez@colorado.edu>
3125
3130
3126 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3131 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
3127 properly aligned if they have embedded newlines.
3132 properly aligned if they have embedded newlines.
3128
3133
3129 * IPython/iplib.py (runlines): Add a public method to expose
3134 * IPython/iplib.py (runlines): Add a public method to expose
3130 IPython's code execution machinery, so that users can run strings
3135 IPython's code execution machinery, so that users can run strings
3131 as if they had been typed at the prompt interactively.
3136 as if they had been typed at the prompt interactively.
3132 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3137 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
3133 methods which can call the system shell, but with python variable
3138 methods which can call the system shell, but with python variable
3134 expansion. The three such methods are: __IPYTHON__.system,
3139 expansion. The three such methods are: __IPYTHON__.system,
3135 .getoutput and .getoutputerror. These need to be documented in a
3140 .getoutput and .getoutputerror. These need to be documented in a
3136 'public API' section (to be written) of the manual.
3141 'public API' section (to be written) of the manual.
3137
3142
3138 2005-03-20 Fernando Perez <fperez@colorado.edu>
3143 2005-03-20 Fernando Perez <fperez@colorado.edu>
3139
3144
3140 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3145 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
3141 for custom exception handling. This is quite powerful, and it
3146 for custom exception handling. This is quite powerful, and it
3142 allows for user-installable exception handlers which can trap
3147 allows for user-installable exception handlers which can trap
3143 custom exceptions at runtime and treat them separately from
3148 custom exceptions at runtime and treat them separately from
3144 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3149 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
3145 Mantegazza <mantegazza-AT-ill.fr>.
3150 Mantegazza <mantegazza-AT-ill.fr>.
3146 (InteractiveShell.set_custom_completer): public API function to
3151 (InteractiveShell.set_custom_completer): public API function to
3147 add new completers at runtime.
3152 add new completers at runtime.
3148
3153
3149 2005-03-19 Fernando Perez <fperez@colorado.edu>
3154 2005-03-19 Fernando Perez <fperez@colorado.edu>
3150
3155
3151 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3156 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
3152 allow objects which provide their docstrings via non-standard
3157 allow objects which provide their docstrings via non-standard
3153 mechanisms (like Pyro proxies) to still be inspected by ipython's
3158 mechanisms (like Pyro proxies) to still be inspected by ipython's
3154 ? system.
3159 ? system.
3155
3160
3156 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3161 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
3157 automatic capture system. I tried quite hard to make it work
3162 automatic capture system. I tried quite hard to make it work
3158 reliably, and simply failed. I tried many combinations with the
3163 reliably, and simply failed. I tried many combinations with the
3159 subprocess module, but eventually nothing worked in all needed
3164 subprocess module, but eventually nothing worked in all needed
3160 cases (not blocking stdin for the child, duplicating stdout
3165 cases (not blocking stdin for the child, duplicating stdout
3161 without blocking, etc). The new %sc/%sx still do capture to these
3166 without blocking, etc). The new %sc/%sx still do capture to these
3162 magical list/string objects which make shell use much more
3167 magical list/string objects which make shell use much more
3163 conveninent, so not all is lost.
3168 conveninent, so not all is lost.
3164
3169
3165 XXX - FIX MANUAL for the change above!
3170 XXX - FIX MANUAL for the change above!
3166
3171
3167 (runsource): I copied code.py's runsource() into ipython to modify
3172 (runsource): I copied code.py's runsource() into ipython to modify
3168 it a bit. Now the code object and source to be executed are
3173 it a bit. Now the code object and source to be executed are
3169 stored in ipython. This makes this info accessible to third-party
3174 stored in ipython. This makes this info accessible to third-party
3170 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3175 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
3171 Mantegazza <mantegazza-AT-ill.fr>.
3176 Mantegazza <mantegazza-AT-ill.fr>.
3172
3177
3173 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3178 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
3174 history-search via readline (like C-p/C-n). I'd wanted this for a
3179 history-search via readline (like C-p/C-n). I'd wanted this for a
3175 long time, but only recently found out how to do it. For users
3180 long time, but only recently found out how to do it. For users
3176 who already have their ipythonrc files made and want this, just
3181 who already have their ipythonrc files made and want this, just
3177 add:
3182 add:
3178
3183
3179 readline_parse_and_bind "\e[A": history-search-backward
3184 readline_parse_and_bind "\e[A": history-search-backward
3180 readline_parse_and_bind "\e[B": history-search-forward
3185 readline_parse_and_bind "\e[B": history-search-forward
3181
3186
3182 2005-03-18 Fernando Perez <fperez@colorado.edu>
3187 2005-03-18 Fernando Perez <fperez@colorado.edu>
3183
3188
3184 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3189 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
3185 LSString and SList classes which allow transparent conversions
3190 LSString and SList classes which allow transparent conversions
3186 between list mode and whitespace-separated string.
3191 between list mode and whitespace-separated string.
3187 (magic_r): Fix recursion problem in %r.
3192 (magic_r): Fix recursion problem in %r.
3188
3193
3189 * IPython/genutils.py (LSString): New class to be used for
3194 * IPython/genutils.py (LSString): New class to be used for
3190 automatic storage of the results of all alias/system calls in _o
3195 automatic storage of the results of all alias/system calls in _o
3191 and _e (stdout/err). These provide a .l/.list attribute which
3196 and _e (stdout/err). These provide a .l/.list attribute which
3192 does automatic splitting on newlines. This means that for most
3197 does automatic splitting on newlines. This means that for most
3193 uses, you'll never need to do capturing of output with %sc/%sx
3198 uses, you'll never need to do capturing of output with %sc/%sx
3194 anymore, since ipython keeps this always done for you. Note that
3199 anymore, since ipython keeps this always done for you. Note that
3195 only the LAST results are stored, the _o/e variables are
3200 only the LAST results are stored, the _o/e variables are
3196 overwritten on each call. If you need to save their contents
3201 overwritten on each call. If you need to save their contents
3197 further, simply bind them to any other name.
3202 further, simply bind them to any other name.
3198
3203
3199 2005-03-17 Fernando Perez <fperez@colorado.edu>
3204 2005-03-17 Fernando Perez <fperez@colorado.edu>
3200
3205
3201 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3206 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
3202 prompt namespace handling.
3207 prompt namespace handling.
3203
3208
3204 2005-03-16 Fernando Perez <fperez@colorado.edu>
3209 2005-03-16 Fernando Perez <fperez@colorado.edu>
3205
3210
3206 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3211 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
3207 classic prompts to be '>>> ' (final space was missing, and it
3212 classic prompts to be '>>> ' (final space was missing, and it
3208 trips the emacs python mode).
3213 trips the emacs python mode).
3209 (BasePrompt.__str__): Added safe support for dynamic prompt
3214 (BasePrompt.__str__): Added safe support for dynamic prompt
3210 strings. Now you can set your prompt string to be '$x', and the
3215 strings. Now you can set your prompt string to be '$x', and the
3211 value of x will be printed from your interactive namespace. The
3216 value of x will be printed from your interactive namespace. The
3212 interpolation syntax includes the full Itpl support, so
3217 interpolation syntax includes the full Itpl support, so
3213 ${foo()+x+bar()} is a valid prompt string now, and the function
3218 ${foo()+x+bar()} is a valid prompt string now, and the function
3214 calls will be made at runtime.
3219 calls will be made at runtime.
3215
3220
3216 2005-03-15 Fernando Perez <fperez@colorado.edu>
3221 2005-03-15 Fernando Perez <fperez@colorado.edu>
3217
3222
3218 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3223 * IPython/Magic.py (magic_history): renamed %hist to %history, to
3219 avoid name clashes in pylab. %hist still works, it just forwards
3224 avoid name clashes in pylab. %hist still works, it just forwards
3220 the call to %history.
3225 the call to %history.
3221
3226
3222 2005-03-02 *** Released version 0.6.12
3227 2005-03-02 *** Released version 0.6.12
3223
3228
3224 2005-03-02 Fernando Perez <fperez@colorado.edu>
3229 2005-03-02 Fernando Perez <fperez@colorado.edu>
3225
3230
3226 * IPython/iplib.py (handle_magic): log magic calls properly as
3231 * IPython/iplib.py (handle_magic): log magic calls properly as
3227 ipmagic() function calls.
3232 ipmagic() function calls.
3228
3233
3229 * IPython/Magic.py (magic_time): Improved %time to support
3234 * IPython/Magic.py (magic_time): Improved %time to support
3230 statements and provide wall-clock as well as CPU time.
3235 statements and provide wall-clock as well as CPU time.
3231
3236
3232 2005-02-27 Fernando Perez <fperez@colorado.edu>
3237 2005-02-27 Fernando Perez <fperez@colorado.edu>
3233
3238
3234 * IPython/hooks.py: New hooks module, to expose user-modifiable
3239 * IPython/hooks.py: New hooks module, to expose user-modifiable
3235 IPython functionality in a clean manner. For now only the editor
3240 IPython functionality in a clean manner. For now only the editor
3236 hook is actually written, and other thigns which I intend to turn
3241 hook is actually written, and other thigns which I intend to turn
3237 into proper hooks aren't yet there. The display and prefilter
3242 into proper hooks aren't yet there. The display and prefilter
3238 stuff, for example, should be hooks. But at least now the
3243 stuff, for example, should be hooks. But at least now the
3239 framework is in place, and the rest can be moved here with more
3244 framework is in place, and the rest can be moved here with more
3240 time later. IPython had had a .hooks variable for a long time for
3245 time later. IPython had had a .hooks variable for a long time for
3241 this purpose, but I'd never actually used it for anything.
3246 this purpose, but I'd never actually used it for anything.
3242
3247
3243 2005-02-26 Fernando Perez <fperez@colorado.edu>
3248 2005-02-26 Fernando Perez <fperez@colorado.edu>
3244
3249
3245 * IPython/ipmaker.py (make_IPython): make the default ipython
3250 * IPython/ipmaker.py (make_IPython): make the default ipython
3246 directory be called _ipython under win32, to follow more the
3251 directory be called _ipython under win32, to follow more the
3247 naming peculiarities of that platform (where buggy software like
3252 naming peculiarities of that platform (where buggy software like
3248 Visual Sourcesafe breaks with .named directories). Reported by
3253 Visual Sourcesafe breaks with .named directories). Reported by
3249 Ville Vainio.
3254 Ville Vainio.
3250
3255
3251 2005-02-23 Fernando Perez <fperez@colorado.edu>
3256 2005-02-23 Fernando Perez <fperez@colorado.edu>
3252
3257
3253 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3258 * IPython/iplib.py (InteractiveShell.__init__): removed a few
3254 auto_aliases for win32 which were causing problems. Users can
3259 auto_aliases for win32 which were causing problems. Users can
3255 define the ones they personally like.
3260 define the ones they personally like.
3256
3261
3257 2005-02-21 Fernando Perez <fperez@colorado.edu>
3262 2005-02-21 Fernando Perez <fperez@colorado.edu>
3258
3263
3259 * IPython/Magic.py (magic_time): new magic to time execution of
3264 * IPython/Magic.py (magic_time): new magic to time execution of
3260 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3265 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
3261
3266
3262 2005-02-19 Fernando Perez <fperez@colorado.edu>
3267 2005-02-19 Fernando Perez <fperez@colorado.edu>
3263
3268
3264 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3269 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
3265 into keys (for prompts, for example).
3270 into keys (for prompts, for example).
3266
3271
3267 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3272 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
3268 prompts in case users want them. This introduces a small behavior
3273 prompts in case users want them. This introduces a small behavior
3269 change: ipython does not automatically add a space to all prompts
3274 change: ipython does not automatically add a space to all prompts
3270 anymore. To get the old prompts with a space, users should add it
3275 anymore. To get the old prompts with a space, users should add it
3271 manually to their ipythonrc file, so for example prompt_in1 should
3276 manually to their ipythonrc file, so for example prompt_in1 should
3272 now read 'In [\#]: ' instead of 'In [\#]:'.
3277 now read 'In [\#]: ' instead of 'In [\#]:'.
3273 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3278 (BasePrompt.__init__): New option prompts_pad_left (only in rc
3274 file) to control left-padding of secondary prompts.
3279 file) to control left-padding of secondary prompts.
3275
3280
3276 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3281 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
3277 the profiler can't be imported. Fix for Debian, which removed
3282 the profiler can't be imported. Fix for Debian, which removed
3278 profile.py because of License issues. I applied a slightly
3283 profile.py because of License issues. I applied a slightly
3279 modified version of the original Debian patch at
3284 modified version of the original Debian patch at
3280 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3285 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
3281
3286
3282 2005-02-17 Fernando Perez <fperez@colorado.edu>
3287 2005-02-17 Fernando Perez <fperez@colorado.edu>
3283
3288
3284 * IPython/genutils.py (native_line_ends): Fix bug which would
3289 * IPython/genutils.py (native_line_ends): Fix bug which would
3285 cause improper line-ends under win32 b/c I was not opening files
3290 cause improper line-ends under win32 b/c I was not opening files
3286 in binary mode. Bug report and fix thanks to Ville.
3291 in binary mode. Bug report and fix thanks to Ville.
3287
3292
3288 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3293 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
3289 trying to catch spurious foo[1] autocalls. My fix actually broke
3294 trying to catch spurious foo[1] autocalls. My fix actually broke
3290 ',/' autoquote/call with explicit escape (bad regexp).
3295 ',/' autoquote/call with explicit escape (bad regexp).
3291
3296
3292 2005-02-15 *** Released version 0.6.11
3297 2005-02-15 *** Released version 0.6.11
3293
3298
3294 2005-02-14 Fernando Perez <fperez@colorado.edu>
3299 2005-02-14 Fernando Perez <fperez@colorado.edu>
3295
3300
3296 * IPython/background_jobs.py: New background job management
3301 * IPython/background_jobs.py: New background job management
3297 subsystem. This is implemented via a new set of classes, and
3302 subsystem. This is implemented via a new set of classes, and
3298 IPython now provides a builtin 'jobs' object for background job
3303 IPython now provides a builtin 'jobs' object for background job
3299 execution. A convenience %bg magic serves as a lightweight
3304 execution. A convenience %bg magic serves as a lightweight
3300 frontend for starting the more common type of calls. This was
3305 frontend for starting the more common type of calls. This was
3301 inspired by discussions with B. Granger and the BackgroundCommand
3306 inspired by discussions with B. Granger and the BackgroundCommand
3302 class described in the book Python Scripting for Computational
3307 class described in the book Python Scripting for Computational
3303 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3308 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
3304 (although ultimately no code from this text was used, as IPython's
3309 (although ultimately no code from this text was used, as IPython's
3305 system is a separate implementation).
3310 system is a separate implementation).
3306
3311
3307 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3312 * IPython/iplib.py (MagicCompleter.python_matches): add new option
3308 to control the completion of single/double underscore names
3313 to control the completion of single/double underscore names
3309 separately. As documented in the example ipytonrc file, the
3314 separately. As documented in the example ipytonrc file, the
3310 readline_omit__names variable can now be set to 2, to omit even
3315 readline_omit__names variable can now be set to 2, to omit even
3311 single underscore names. Thanks to a patch by Brian Wong
3316 single underscore names. Thanks to a patch by Brian Wong
3312 <BrianWong-AT-AirgoNetworks.Com>.
3317 <BrianWong-AT-AirgoNetworks.Com>.
3313 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3318 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
3314 be autocalled as foo([1]) if foo were callable. A problem for
3319 be autocalled as foo([1]) if foo were callable. A problem for
3315 things which are both callable and implement __getitem__.
3320 things which are both callable and implement __getitem__.
3316 (init_readline): Fix autoindentation for win32. Thanks to a patch
3321 (init_readline): Fix autoindentation for win32. Thanks to a patch
3317 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3322 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
3318
3323
3319 2005-02-12 Fernando Perez <fperez@colorado.edu>
3324 2005-02-12 Fernando Perez <fperez@colorado.edu>
3320
3325
3321 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3326 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
3322 which I had written long ago to sort out user error messages which
3327 which I had written long ago to sort out user error messages which
3323 may occur during startup. This seemed like a good idea initially,
3328 may occur during startup. This seemed like a good idea initially,
3324 but it has proven a disaster in retrospect. I don't want to
3329 but it has proven a disaster in retrospect. I don't want to
3325 change much code for now, so my fix is to set the internal 'debug'
3330 change much code for now, so my fix is to set the internal 'debug'
3326 flag to true everywhere, whose only job was precisely to control
3331 flag to true everywhere, whose only job was precisely to control
3327 this subsystem. This closes issue 28 (as well as avoiding all
3332 this subsystem. This closes issue 28 (as well as avoiding all
3328 sorts of strange hangups which occur from time to time).
3333 sorts of strange hangups which occur from time to time).
3329
3334
3330 2005-02-07 Fernando Perez <fperez@colorado.edu>
3335 2005-02-07 Fernando Perez <fperez@colorado.edu>
3331
3336
3332 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3337 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
3333 previous call produced a syntax error.
3338 previous call produced a syntax error.
3334
3339
3335 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3340 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3336 classes without constructor.
3341 classes without constructor.
3337
3342
3338 2005-02-06 Fernando Perez <fperez@colorado.edu>
3343 2005-02-06 Fernando Perez <fperez@colorado.edu>
3339
3344
3340 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3345 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
3341 completions with the results of each matcher, so we return results
3346 completions with the results of each matcher, so we return results
3342 to the user from all namespaces. This breaks with ipython
3347 to the user from all namespaces. This breaks with ipython
3343 tradition, but I think it's a nicer behavior. Now you get all
3348 tradition, but I think it's a nicer behavior. Now you get all
3344 possible completions listed, from all possible namespaces (python,
3349 possible completions listed, from all possible namespaces (python,
3345 filesystem, magics...) After a request by John Hunter
3350 filesystem, magics...) After a request by John Hunter
3346 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3351 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3347
3352
3348 2005-02-05 Fernando Perez <fperez@colorado.edu>
3353 2005-02-05 Fernando Perez <fperez@colorado.edu>
3349
3354
3350 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3355 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
3351 the call had quote characters in it (the quotes were stripped).
3356 the call had quote characters in it (the quotes were stripped).
3352
3357
3353 2005-01-31 Fernando Perez <fperez@colorado.edu>
3358 2005-01-31 Fernando Perez <fperez@colorado.edu>
3354
3359
3355 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3360 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
3356 Itpl.itpl() to make the code more robust against psyco
3361 Itpl.itpl() to make the code more robust against psyco
3357 optimizations.
3362 optimizations.
3358
3363
3359 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3364 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
3360 of causing an exception. Quicker, cleaner.
3365 of causing an exception. Quicker, cleaner.
3361
3366
3362 2005-01-28 Fernando Perez <fperez@colorado.edu>
3367 2005-01-28 Fernando Perez <fperez@colorado.edu>
3363
3368
3364 * scripts/ipython_win_post_install.py (install): hardcode
3369 * scripts/ipython_win_post_install.py (install): hardcode
3365 sys.prefix+'python.exe' as the executable path. It turns out that
3370 sys.prefix+'python.exe' as the executable path. It turns out that
3366 during the post-installation run, sys.executable resolves to the
3371 during the post-installation run, sys.executable resolves to the
3367 name of the binary installer! I should report this as a distutils
3372 name of the binary installer! I should report this as a distutils
3368 bug, I think. I updated the .10 release with this tiny fix, to
3373 bug, I think. I updated the .10 release with this tiny fix, to
3369 avoid annoying the lists further.
3374 avoid annoying the lists further.
3370
3375
3371 2005-01-27 *** Released version 0.6.10
3376 2005-01-27 *** Released version 0.6.10
3372
3377
3373 2005-01-27 Fernando Perez <fperez@colorado.edu>
3378 2005-01-27 Fernando Perez <fperez@colorado.edu>
3374
3379
3375 * IPython/numutils.py (norm): Added 'inf' as optional name for
3380 * IPython/numutils.py (norm): Added 'inf' as optional name for
3376 L-infinity norm, included references to mathworld.com for vector
3381 L-infinity norm, included references to mathworld.com for vector
3377 norm definitions.
3382 norm definitions.
3378 (amin/amax): added amin/amax for array min/max. Similar to what
3383 (amin/amax): added amin/amax for array min/max. Similar to what
3379 pylab ships with after the recent reorganization of names.
3384 pylab ships with after the recent reorganization of names.
3380 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3385 (spike/spike_odd): removed deprecated spike/spike_odd functions.
3381
3386
3382 * ipython.el: committed Alex's recent fixes and improvements.
3387 * ipython.el: committed Alex's recent fixes and improvements.
3383 Tested with python-mode from CVS, and it looks excellent. Since
3388 Tested with python-mode from CVS, and it looks excellent. Since
3384 python-mode hasn't released anything in a while, I'm temporarily
3389 python-mode hasn't released anything in a while, I'm temporarily
3385 putting a copy of today's CVS (v 4.70) of python-mode in:
3390 putting a copy of today's CVS (v 4.70) of python-mode in:
3386 http://ipython.scipy.org/tmp/python-mode.el
3391 http://ipython.scipy.org/tmp/python-mode.el
3387
3392
3388 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3393 * scripts/ipython_win_post_install.py (install): Win32 fix to use
3389 sys.executable for the executable name, instead of assuming it's
3394 sys.executable for the executable name, instead of assuming it's
3390 called 'python.exe' (the post-installer would have produced broken
3395 called 'python.exe' (the post-installer would have produced broken
3391 setups on systems with a differently named python binary).
3396 setups on systems with a differently named python binary).
3392
3397
3393 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3398 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
3394 references to os.linesep, to make the code more
3399 references to os.linesep, to make the code more
3395 platform-independent. This is also part of the win32 coloring
3400 platform-independent. This is also part of the win32 coloring
3396 fixes.
3401 fixes.
3397
3402
3398 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3403 * IPython/genutils.py (page_dumb): Remove attempts to chop long
3399 lines, which actually cause coloring bugs because the length of
3404 lines, which actually cause coloring bugs because the length of
3400 the line is very difficult to correctly compute with embedded
3405 the line is very difficult to correctly compute with embedded
3401 escapes. This was the source of all the coloring problems under
3406 escapes. This was the source of all the coloring problems under
3402 Win32. I think that _finally_, Win32 users have a properly
3407 Win32. I think that _finally_, Win32 users have a properly
3403 working ipython in all respects. This would never have happened
3408 working ipython in all respects. This would never have happened
3404 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3409 if not for Gary Bishop and Viktor Ransmayr's great help and work.
3405
3410
3406 2005-01-26 *** Released version 0.6.9
3411 2005-01-26 *** Released version 0.6.9
3407
3412
3408 2005-01-25 Fernando Perez <fperez@colorado.edu>
3413 2005-01-25 Fernando Perez <fperez@colorado.edu>
3409
3414
3410 * setup.py: finally, we have a true Windows installer, thanks to
3415 * setup.py: finally, we have a true Windows installer, thanks to
3411 the excellent work of Viktor Ransmayr
3416 the excellent work of Viktor Ransmayr
3412 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3417 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
3413 Windows users. The setup routine is quite a bit cleaner thanks to
3418 Windows users. The setup routine is quite a bit cleaner thanks to
3414 this, and the post-install script uses the proper functions to
3419 this, and the post-install script uses the proper functions to
3415 allow a clean de-installation using the standard Windows Control
3420 allow a clean de-installation using the standard Windows Control
3416 Panel.
3421 Panel.
3417
3422
3418 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3423 * IPython/genutils.py (get_home_dir): changed to use the $HOME
3419 environment variable under all OSes (including win32) if
3424 environment variable under all OSes (including win32) if
3420 available. This will give consistency to win32 users who have set
3425 available. This will give consistency to win32 users who have set
3421 this variable for any reason. If os.environ['HOME'] fails, the
3426 this variable for any reason. If os.environ['HOME'] fails, the
3422 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3427 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
3423
3428
3424 2005-01-24 Fernando Perez <fperez@colorado.edu>
3429 2005-01-24 Fernando Perez <fperez@colorado.edu>
3425
3430
3426 * IPython/numutils.py (empty_like): add empty_like(), similar to
3431 * IPython/numutils.py (empty_like): add empty_like(), similar to
3427 zeros_like() but taking advantage of the new empty() Numeric routine.
3432 zeros_like() but taking advantage of the new empty() Numeric routine.
3428
3433
3429 2005-01-23 *** Released version 0.6.8
3434 2005-01-23 *** Released version 0.6.8
3430
3435
3431 2005-01-22 Fernando Perez <fperez@colorado.edu>
3436 2005-01-22 Fernando Perez <fperez@colorado.edu>
3432
3437
3433 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3438 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
3434 automatic show() calls. After discussing things with JDH, it
3439 automatic show() calls. After discussing things with JDH, it
3435 turns out there are too many corner cases where this can go wrong.
3440 turns out there are too many corner cases where this can go wrong.
3436 It's best not to try to be 'too smart', and simply have ipython
3441 It's best not to try to be 'too smart', and simply have ipython
3437 reproduce as much as possible the default behavior of a normal
3442 reproduce as much as possible the default behavior of a normal
3438 python shell.
3443 python shell.
3439
3444
3440 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3445 * IPython/iplib.py (InteractiveShell.__init__): Modified the
3441 line-splitting regexp and _prefilter() to avoid calling getattr()
3446 line-splitting regexp and _prefilter() to avoid calling getattr()
3442 on assignments. This closes
3447 on assignments. This closes
3443 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3448 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
3444 readline uses getattr(), so a simple <TAB> keypress is still
3449 readline uses getattr(), so a simple <TAB> keypress is still
3445 enough to trigger getattr() calls on an object.
3450 enough to trigger getattr() calls on an object.
3446
3451
3447 2005-01-21 Fernando Perez <fperez@colorado.edu>
3452 2005-01-21 Fernando Perez <fperez@colorado.edu>
3448
3453
3449 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3454 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
3450 docstring under pylab so it doesn't mask the original.
3455 docstring under pylab so it doesn't mask the original.
3451
3456
3452 2005-01-21 *** Released version 0.6.7
3457 2005-01-21 *** Released version 0.6.7
3453
3458
3454 2005-01-21 Fernando Perez <fperez@colorado.edu>
3459 2005-01-21 Fernando Perez <fperez@colorado.edu>
3455
3460
3456 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3461 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
3457 signal handling for win32 users in multithreaded mode.
3462 signal handling for win32 users in multithreaded mode.
3458
3463
3459 2005-01-17 Fernando Perez <fperez@colorado.edu>
3464 2005-01-17 Fernando Perez <fperez@colorado.edu>
3460
3465
3461 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3466 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
3462 instances with no __init__. After a crash report by Norbert Nemec
3467 instances with no __init__. After a crash report by Norbert Nemec
3463 <Norbert-AT-nemec-online.de>.
3468 <Norbert-AT-nemec-online.de>.
3464
3469
3465 2005-01-14 Fernando Perez <fperez@colorado.edu>
3470 2005-01-14 Fernando Perez <fperez@colorado.edu>
3466
3471
3467 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3472 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
3468 names for verbose exceptions, when multiple dotted names and the
3473 names for verbose exceptions, when multiple dotted names and the
3469 'parent' object were present on the same line.
3474 'parent' object were present on the same line.
3470
3475
3471 2005-01-11 Fernando Perez <fperez@colorado.edu>
3476 2005-01-11 Fernando Perez <fperez@colorado.edu>
3472
3477
3473 * IPython/genutils.py (flag_calls): new utility to trap and flag
3478 * IPython/genutils.py (flag_calls): new utility to trap and flag
3474 calls in functions. I need it to clean up matplotlib support.
3479 calls in functions. I need it to clean up matplotlib support.
3475 Also removed some deprecated code in genutils.
3480 Also removed some deprecated code in genutils.
3476
3481
3477 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3482 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
3478 that matplotlib scripts called with %run, which don't call show()
3483 that matplotlib scripts called with %run, which don't call show()
3479 themselves, still have their plotting windows open.
3484 themselves, still have their plotting windows open.
3480
3485
3481 2005-01-05 Fernando Perez <fperez@colorado.edu>
3486 2005-01-05 Fernando Perez <fperez@colorado.edu>
3482
3487
3483 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3488 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
3484 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3489 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
3485
3490
3486 2004-12-19 Fernando Perez <fperez@colorado.edu>
3491 2004-12-19 Fernando Perez <fperez@colorado.edu>
3487
3492
3488 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3493 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
3489 parent_runcode, which was an eyesore. The same result can be
3494 parent_runcode, which was an eyesore. The same result can be
3490 obtained with Python's regular superclass mechanisms.
3495 obtained with Python's regular superclass mechanisms.
3491
3496
3492 2004-12-17 Fernando Perez <fperez@colorado.edu>
3497 2004-12-17 Fernando Perez <fperez@colorado.edu>
3493
3498
3494 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3499 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
3495 reported by Prabhu.
3500 reported by Prabhu.
3496 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3501 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
3497 sys.stderr) instead of explicitly calling sys.stderr. This helps
3502 sys.stderr) instead of explicitly calling sys.stderr. This helps
3498 maintain our I/O abstractions clean, for future GUI embeddings.
3503 maintain our I/O abstractions clean, for future GUI embeddings.
3499
3504
3500 * IPython/genutils.py (info): added new utility for sys.stderr
3505 * IPython/genutils.py (info): added new utility for sys.stderr
3501 unified info message handling (thin wrapper around warn()).
3506 unified info message handling (thin wrapper around warn()).
3502
3507
3503 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3508 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
3504 composite (dotted) names on verbose exceptions.
3509 composite (dotted) names on verbose exceptions.
3505 (VerboseTB.nullrepr): harden against another kind of errors which
3510 (VerboseTB.nullrepr): harden against another kind of errors which
3506 Python's inspect module can trigger, and which were crashing
3511 Python's inspect module can trigger, and which were crashing
3507 IPython. Thanks to a report by Marco Lombardi
3512 IPython. Thanks to a report by Marco Lombardi
3508 <mlombard-AT-ma010192.hq.eso.org>.
3513 <mlombard-AT-ma010192.hq.eso.org>.
3509
3514
3510 2004-12-13 *** Released version 0.6.6
3515 2004-12-13 *** Released version 0.6.6
3511
3516
3512 2004-12-12 Fernando Perez <fperez@colorado.edu>
3517 2004-12-12 Fernando Perez <fperez@colorado.edu>
3513
3518
3514 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3519 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
3515 generated by pygtk upon initialization if it was built without
3520 generated by pygtk upon initialization if it was built without
3516 threads (for matplotlib users). After a crash reported by
3521 threads (for matplotlib users). After a crash reported by
3517 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3522 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
3518
3523
3519 * IPython/ipmaker.py (make_IPython): fix small bug in the
3524 * IPython/ipmaker.py (make_IPython): fix small bug in the
3520 import_some parameter for multiple imports.
3525 import_some parameter for multiple imports.
3521
3526
3522 * IPython/iplib.py (ipmagic): simplified the interface of
3527 * IPython/iplib.py (ipmagic): simplified the interface of
3523 ipmagic() to take a single string argument, just as it would be
3528 ipmagic() to take a single string argument, just as it would be
3524 typed at the IPython cmd line.
3529 typed at the IPython cmd line.
3525 (ipalias): Added new ipalias() with an interface identical to
3530 (ipalias): Added new ipalias() with an interface identical to
3526 ipmagic(). This completes exposing a pure python interface to the
3531 ipmagic(). This completes exposing a pure python interface to the
3527 alias and magic system, which can be used in loops or more complex
3532 alias and magic system, which can be used in loops or more complex
3528 code where IPython's automatic line mangling is not active.
3533 code where IPython's automatic line mangling is not active.
3529
3534
3530 * IPython/genutils.py (timing): changed interface of timing to
3535 * IPython/genutils.py (timing): changed interface of timing to
3531 simply run code once, which is the most common case. timings()
3536 simply run code once, which is the most common case. timings()
3532 remains unchanged, for the cases where you want multiple runs.
3537 remains unchanged, for the cases where you want multiple runs.
3533
3538
3534 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3539 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
3535 bug where Python2.2 crashes with exec'ing code which does not end
3540 bug where Python2.2 crashes with exec'ing code which does not end
3536 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3541 in a single newline. Python 2.3 is OK, so I hadn't noticed this
3537 before.
3542 before.
3538
3543
3539 2004-12-10 Fernando Perez <fperez@colorado.edu>
3544 2004-12-10 Fernando Perez <fperez@colorado.edu>
3540
3545
3541 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3546 * IPython/Magic.py (Magic.magic_prun): changed name of option from
3542 -t to -T, to accomodate the new -t flag in %run (the %run and
3547 -t to -T, to accomodate the new -t flag in %run (the %run and
3543 %prun options are kind of intermixed, and it's not easy to change
3548 %prun options are kind of intermixed, and it's not easy to change
3544 this with the limitations of python's getopt).
3549 this with the limitations of python's getopt).
3545
3550
3546 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3551 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
3547 the execution of scripts. It's not as fine-tuned as timeit.py,
3552 the execution of scripts. It's not as fine-tuned as timeit.py,
3548 but it works from inside ipython (and under 2.2, which lacks
3553 but it works from inside ipython (and under 2.2, which lacks
3549 timeit.py). Optionally a number of runs > 1 can be given for
3554 timeit.py). Optionally a number of runs > 1 can be given for
3550 timing very short-running code.
3555 timing very short-running code.
3551
3556
3552 * IPython/genutils.py (uniq_stable): new routine which returns a
3557 * IPython/genutils.py (uniq_stable): new routine which returns a
3553 list of unique elements in any iterable, but in stable order of
3558 list of unique elements in any iterable, but in stable order of
3554 appearance. I needed this for the ultraTB fixes, and it's a handy
3559 appearance. I needed this for the ultraTB fixes, and it's a handy
3555 utility.
3560 utility.
3556
3561
3557 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3562 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
3558 dotted names in Verbose exceptions. This had been broken since
3563 dotted names in Verbose exceptions. This had been broken since
3559 the very start, now x.y will properly be printed in a Verbose
3564 the very start, now x.y will properly be printed in a Verbose
3560 traceback, instead of x being shown and y appearing always as an
3565 traceback, instead of x being shown and y appearing always as an
3561 'undefined global'. Getting this to work was a bit tricky,
3566 'undefined global'. Getting this to work was a bit tricky,
3562 because by default python tokenizers are stateless. Saved by
3567 because by default python tokenizers are stateless. Saved by
3563 python's ability to easily add a bit of state to an arbitrary
3568 python's ability to easily add a bit of state to an arbitrary
3564 function (without needing to build a full-blown callable object).
3569 function (without needing to build a full-blown callable object).
3565
3570
3566 Also big cleanup of this code, which had horrendous runtime
3571 Also big cleanup of this code, which had horrendous runtime
3567 lookups of zillions of attributes for colorization. Moved all
3572 lookups of zillions of attributes for colorization. Moved all
3568 this code into a few templates, which make it cleaner and quicker.
3573 this code into a few templates, which make it cleaner and quicker.
3569
3574
3570 Printout quality was also improved for Verbose exceptions: one
3575 Printout quality was also improved for Verbose exceptions: one
3571 variable per line, and memory addresses are printed (this can be
3576 variable per line, and memory addresses are printed (this can be
3572 quite handy in nasty debugging situations, which is what Verbose
3577 quite handy in nasty debugging situations, which is what Verbose
3573 is for).
3578 is for).
3574
3579
3575 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3580 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
3576 the command line as scripts to be loaded by embedded instances.
3581 the command line as scripts to be loaded by embedded instances.
3577 Doing so has the potential for an infinite recursion if there are
3582 Doing so has the potential for an infinite recursion if there are
3578 exceptions thrown in the process. This fixes a strange crash
3583 exceptions thrown in the process. This fixes a strange crash
3579 reported by Philippe MULLER <muller-AT-irit.fr>.
3584 reported by Philippe MULLER <muller-AT-irit.fr>.
3580
3585
3581 2004-12-09 Fernando Perez <fperez@colorado.edu>
3586 2004-12-09 Fernando Perez <fperez@colorado.edu>
3582
3587
3583 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3588 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
3584 to reflect new names in matplotlib, which now expose the
3589 to reflect new names in matplotlib, which now expose the
3585 matlab-compatible interface via a pylab module instead of the
3590 matlab-compatible interface via a pylab module instead of the
3586 'matlab' name. The new code is backwards compatible, so users of
3591 'matlab' name. The new code is backwards compatible, so users of
3587 all matplotlib versions are OK. Patch by J. Hunter.
3592 all matplotlib versions are OK. Patch by J. Hunter.
3588
3593
3589 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3594 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
3590 of __init__ docstrings for instances (class docstrings are already
3595 of __init__ docstrings for instances (class docstrings are already
3591 automatically printed). Instances with customized docstrings
3596 automatically printed). Instances with customized docstrings
3592 (indep. of the class) are also recognized and all 3 separate
3597 (indep. of the class) are also recognized and all 3 separate
3593 docstrings are printed (instance, class, constructor). After some
3598 docstrings are printed (instance, class, constructor). After some
3594 comments/suggestions by J. Hunter.
3599 comments/suggestions by J. Hunter.
3595
3600
3596 2004-12-05 Fernando Perez <fperez@colorado.edu>
3601 2004-12-05 Fernando Perez <fperez@colorado.edu>
3597
3602
3598 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3603 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
3599 warnings when tab-completion fails and triggers an exception.
3604 warnings when tab-completion fails and triggers an exception.
3600
3605
3601 2004-12-03 Fernando Perez <fperez@colorado.edu>
3606 2004-12-03 Fernando Perez <fperez@colorado.edu>
3602
3607
3603 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3608 * IPython/Magic.py (magic_prun): Fix bug where an exception would
3604 be triggered when using 'run -p'. An incorrect option flag was
3609 be triggered when using 'run -p'. An incorrect option flag was
3605 being set ('d' instead of 'D').
3610 being set ('d' instead of 'D').
3606 (manpage): fix missing escaped \- sign.
3611 (manpage): fix missing escaped \- sign.
3607
3612
3608 2004-11-30 *** Released version 0.6.5
3613 2004-11-30 *** Released version 0.6.5
3609
3614
3610 2004-11-30 Fernando Perez <fperez@colorado.edu>
3615 2004-11-30 Fernando Perez <fperez@colorado.edu>
3611
3616
3612 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3617 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
3613 setting with -d option.
3618 setting with -d option.
3614
3619
3615 * setup.py (docfiles): Fix problem where the doc glob I was using
3620 * setup.py (docfiles): Fix problem where the doc glob I was using
3616 was COMPLETELY BROKEN. It was giving the right files by pure
3621 was COMPLETELY BROKEN. It was giving the right files by pure
3617 accident, but failed once I tried to include ipython.el. Note:
3622 accident, but failed once I tried to include ipython.el. Note:
3618 glob() does NOT allow you to do exclusion on multiple endings!
3623 glob() does NOT allow you to do exclusion on multiple endings!
3619
3624
3620 2004-11-29 Fernando Perez <fperez@colorado.edu>
3625 2004-11-29 Fernando Perez <fperez@colorado.edu>
3621
3626
3622 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3627 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
3623 the manpage as the source. Better formatting & consistency.
3628 the manpage as the source. Better formatting & consistency.
3624
3629
3625 * IPython/Magic.py (magic_run): Added new -d option, to run
3630 * IPython/Magic.py (magic_run): Added new -d option, to run
3626 scripts under the control of the python pdb debugger. Note that
3631 scripts under the control of the python pdb debugger. Note that
3627 this required changing the %prun option -d to -D, to avoid a clash
3632 this required changing the %prun option -d to -D, to avoid a clash
3628 (since %run must pass options to %prun, and getopt is too dumb to
3633 (since %run must pass options to %prun, and getopt is too dumb to
3629 handle options with string values with embedded spaces). Thanks
3634 handle options with string values with embedded spaces). Thanks
3630 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3635 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
3631 (magic_who_ls): added type matching to %who and %whos, so that one
3636 (magic_who_ls): added type matching to %who and %whos, so that one
3632 can filter their output to only include variables of certain
3637 can filter their output to only include variables of certain
3633 types. Another suggestion by Matthew.
3638 types. Another suggestion by Matthew.
3634 (magic_whos): Added memory summaries in kb and Mb for arrays.
3639 (magic_whos): Added memory summaries in kb and Mb for arrays.
3635 (magic_who): Improve formatting (break lines every 9 vars).
3640 (magic_who): Improve formatting (break lines every 9 vars).
3636
3641
3637 2004-11-28 Fernando Perez <fperez@colorado.edu>
3642 2004-11-28 Fernando Perez <fperez@colorado.edu>
3638
3643
3639 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3644 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
3640 cache when empty lines were present.
3645 cache when empty lines were present.
3641
3646
3642 2004-11-24 Fernando Perez <fperez@colorado.edu>
3647 2004-11-24 Fernando Perez <fperez@colorado.edu>
3643
3648
3644 * IPython/usage.py (__doc__): document the re-activated threading
3649 * IPython/usage.py (__doc__): document the re-activated threading
3645 options for WX and GTK.
3650 options for WX and GTK.
3646
3651
3647 2004-11-23 Fernando Perez <fperez@colorado.edu>
3652 2004-11-23 Fernando Perez <fperez@colorado.edu>
3648
3653
3649 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3654 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
3650 the -wthread and -gthread options, along with a new -tk one to try
3655 the -wthread and -gthread options, along with a new -tk one to try
3651 and coordinate Tk threading with wx/gtk. The tk support is very
3656 and coordinate Tk threading with wx/gtk. The tk support is very
3652 platform dependent, since it seems to require Tcl and Tk to be
3657 platform dependent, since it seems to require Tcl and Tk to be
3653 built with threads (Fedora1/2 appears NOT to have it, but in
3658 built with threads (Fedora1/2 appears NOT to have it, but in
3654 Prabhu's Debian boxes it works OK). But even with some Tk
3659 Prabhu's Debian boxes it works OK). But even with some Tk
3655 limitations, this is a great improvement.
3660 limitations, this is a great improvement.
3656
3661
3657 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3662 * IPython/Prompts.py (prompt_specials_color): Added \t for time
3658 info in user prompts. Patch by Prabhu.
3663 info in user prompts. Patch by Prabhu.
3659
3664
3660 2004-11-18 Fernando Perez <fperez@colorado.edu>
3665 2004-11-18 Fernando Perez <fperez@colorado.edu>
3661
3666
3662 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3667 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
3663 EOFErrors and bail, to avoid infinite loops if a non-terminating
3668 EOFErrors and bail, to avoid infinite loops if a non-terminating
3664 file is fed into ipython. Patch submitted in issue 19 by user,
3669 file is fed into ipython. Patch submitted in issue 19 by user,
3665 many thanks.
3670 many thanks.
3666
3671
3667 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3672 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
3668 autoquote/parens in continuation prompts, which can cause lots of
3673 autoquote/parens in continuation prompts, which can cause lots of
3669 problems. Closes roundup issue 20.
3674 problems. Closes roundup issue 20.
3670
3675
3671 2004-11-17 Fernando Perez <fperez@colorado.edu>
3676 2004-11-17 Fernando Perez <fperez@colorado.edu>
3672
3677
3673 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3678 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
3674 reported as debian bug #280505. I'm not sure my local changelog
3679 reported as debian bug #280505. I'm not sure my local changelog
3675 entry has the proper debian format (Jack?).
3680 entry has the proper debian format (Jack?).
3676
3681
3677 2004-11-08 *** Released version 0.6.4
3682 2004-11-08 *** Released version 0.6.4
3678
3683
3679 2004-11-08 Fernando Perez <fperez@colorado.edu>
3684 2004-11-08 Fernando Perez <fperez@colorado.edu>
3680
3685
3681 * IPython/iplib.py (init_readline): Fix exit message for Windows
3686 * IPython/iplib.py (init_readline): Fix exit message for Windows
3682 when readline is active. Thanks to a report by Eric Jones
3687 when readline is active. Thanks to a report by Eric Jones
3683 <eric-AT-enthought.com>.
3688 <eric-AT-enthought.com>.
3684
3689
3685 2004-11-07 Fernando Perez <fperez@colorado.edu>
3690 2004-11-07 Fernando Perez <fperez@colorado.edu>
3686
3691
3687 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3692 * IPython/genutils.py (page): Add a trap for OSError exceptions,
3688 sometimes seen by win2k/cygwin users.
3693 sometimes seen by win2k/cygwin users.
3689
3694
3690 2004-11-06 Fernando Perez <fperez@colorado.edu>
3695 2004-11-06 Fernando Perez <fperez@colorado.edu>
3691
3696
3692 * IPython/iplib.py (interact): Change the handling of %Exit from
3697 * IPython/iplib.py (interact): Change the handling of %Exit from
3693 trying to propagate a SystemExit to an internal ipython flag.
3698 trying to propagate a SystemExit to an internal ipython flag.
3694 This is less elegant than using Python's exception mechanism, but
3699 This is less elegant than using Python's exception mechanism, but
3695 I can't get that to work reliably with threads, so under -pylab
3700 I can't get that to work reliably with threads, so under -pylab
3696 %Exit was hanging IPython. Cross-thread exception handling is
3701 %Exit was hanging IPython. Cross-thread exception handling is
3697 really a bitch. Thaks to a bug report by Stephen Walton
3702 really a bitch. Thaks to a bug report by Stephen Walton
3698 <stephen.walton-AT-csun.edu>.
3703 <stephen.walton-AT-csun.edu>.
3699
3704
3700 2004-11-04 Fernando Perez <fperez@colorado.edu>
3705 2004-11-04 Fernando Perez <fperez@colorado.edu>
3701
3706
3702 * IPython/iplib.py (raw_input_original): store a pointer to the
3707 * IPython/iplib.py (raw_input_original): store a pointer to the
3703 true raw_input to harden against code which can modify it
3708 true raw_input to harden against code which can modify it
3704 (wx.py.PyShell does this and would otherwise crash ipython).
3709 (wx.py.PyShell does this and would otherwise crash ipython).
3705 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3710 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
3706
3711
3707 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3712 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
3708 Ctrl-C problem, which does not mess up the input line.
3713 Ctrl-C problem, which does not mess up the input line.
3709
3714
3710 2004-11-03 Fernando Perez <fperez@colorado.edu>
3715 2004-11-03 Fernando Perez <fperez@colorado.edu>
3711
3716
3712 * IPython/Release.py: Changed licensing to BSD, in all files.
3717 * IPython/Release.py: Changed licensing to BSD, in all files.
3713 (name): lowercase name for tarball/RPM release.
3718 (name): lowercase name for tarball/RPM release.
3714
3719
3715 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3720 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
3716 use throughout ipython.
3721 use throughout ipython.
3717
3722
3718 * IPython/Magic.py (Magic._ofind): Switch to using the new
3723 * IPython/Magic.py (Magic._ofind): Switch to using the new
3719 OInspect.getdoc() function.
3724 OInspect.getdoc() function.
3720
3725
3721 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3726 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
3722 of the line currently being canceled via Ctrl-C. It's extremely
3727 of the line currently being canceled via Ctrl-C. It's extremely
3723 ugly, but I don't know how to do it better (the problem is one of
3728 ugly, but I don't know how to do it better (the problem is one of
3724 handling cross-thread exceptions).
3729 handling cross-thread exceptions).
3725
3730
3726 2004-10-28 Fernando Perez <fperez@colorado.edu>
3731 2004-10-28 Fernando Perez <fperez@colorado.edu>
3727
3732
3728 * IPython/Shell.py (signal_handler): add signal handlers to trap
3733 * IPython/Shell.py (signal_handler): add signal handlers to trap
3729 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3734 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
3730 report by Francesc Alted.
3735 report by Francesc Alted.
3731
3736
3732 2004-10-21 Fernando Perez <fperez@colorado.edu>
3737 2004-10-21 Fernando Perez <fperez@colorado.edu>
3733
3738
3734 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3739 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
3735 to % for pysh syntax extensions.
3740 to % for pysh syntax extensions.
3736
3741
3737 2004-10-09 Fernando Perez <fperez@colorado.edu>
3742 2004-10-09 Fernando Perez <fperez@colorado.edu>
3738
3743
3739 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3744 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
3740 arrays to print a more useful summary, without calling str(arr).
3745 arrays to print a more useful summary, without calling str(arr).
3741 This avoids the problem of extremely lengthy computations which
3746 This avoids the problem of extremely lengthy computations which
3742 occur if arr is large, and appear to the user as a system lockup
3747 occur if arr is large, and appear to the user as a system lockup
3743 with 100% cpu activity. After a suggestion by Kristian Sandberg
3748 with 100% cpu activity. After a suggestion by Kristian Sandberg
3744 <Kristian.Sandberg@colorado.edu>.
3749 <Kristian.Sandberg@colorado.edu>.
3745 (Magic.__init__): fix bug in global magic escapes not being
3750 (Magic.__init__): fix bug in global magic escapes not being
3746 correctly set.
3751 correctly set.
3747
3752
3748 2004-10-08 Fernando Perez <fperez@colorado.edu>
3753 2004-10-08 Fernando Perez <fperez@colorado.edu>
3749
3754
3750 * IPython/Magic.py (__license__): change to absolute imports of
3755 * IPython/Magic.py (__license__): change to absolute imports of
3751 ipython's own internal packages, to start adapting to the absolute
3756 ipython's own internal packages, to start adapting to the absolute
3752 import requirement of PEP-328.
3757 import requirement of PEP-328.
3753
3758
3754 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3759 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
3755 files, and standardize author/license marks through the Release
3760 files, and standardize author/license marks through the Release
3756 module instead of having per/file stuff (except for files with
3761 module instead of having per/file stuff (except for files with
3757 particular licenses, like the MIT/PSF-licensed codes).
3762 particular licenses, like the MIT/PSF-licensed codes).
3758
3763
3759 * IPython/Debugger.py: remove dead code for python 2.1
3764 * IPython/Debugger.py: remove dead code for python 2.1
3760
3765
3761 2004-10-04 Fernando Perez <fperez@colorado.edu>
3766 2004-10-04 Fernando Perez <fperez@colorado.edu>
3762
3767
3763 * IPython/iplib.py (ipmagic): New function for accessing magics
3768 * IPython/iplib.py (ipmagic): New function for accessing magics
3764 via a normal python function call.
3769 via a normal python function call.
3765
3770
3766 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3771 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
3767 from '@' to '%', to accomodate the new @decorator syntax of python
3772 from '@' to '%', to accomodate the new @decorator syntax of python
3768 2.4.
3773 2.4.
3769
3774
3770 2004-09-29 Fernando Perez <fperez@colorado.edu>
3775 2004-09-29 Fernando Perez <fperez@colorado.edu>
3771
3776
3772 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3777 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
3773 matplotlib.use to prevent running scripts which try to switch
3778 matplotlib.use to prevent running scripts which try to switch
3774 interactive backends from within ipython. This will just crash
3779 interactive backends from within ipython. This will just crash
3775 the python interpreter, so we can't allow it (but a detailed error
3780 the python interpreter, so we can't allow it (but a detailed error
3776 is given to the user).
3781 is given to the user).
3777
3782
3778 2004-09-28 Fernando Perez <fperez@colorado.edu>
3783 2004-09-28 Fernando Perez <fperez@colorado.edu>
3779
3784
3780 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3785 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
3781 matplotlib-related fixes so that using @run with non-matplotlib
3786 matplotlib-related fixes so that using @run with non-matplotlib
3782 scripts doesn't pop up spurious plot windows. This requires
3787 scripts doesn't pop up spurious plot windows. This requires
3783 matplotlib >= 0.63, where I had to make some changes as well.
3788 matplotlib >= 0.63, where I had to make some changes as well.
3784
3789
3785 * IPython/ipmaker.py (make_IPython): update version requirement to
3790 * IPython/ipmaker.py (make_IPython): update version requirement to
3786 python 2.2.
3791 python 2.2.
3787
3792
3788 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3793 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
3789 banner arg for embedded customization.
3794 banner arg for embedded customization.
3790
3795
3791 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3796 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
3792 explicit uses of __IP as the IPython's instance name. Now things
3797 explicit uses of __IP as the IPython's instance name. Now things
3793 are properly handled via the shell.name value. The actual code
3798 are properly handled via the shell.name value. The actual code
3794 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3799 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
3795 is much better than before. I'll clean things completely when the
3800 is much better than before. I'll clean things completely when the
3796 magic stuff gets a real overhaul.
3801 magic stuff gets a real overhaul.
3797
3802
3798 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3803 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
3799 minor changes to debian dir.
3804 minor changes to debian dir.
3800
3805
3801 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3806 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
3802 pointer to the shell itself in the interactive namespace even when
3807 pointer to the shell itself in the interactive namespace even when
3803 a user-supplied dict is provided. This is needed for embedding
3808 a user-supplied dict is provided. This is needed for embedding
3804 purposes (found by tests with Michel Sanner).
3809 purposes (found by tests with Michel Sanner).
3805
3810
3806 2004-09-27 Fernando Perez <fperez@colorado.edu>
3811 2004-09-27 Fernando Perez <fperez@colorado.edu>
3807
3812
3808 * IPython/UserConfig/ipythonrc: remove []{} from
3813 * IPython/UserConfig/ipythonrc: remove []{} from
3809 readline_remove_delims, so that things like [modname.<TAB> do
3814 readline_remove_delims, so that things like [modname.<TAB> do
3810 proper completion. This disables [].TAB, but that's a less common
3815 proper completion. This disables [].TAB, but that's a less common
3811 case than module names in list comprehensions, for example.
3816 case than module names in list comprehensions, for example.
3812 Thanks to a report by Andrea Riciputi.
3817 Thanks to a report by Andrea Riciputi.
3813
3818
3814 2004-09-09 Fernando Perez <fperez@colorado.edu>
3819 2004-09-09 Fernando Perez <fperez@colorado.edu>
3815
3820
3816 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3821 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
3817 blocking problems in win32 and osx. Fix by John.
3822 blocking problems in win32 and osx. Fix by John.
3818
3823
3819 2004-09-08 Fernando Perez <fperez@colorado.edu>
3824 2004-09-08 Fernando Perez <fperez@colorado.edu>
3820
3825
3821 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3826 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
3822 for Win32 and OSX. Fix by John Hunter.
3827 for Win32 and OSX. Fix by John Hunter.
3823
3828
3824 2004-08-30 *** Released version 0.6.3
3829 2004-08-30 *** Released version 0.6.3
3825
3830
3826 2004-08-30 Fernando Perez <fperez@colorado.edu>
3831 2004-08-30 Fernando Perez <fperez@colorado.edu>
3827
3832
3828 * setup.py (isfile): Add manpages to list of dependent files to be
3833 * setup.py (isfile): Add manpages to list of dependent files to be
3829 updated.
3834 updated.
3830
3835
3831 2004-08-27 Fernando Perez <fperez@colorado.edu>
3836 2004-08-27 Fernando Perez <fperez@colorado.edu>
3832
3837
3833 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3838 * IPython/Shell.py (start): I've disabled -wthread and -gthread
3834 for now. They don't really work with standalone WX/GTK code
3839 for now. They don't really work with standalone WX/GTK code
3835 (though matplotlib IS working fine with both of those backends).
3840 (though matplotlib IS working fine with both of those backends).
3836 This will neeed much more testing. I disabled most things with
3841 This will neeed much more testing. I disabled most things with
3837 comments, so turning it back on later should be pretty easy.
3842 comments, so turning it back on later should be pretty easy.
3838
3843
3839 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3844 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
3840 autocalling of expressions like r'foo', by modifying the line
3845 autocalling of expressions like r'foo', by modifying the line
3841 split regexp. Closes
3846 split regexp. Closes
3842 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3847 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
3843 Riley <ipythonbugs-AT-sabi.net>.
3848 Riley <ipythonbugs-AT-sabi.net>.
3844 (InteractiveShell.mainloop): honor --nobanner with banner
3849 (InteractiveShell.mainloop): honor --nobanner with banner
3845 extensions.
3850 extensions.
3846
3851
3847 * IPython/Shell.py: Significant refactoring of all classes, so
3852 * IPython/Shell.py: Significant refactoring of all classes, so
3848 that we can really support ALL matplotlib backends and threading
3853 that we can really support ALL matplotlib backends and threading
3849 models (John spotted a bug with Tk which required this). Now we
3854 models (John spotted a bug with Tk which required this). Now we
3850 should support single-threaded, WX-threads and GTK-threads, both
3855 should support single-threaded, WX-threads and GTK-threads, both
3851 for generic code and for matplotlib.
3856 for generic code and for matplotlib.
3852
3857
3853 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3858 * IPython/ipmaker.py (__call__): Changed -mpthread option to
3854 -pylab, to simplify things for users. Will also remove the pylab
3859 -pylab, to simplify things for users. Will also remove the pylab
3855 profile, since now all of matplotlib configuration is directly
3860 profile, since now all of matplotlib configuration is directly
3856 handled here. This also reduces startup time.
3861 handled here. This also reduces startup time.
3857
3862
3858 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3863 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
3859 shell wasn't being correctly called. Also in IPShellWX.
3864 shell wasn't being correctly called. Also in IPShellWX.
3860
3865
3861 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3866 * IPython/iplib.py (InteractiveShell.__init__): Added option to
3862 fine-tune banner.
3867 fine-tune banner.
3863
3868
3864 * IPython/numutils.py (spike): Deprecate these spike functions,
3869 * IPython/numutils.py (spike): Deprecate these spike functions,
3865 delete (long deprecated) gnuplot_exec handler.
3870 delete (long deprecated) gnuplot_exec handler.
3866
3871
3867 2004-08-26 Fernando Perez <fperez@colorado.edu>
3872 2004-08-26 Fernando Perez <fperez@colorado.edu>
3868
3873
3869 * ipython.1: Update for threading options, plus some others which
3874 * ipython.1: Update for threading options, plus some others which
3870 were missing.
3875 were missing.
3871
3876
3872 * IPython/ipmaker.py (__call__): Added -wthread option for
3877 * IPython/ipmaker.py (__call__): Added -wthread option for
3873 wxpython thread handling. Make sure threading options are only
3878 wxpython thread handling. Make sure threading options are only
3874 valid at the command line.
3879 valid at the command line.
3875
3880
3876 * scripts/ipython: moved shell selection into a factory function
3881 * scripts/ipython: moved shell selection into a factory function
3877 in Shell.py, to keep the starter script to a minimum.
3882 in Shell.py, to keep the starter script to a minimum.
3878
3883
3879 2004-08-25 Fernando Perez <fperez@colorado.edu>
3884 2004-08-25 Fernando Perez <fperez@colorado.edu>
3880
3885
3881 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3886 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
3882 John. Along with some recent changes he made to matplotlib, the
3887 John. Along with some recent changes he made to matplotlib, the
3883 next versions of both systems should work very well together.
3888 next versions of both systems should work very well together.
3884
3889
3885 2004-08-24 Fernando Perez <fperez@colorado.edu>
3890 2004-08-24 Fernando Perez <fperez@colorado.edu>
3886
3891
3887 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3892 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
3888 tried to switch the profiling to using hotshot, but I'm getting
3893 tried to switch the profiling to using hotshot, but I'm getting
3889 strange errors from prof.runctx() there. I may be misreading the
3894 strange errors from prof.runctx() there. I may be misreading the
3890 docs, but it looks weird. For now the profiling code will
3895 docs, but it looks weird. For now the profiling code will
3891 continue to use the standard profiler.
3896 continue to use the standard profiler.
3892
3897
3893 2004-08-23 Fernando Perez <fperez@colorado.edu>
3898 2004-08-23 Fernando Perez <fperez@colorado.edu>
3894
3899
3895 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3900 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
3896 threaded shell, by John Hunter. It's not quite ready yet, but
3901 threaded shell, by John Hunter. It's not quite ready yet, but
3897 close.
3902 close.
3898
3903
3899 2004-08-22 Fernando Perez <fperez@colorado.edu>
3904 2004-08-22 Fernando Perez <fperez@colorado.edu>
3900
3905
3901 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3906 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
3902 in Magic and ultraTB.
3907 in Magic and ultraTB.
3903
3908
3904 * ipython.1: document threading options in manpage.
3909 * ipython.1: document threading options in manpage.
3905
3910
3906 * scripts/ipython: Changed name of -thread option to -gthread,
3911 * scripts/ipython: Changed name of -thread option to -gthread,
3907 since this is GTK specific. I want to leave the door open for a
3912 since this is GTK specific. I want to leave the door open for a
3908 -wthread option for WX, which will most likely be necessary. This
3913 -wthread option for WX, which will most likely be necessary. This
3909 change affects usage and ipmaker as well.
3914 change affects usage and ipmaker as well.
3910
3915
3911 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3916 * IPython/Shell.py (matplotlib_shell): Add a factory function to
3912 handle the matplotlib shell issues. Code by John Hunter
3917 handle the matplotlib shell issues. Code by John Hunter
3913 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3918 <jdhunter-AT-nitace.bsd.uchicago.edu>.
3914 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3919 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
3915 broken (and disabled for end users) for now, but it puts the
3920 broken (and disabled for end users) for now, but it puts the
3916 infrastructure in place.
3921 infrastructure in place.
3917
3922
3918 2004-08-21 Fernando Perez <fperez@colorado.edu>
3923 2004-08-21 Fernando Perez <fperez@colorado.edu>
3919
3924
3920 * ipythonrc-pylab: Add matplotlib support.
3925 * ipythonrc-pylab: Add matplotlib support.
3921
3926
3922 * matplotlib_config.py: new files for matplotlib support, part of
3927 * matplotlib_config.py: new files for matplotlib support, part of
3923 the pylab profile.
3928 the pylab profile.
3924
3929
3925 * IPython/usage.py (__doc__): documented the threading options.
3930 * IPython/usage.py (__doc__): documented the threading options.
3926
3931
3927 2004-08-20 Fernando Perez <fperez@colorado.edu>
3932 2004-08-20 Fernando Perez <fperez@colorado.edu>
3928
3933
3929 * ipython: Modified the main calling routine to handle the -thread
3934 * ipython: Modified the main calling routine to handle the -thread
3930 and -mpthread options. This needs to be done as a top-level hack,
3935 and -mpthread options. This needs to be done as a top-level hack,
3931 because it determines which class to instantiate for IPython
3936 because it determines which class to instantiate for IPython
3932 itself.
3937 itself.
3933
3938
3934 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3939 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
3935 classes to support multithreaded GTK operation without blocking,
3940 classes to support multithreaded GTK operation without blocking,
3936 and matplotlib with all backends. This is a lot of still very
3941 and matplotlib with all backends. This is a lot of still very
3937 experimental code, and threads are tricky. So it may still have a
3942 experimental code, and threads are tricky. So it may still have a
3938 few rough edges... This code owes a lot to
3943 few rough edges... This code owes a lot to
3939 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3944 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
3940 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3945 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
3941 to John Hunter for all the matplotlib work.
3946 to John Hunter for all the matplotlib work.
3942
3947
3943 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3948 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
3944 options for gtk thread and matplotlib support.
3949 options for gtk thread and matplotlib support.
3945
3950
3946 2004-08-16 Fernando Perez <fperez@colorado.edu>
3951 2004-08-16 Fernando Perez <fperez@colorado.edu>
3947
3952
3948 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3953 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
3949 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3954 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
3950 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3955 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
3951
3956
3952 2004-08-11 Fernando Perez <fperez@colorado.edu>
3957 2004-08-11 Fernando Perez <fperez@colorado.edu>
3953
3958
3954 * setup.py (isfile): Fix build so documentation gets updated for
3959 * setup.py (isfile): Fix build so documentation gets updated for
3955 rpms (it was only done for .tgz builds).
3960 rpms (it was only done for .tgz builds).
3956
3961
3957 2004-08-10 Fernando Perez <fperez@colorado.edu>
3962 2004-08-10 Fernando Perez <fperez@colorado.edu>
3958
3963
3959 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3964 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
3960
3965
3961 * iplib.py : Silence syntax error exceptions in tab-completion.
3966 * iplib.py : Silence syntax error exceptions in tab-completion.
3962
3967
3963 2004-08-05 Fernando Perez <fperez@colorado.edu>
3968 2004-08-05 Fernando Perez <fperez@colorado.edu>
3964
3969
3965 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3970 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
3966 'color off' mark for continuation prompts. This was causing long
3971 'color off' mark for continuation prompts. This was causing long
3967 continuation lines to mis-wrap.
3972 continuation lines to mis-wrap.
3968
3973
3969 2004-08-01 Fernando Perez <fperez@colorado.edu>
3974 2004-08-01 Fernando Perez <fperez@colorado.edu>
3970
3975
3971 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3976 * IPython/ipmaker.py (make_IPython): Allow the shell class used
3972 for building ipython to be a parameter. All this is necessary
3977 for building ipython to be a parameter. All this is necessary
3973 right now to have a multithreaded version, but this insane
3978 right now to have a multithreaded version, but this insane
3974 non-design will be cleaned up soon. For now, it's a hack that
3979 non-design will be cleaned up soon. For now, it's a hack that
3975 works.
3980 works.
3976
3981
3977 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3982 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
3978 args in various places. No bugs so far, but it's a dangerous
3983 args in various places. No bugs so far, but it's a dangerous
3979 practice.
3984 practice.
3980
3985
3981 2004-07-31 Fernando Perez <fperez@colorado.edu>
3986 2004-07-31 Fernando Perez <fperez@colorado.edu>
3982
3987
3983 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3988 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
3984 fix completion of files with dots in their names under most
3989 fix completion of files with dots in their names under most
3985 profiles (pysh was OK because the completion order is different).
3990 profiles (pysh was OK because the completion order is different).
3986
3991
3987 2004-07-27 Fernando Perez <fperez@colorado.edu>
3992 2004-07-27 Fernando Perez <fperez@colorado.edu>
3988
3993
3989 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3994 * IPython/iplib.py (InteractiveShell.__init__): build dict of
3990 keywords manually, b/c the one in keyword.py was removed in python
3995 keywords manually, b/c the one in keyword.py was removed in python
3991 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3996 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
3992 This is NOT a bug under python 2.3 and earlier.
3997 This is NOT a bug under python 2.3 and earlier.
3993
3998
3994 2004-07-26 Fernando Perez <fperez@colorado.edu>
3999 2004-07-26 Fernando Perez <fperez@colorado.edu>
3995
4000
3996 * IPython/ultraTB.py (VerboseTB.text): Add another
4001 * IPython/ultraTB.py (VerboseTB.text): Add another
3997 linecache.checkcache() call to try to prevent inspect.py from
4002 linecache.checkcache() call to try to prevent inspect.py from
3998 crashing under python 2.3. I think this fixes
4003 crashing under python 2.3. I think this fixes
3999 http://www.scipy.net/roundup/ipython/issue17.
4004 http://www.scipy.net/roundup/ipython/issue17.
4000
4005
4001 2004-07-26 *** Released version 0.6.2
4006 2004-07-26 *** Released version 0.6.2
4002
4007
4003 2004-07-26 Fernando Perez <fperez@colorado.edu>
4008 2004-07-26 Fernando Perez <fperez@colorado.edu>
4004
4009
4005 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4010 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
4006 fail for any number.
4011 fail for any number.
4007 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4012 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
4008 empty bookmarks.
4013 empty bookmarks.
4009
4014
4010 2004-07-26 *** Released version 0.6.1
4015 2004-07-26 *** Released version 0.6.1
4011
4016
4012 2004-07-26 Fernando Perez <fperez@colorado.edu>
4017 2004-07-26 Fernando Perez <fperez@colorado.edu>
4013
4018
4014 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4019 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
4015
4020
4016 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4021 * IPython/iplib.py (protect_filename): Applied Ville's patch for
4017 escaping '()[]{}' in filenames.
4022 escaping '()[]{}' in filenames.
4018
4023
4019 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4024 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
4020 Python 2.2 users who lack a proper shlex.split.
4025 Python 2.2 users who lack a proper shlex.split.
4021
4026
4022 2004-07-19 Fernando Perez <fperez@colorado.edu>
4027 2004-07-19 Fernando Perez <fperez@colorado.edu>
4023
4028
4024 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4029 * IPython/iplib.py (InteractiveShell.init_readline): Add support
4025 for reading readline's init file. I follow the normal chain:
4030 for reading readline's init file. I follow the normal chain:
4026 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4031 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
4027 report by Mike Heeter. This closes
4032 report by Mike Heeter. This closes
4028 http://www.scipy.net/roundup/ipython/issue16.
4033 http://www.scipy.net/roundup/ipython/issue16.
4029
4034
4030 2004-07-18 Fernando Perez <fperez@colorado.edu>
4035 2004-07-18 Fernando Perez <fperez@colorado.edu>
4031
4036
4032 * IPython/iplib.py (__init__): Add better handling of '\' under
4037 * IPython/iplib.py (__init__): Add better handling of '\' under
4033 Win32 for filenames. After a patch by Ville.
4038 Win32 for filenames. After a patch by Ville.
4034
4039
4035 2004-07-17 Fernando Perez <fperez@colorado.edu>
4040 2004-07-17 Fernando Perez <fperez@colorado.edu>
4036
4041
4037 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4042 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4038 autocalling would be triggered for 'foo is bar' if foo is
4043 autocalling would be triggered for 'foo is bar' if foo is
4039 callable. I also cleaned up the autocall detection code to use a
4044 callable. I also cleaned up the autocall detection code to use a
4040 regexp, which is faster. Bug reported by Alexander Schmolck.
4045 regexp, which is faster. Bug reported by Alexander Schmolck.
4041
4046
4042 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4047 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
4043 '?' in them would confuse the help system. Reported by Alex
4048 '?' in them would confuse the help system. Reported by Alex
4044 Schmolck.
4049 Schmolck.
4045
4050
4046 2004-07-16 Fernando Perez <fperez@colorado.edu>
4051 2004-07-16 Fernando Perez <fperez@colorado.edu>
4047
4052
4048 * IPython/GnuplotInteractive.py (__all__): added plot2.
4053 * IPython/GnuplotInteractive.py (__all__): added plot2.
4049
4054
4050 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4055 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
4051 plotting dictionaries, lists or tuples of 1d arrays.
4056 plotting dictionaries, lists or tuples of 1d arrays.
4052
4057
4053 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4058 * IPython/Magic.py (Magic.magic_hist): small clenaups and
4054 optimizations.
4059 optimizations.
4055
4060
4056 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4061 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
4057 the information which was there from Janko's original IPP code:
4062 the information which was there from Janko's original IPP code:
4058
4063
4059 03.05.99 20:53 porto.ifm.uni-kiel.de
4064 03.05.99 20:53 porto.ifm.uni-kiel.de
4060 --Started changelog.
4065 --Started changelog.
4061 --make clear do what it say it does
4066 --make clear do what it say it does
4062 --added pretty output of lines from inputcache
4067 --added pretty output of lines from inputcache
4063 --Made Logger a mixin class, simplifies handling of switches
4068 --Made Logger a mixin class, simplifies handling of switches
4064 --Added own completer class. .string<TAB> expands to last history
4069 --Added own completer class. .string<TAB> expands to last history
4065 line which starts with string. The new expansion is also present
4070 line which starts with string. The new expansion is also present
4066 with Ctrl-r from the readline library. But this shows, who this
4071 with Ctrl-r from the readline library. But this shows, who this
4067 can be done for other cases.
4072 can be done for other cases.
4068 --Added convention that all shell functions should accept a
4073 --Added convention that all shell functions should accept a
4069 parameter_string This opens the door for different behaviour for
4074 parameter_string This opens the door for different behaviour for
4070 each function. @cd is a good example of this.
4075 each function. @cd is a good example of this.
4071
4076
4072 04.05.99 12:12 porto.ifm.uni-kiel.de
4077 04.05.99 12:12 porto.ifm.uni-kiel.de
4073 --added logfile rotation
4078 --added logfile rotation
4074 --added new mainloop method which freezes first the namespace
4079 --added new mainloop method which freezes first the namespace
4075
4080
4076 07.05.99 21:24 porto.ifm.uni-kiel.de
4081 07.05.99 21:24 porto.ifm.uni-kiel.de
4077 --added the docreader classes. Now there is a help system.
4082 --added the docreader classes. Now there is a help system.
4078 -This is only a first try. Currently it's not easy to put new
4083 -This is only a first try. Currently it's not easy to put new
4079 stuff in the indices. But this is the way to go. Info would be
4084 stuff in the indices. But this is the way to go. Info would be
4080 better, but HTML is every where and not everybody has an info
4085 better, but HTML is every where and not everybody has an info
4081 system installed and it's not so easy to change html-docs to info.
4086 system installed and it's not so easy to change html-docs to info.
4082 --added global logfile option
4087 --added global logfile option
4083 --there is now a hook for object inspection method pinfo needs to
4088 --there is now a hook for object inspection method pinfo needs to
4084 be provided for this. Can be reached by two '??'.
4089 be provided for this. Can be reached by two '??'.
4085
4090
4086 08.05.99 20:51 porto.ifm.uni-kiel.de
4091 08.05.99 20:51 porto.ifm.uni-kiel.de
4087 --added a README
4092 --added a README
4088 --bug in rc file. Something has changed so functions in the rc
4093 --bug in rc file. Something has changed so functions in the rc
4089 file need to reference the shell and not self. Not clear if it's a
4094 file need to reference the shell and not self. Not clear if it's a
4090 bug or feature.
4095 bug or feature.
4091 --changed rc file for new behavior
4096 --changed rc file for new behavior
4092
4097
4093 2004-07-15 Fernando Perez <fperez@colorado.edu>
4098 2004-07-15 Fernando Perez <fperez@colorado.edu>
4094
4099
4095 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4100 * IPython/Logger.py (Logger.log): fixed recent bug where the input
4096 cache was falling out of sync in bizarre manners when multi-line
4101 cache was falling out of sync in bizarre manners when multi-line
4097 input was present. Minor optimizations and cleanup.
4102 input was present. Minor optimizations and cleanup.
4098
4103
4099 (Logger): Remove old Changelog info for cleanup. This is the
4104 (Logger): Remove old Changelog info for cleanup. This is the
4100 information which was there from Janko's original code:
4105 information which was there from Janko's original code:
4101
4106
4102 Changes to Logger: - made the default log filename a parameter
4107 Changes to Logger: - made the default log filename a parameter
4103
4108
4104 - put a check for lines beginning with !@? in log(). Needed
4109 - put a check for lines beginning with !@? in log(). Needed
4105 (even if the handlers properly log their lines) for mid-session
4110 (even if the handlers properly log their lines) for mid-session
4106 logging activation to work properly. Without this, lines logged
4111 logging activation to work properly. Without this, lines logged
4107 in mid session, which get read from the cache, would end up
4112 in mid session, which get read from the cache, would end up
4108 'bare' (with !@? in the open) in the log. Now they are caught
4113 'bare' (with !@? in the open) in the log. Now they are caught
4109 and prepended with a #.
4114 and prepended with a #.
4110
4115
4111 * IPython/iplib.py (InteractiveShell.init_readline): added check
4116 * IPython/iplib.py (InteractiveShell.init_readline): added check
4112 in case MagicCompleter fails to be defined, so we don't crash.
4117 in case MagicCompleter fails to be defined, so we don't crash.
4113
4118
4114 2004-07-13 Fernando Perez <fperez@colorado.edu>
4119 2004-07-13 Fernando Perez <fperez@colorado.edu>
4115
4120
4116 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4121 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
4117 of EPS if the requested filename ends in '.eps'.
4122 of EPS if the requested filename ends in '.eps'.
4118
4123
4119 2004-07-04 Fernando Perez <fperez@colorado.edu>
4124 2004-07-04 Fernando Perez <fperez@colorado.edu>
4120
4125
4121 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4126 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
4122 escaping of quotes when calling the shell.
4127 escaping of quotes when calling the shell.
4123
4128
4124 2004-07-02 Fernando Perez <fperez@colorado.edu>
4129 2004-07-02 Fernando Perez <fperez@colorado.edu>
4125
4130
4126 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4131 * IPython/Prompts.py (CachedOutput.update): Fix problem with
4127 gettext not working because we were clobbering '_'. Fixes
4132 gettext not working because we were clobbering '_'. Fixes
4128 http://www.scipy.net/roundup/ipython/issue6.
4133 http://www.scipy.net/roundup/ipython/issue6.
4129
4134
4130 2004-07-01 Fernando Perez <fperez@colorado.edu>
4135 2004-07-01 Fernando Perez <fperez@colorado.edu>
4131
4136
4132 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4137 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
4133 into @cd. Patch by Ville.
4138 into @cd. Patch by Ville.
4134
4139
4135 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4140 * IPython/iplib.py (InteractiveShell.post_config_initialization):
4136 new function to store things after ipmaker runs. Patch by Ville.
4141 new function to store things after ipmaker runs. Patch by Ville.
4137 Eventually this will go away once ipmaker is removed and the class
4142 Eventually this will go away once ipmaker is removed and the class
4138 gets cleaned up, but for now it's ok. Key functionality here is
4143 gets cleaned up, but for now it's ok. Key functionality here is
4139 the addition of the persistent storage mechanism, a dict for
4144 the addition of the persistent storage mechanism, a dict for
4140 keeping data across sessions (for now just bookmarks, but more can
4145 keeping data across sessions (for now just bookmarks, but more can
4141 be implemented later).
4146 be implemented later).
4142
4147
4143 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4148 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
4144 persistent across sections. Patch by Ville, I modified it
4149 persistent across sections. Patch by Ville, I modified it
4145 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4150 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
4146 added a '-l' option to list all bookmarks.
4151 added a '-l' option to list all bookmarks.
4147
4152
4148 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4153 * IPython/iplib.py (InteractiveShell.atexit_operations): new
4149 center for cleanup. Registered with atexit.register(). I moved
4154 center for cleanup. Registered with atexit.register(). I moved
4150 here the old exit_cleanup(). After a patch by Ville.
4155 here the old exit_cleanup(). After a patch by Ville.
4151
4156
4152 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4157 * IPython/Magic.py (get_py_filename): added '~' to the accepted
4153 characters in the hacked shlex_split for python 2.2.
4158 characters in the hacked shlex_split for python 2.2.
4154
4159
4155 * IPython/iplib.py (file_matches): more fixes to filenames with
4160 * IPython/iplib.py (file_matches): more fixes to filenames with
4156 whitespace in them. It's not perfect, but limitations in python's
4161 whitespace in them. It's not perfect, but limitations in python's
4157 readline make it impossible to go further.
4162 readline make it impossible to go further.
4158
4163
4159 2004-06-29 Fernando Perez <fperez@colorado.edu>
4164 2004-06-29 Fernando Perez <fperez@colorado.edu>
4160
4165
4161 * IPython/iplib.py (file_matches): escape whitespace correctly in
4166 * IPython/iplib.py (file_matches): escape whitespace correctly in
4162 filename completions. Bug reported by Ville.
4167 filename completions. Bug reported by Ville.
4163
4168
4164 2004-06-28 Fernando Perez <fperez@colorado.edu>
4169 2004-06-28 Fernando Perez <fperez@colorado.edu>
4165
4170
4166 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4171 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
4167 the history file will be called 'history-PROFNAME' (or just
4172 the history file will be called 'history-PROFNAME' (or just
4168 'history' if no profile is loaded). I was getting annoyed at
4173 'history' if no profile is loaded). I was getting annoyed at
4169 getting my Numerical work history clobbered by pysh sessions.
4174 getting my Numerical work history clobbered by pysh sessions.
4170
4175
4171 * IPython/iplib.py (InteractiveShell.__init__): Internal
4176 * IPython/iplib.py (InteractiveShell.__init__): Internal
4172 getoutputerror() function so that we can honor the system_verbose
4177 getoutputerror() function so that we can honor the system_verbose
4173 flag for _all_ system calls. I also added escaping of #
4178 flag for _all_ system calls. I also added escaping of #
4174 characters here to avoid confusing Itpl.
4179 characters here to avoid confusing Itpl.
4175
4180
4176 * IPython/Magic.py (shlex_split): removed call to shell in
4181 * IPython/Magic.py (shlex_split): removed call to shell in
4177 parse_options and replaced it with shlex.split(). The annoying
4182 parse_options and replaced it with shlex.split(). The annoying
4178 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4183 part was that in Python 2.2, shlex.split() doesn't exist, so I had
4179 to backport it from 2.3, with several frail hacks (the shlex
4184 to backport it from 2.3, with several frail hacks (the shlex
4180 module is rather limited in 2.2). Thanks to a suggestion by Ville
4185 module is rather limited in 2.2). Thanks to a suggestion by Ville
4181 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4186 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
4182 problem.
4187 problem.
4183
4188
4184 (Magic.magic_system_verbose): new toggle to print the actual
4189 (Magic.magic_system_verbose): new toggle to print the actual
4185 system calls made by ipython. Mainly for debugging purposes.
4190 system calls made by ipython. Mainly for debugging purposes.
4186
4191
4187 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4192 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
4188 doesn't support persistence. Reported (and fix suggested) by
4193 doesn't support persistence. Reported (and fix suggested) by
4189 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4194 Travis Caldwell <travis_caldwell2000@yahoo.com>.
4190
4195
4191 2004-06-26 Fernando Perez <fperez@colorado.edu>
4196 2004-06-26 Fernando Perez <fperez@colorado.edu>
4192
4197
4193 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4198 * IPython/Logger.py (Logger.log): fix to handle correctly empty
4194 continue prompts.
4199 continue prompts.
4195
4200
4196 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4201 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
4197 function (basically a big docstring) and a few more things here to
4202 function (basically a big docstring) and a few more things here to
4198 speedup startup. pysh.py is now very lightweight. We want because
4203 speedup startup. pysh.py is now very lightweight. We want because
4199 it gets execfile'd, while InterpreterExec gets imported, so
4204 it gets execfile'd, while InterpreterExec gets imported, so
4200 byte-compilation saves time.
4205 byte-compilation saves time.
4201
4206
4202 2004-06-25 Fernando Perez <fperez@colorado.edu>
4207 2004-06-25 Fernando Perez <fperez@colorado.edu>
4203
4208
4204 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4209 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
4205 -NUM', which was recently broken.
4210 -NUM', which was recently broken.
4206
4211
4207 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4212 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
4208 in multi-line input (but not !!, which doesn't make sense there).
4213 in multi-line input (but not !!, which doesn't make sense there).
4209
4214
4210 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4215 * IPython/UserConfig/ipythonrc: made autoindent on by default.
4211 It's just too useful, and people can turn it off in the less
4216 It's just too useful, and people can turn it off in the less
4212 common cases where it's a problem.
4217 common cases where it's a problem.
4213
4218
4214 2004-06-24 Fernando Perez <fperez@colorado.edu>
4219 2004-06-24 Fernando Perez <fperez@colorado.edu>
4215
4220
4216 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4221 * IPython/iplib.py (InteractiveShell._prefilter): big change -
4217 special syntaxes (like alias calling) is now allied in multi-line
4222 special syntaxes (like alias calling) is now allied in multi-line
4218 input. This is still _very_ experimental, but it's necessary for
4223 input. This is still _very_ experimental, but it's necessary for
4219 efficient shell usage combining python looping syntax with system
4224 efficient shell usage combining python looping syntax with system
4220 calls. For now it's restricted to aliases, I don't think it
4225 calls. For now it's restricted to aliases, I don't think it
4221 really even makes sense to have this for magics.
4226 really even makes sense to have this for magics.
4222
4227
4223 2004-06-23 Fernando Perez <fperez@colorado.edu>
4228 2004-06-23 Fernando Perez <fperez@colorado.edu>
4224
4229
4225 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4230 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
4226 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4231 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
4227
4232
4228 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4233 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
4229 extensions under Windows (after code sent by Gary Bishop). The
4234 extensions under Windows (after code sent by Gary Bishop). The
4230 extensions considered 'executable' are stored in IPython's rc
4235 extensions considered 'executable' are stored in IPython's rc
4231 structure as win_exec_ext.
4236 structure as win_exec_ext.
4232
4237
4233 * IPython/genutils.py (shell): new function, like system() but
4238 * IPython/genutils.py (shell): new function, like system() but
4234 without return value. Very useful for interactive shell work.
4239 without return value. Very useful for interactive shell work.
4235
4240
4236 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4241 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
4237 delete aliases.
4242 delete aliases.
4238
4243
4239 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4244 * IPython/iplib.py (InteractiveShell.alias_table_update): make
4240 sure that the alias table doesn't contain python keywords.
4245 sure that the alias table doesn't contain python keywords.
4241
4246
4242 2004-06-21 Fernando Perez <fperez@colorado.edu>
4247 2004-06-21 Fernando Perez <fperez@colorado.edu>
4243
4248
4244 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4249 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
4245 non-existent items are found in $PATH. Reported by Thorsten.
4250 non-existent items are found in $PATH. Reported by Thorsten.
4246
4251
4247 2004-06-20 Fernando Perez <fperez@colorado.edu>
4252 2004-06-20 Fernando Perez <fperez@colorado.edu>
4248
4253
4249 * IPython/iplib.py (complete): modified the completer so that the
4254 * IPython/iplib.py (complete): modified the completer so that the
4250 order of priorities can be easily changed at runtime.
4255 order of priorities can be easily changed at runtime.
4251
4256
4252 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4257 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
4253 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4258 Modified to auto-execute all lines beginning with '~', '/' or '.'.
4254
4259
4255 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4260 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
4256 expand Python variables prepended with $ in all system calls. The
4261 expand Python variables prepended with $ in all system calls. The
4257 same was done to InteractiveShell.handle_shell_escape. Now all
4262 same was done to InteractiveShell.handle_shell_escape. Now all
4258 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4263 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
4259 expansion of python variables and expressions according to the
4264 expansion of python variables and expressions according to the
4260 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4265 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
4261
4266
4262 Though PEP-215 has been rejected, a similar (but simpler) one
4267 Though PEP-215 has been rejected, a similar (but simpler) one
4263 seems like it will go into Python 2.4, PEP-292 -
4268 seems like it will go into Python 2.4, PEP-292 -
4264 http://www.python.org/peps/pep-0292.html.
4269 http://www.python.org/peps/pep-0292.html.
4265
4270
4266 I'll keep the full syntax of PEP-215, since IPython has since the
4271 I'll keep the full syntax of PEP-215, since IPython has since the
4267 start used Ka-Ping Yee's reference implementation discussed there
4272 start used Ka-Ping Yee's reference implementation discussed there
4268 (Itpl), and I actually like the powerful semantics it offers.
4273 (Itpl), and I actually like the powerful semantics it offers.
4269
4274
4270 In order to access normal shell variables, the $ has to be escaped
4275 In order to access normal shell variables, the $ has to be escaped
4271 via an extra $. For example:
4276 via an extra $. For example:
4272
4277
4273 In [7]: PATH='a python variable'
4278 In [7]: PATH='a python variable'
4274
4279
4275 In [8]: !echo $PATH
4280 In [8]: !echo $PATH
4276 a python variable
4281 a python variable
4277
4282
4278 In [9]: !echo $$PATH
4283 In [9]: !echo $$PATH
4279 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4284 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
4280
4285
4281 (Magic.parse_options): escape $ so the shell doesn't evaluate
4286 (Magic.parse_options): escape $ so the shell doesn't evaluate
4282 things prematurely.
4287 things prematurely.
4283
4288
4284 * IPython/iplib.py (InteractiveShell.call_alias): added the
4289 * IPython/iplib.py (InteractiveShell.call_alias): added the
4285 ability for aliases to expand python variables via $.
4290 ability for aliases to expand python variables via $.
4286
4291
4287 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4292 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
4288 system, now there's a @rehash/@rehashx pair of magics. These work
4293 system, now there's a @rehash/@rehashx pair of magics. These work
4289 like the csh rehash command, and can be invoked at any time. They
4294 like the csh rehash command, and can be invoked at any time. They
4290 build a table of aliases to everything in the user's $PATH
4295 build a table of aliases to everything in the user's $PATH
4291 (@rehash uses everything, @rehashx is slower but only adds
4296 (@rehash uses everything, @rehashx is slower but only adds
4292 executable files). With this, the pysh.py-based shell profile can
4297 executable files). With this, the pysh.py-based shell profile can
4293 now simply call rehash upon startup, and full access to all
4298 now simply call rehash upon startup, and full access to all
4294 programs in the user's path is obtained.
4299 programs in the user's path is obtained.
4295
4300
4296 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4301 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
4297 functionality is now fully in place. I removed the old dynamic
4302 functionality is now fully in place. I removed the old dynamic
4298 code generation based approach, in favor of a much lighter one
4303 code generation based approach, in favor of a much lighter one
4299 based on a simple dict. The advantage is that this allows me to
4304 based on a simple dict. The advantage is that this allows me to
4300 now have thousands of aliases with negligible cost (unthinkable
4305 now have thousands of aliases with negligible cost (unthinkable
4301 with the old system).
4306 with the old system).
4302
4307
4303 2004-06-19 Fernando Perez <fperez@colorado.edu>
4308 2004-06-19 Fernando Perez <fperez@colorado.edu>
4304
4309
4305 * IPython/iplib.py (__init__): extended MagicCompleter class to
4310 * IPython/iplib.py (__init__): extended MagicCompleter class to
4306 also complete (last in priority) on user aliases.
4311 also complete (last in priority) on user aliases.
4307
4312
4308 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4313 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
4309 call to eval.
4314 call to eval.
4310 (ItplNS.__init__): Added a new class which functions like Itpl,
4315 (ItplNS.__init__): Added a new class which functions like Itpl,
4311 but allows configuring the namespace for the evaluation to occur
4316 but allows configuring the namespace for the evaluation to occur
4312 in.
4317 in.
4313
4318
4314 2004-06-18 Fernando Perez <fperez@colorado.edu>
4319 2004-06-18 Fernando Perez <fperez@colorado.edu>
4315
4320
4316 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4321 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
4317 better message when 'exit' or 'quit' are typed (a common newbie
4322 better message when 'exit' or 'quit' are typed (a common newbie
4318 confusion).
4323 confusion).
4319
4324
4320 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4325 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
4321 check for Windows users.
4326 check for Windows users.
4322
4327
4323 * IPython/iplib.py (InteractiveShell.user_setup): removed
4328 * IPython/iplib.py (InteractiveShell.user_setup): removed
4324 disabling of colors for Windows. I'll test at runtime and issue a
4329 disabling of colors for Windows. I'll test at runtime and issue a
4325 warning if Gary's readline isn't found, as to nudge users to
4330 warning if Gary's readline isn't found, as to nudge users to
4326 download it.
4331 download it.
4327
4332
4328 2004-06-16 Fernando Perez <fperez@colorado.edu>
4333 2004-06-16 Fernando Perez <fperez@colorado.edu>
4329
4334
4330 * IPython/genutils.py (Stream.__init__): changed to print errors
4335 * IPython/genutils.py (Stream.__init__): changed to print errors
4331 to sys.stderr. I had a circular dependency here. Now it's
4336 to sys.stderr. I had a circular dependency here. Now it's
4332 possible to run ipython as IDLE's shell (consider this pre-alpha,
4337 possible to run ipython as IDLE's shell (consider this pre-alpha,
4333 since true stdout things end up in the starting terminal instead
4338 since true stdout things end up in the starting terminal instead
4334 of IDLE's out).
4339 of IDLE's out).
4335
4340
4336 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4341 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
4337 users who haven't # updated their prompt_in2 definitions. Remove
4342 users who haven't # updated their prompt_in2 definitions. Remove
4338 eventually.
4343 eventually.
4339 (multiple_replace): added credit to original ASPN recipe.
4344 (multiple_replace): added credit to original ASPN recipe.
4340
4345
4341 2004-06-15 Fernando Perez <fperez@colorado.edu>
4346 2004-06-15 Fernando Perez <fperez@colorado.edu>
4342
4347
4343 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4348 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
4344 list of auto-defined aliases.
4349 list of auto-defined aliases.
4345
4350
4346 2004-06-13 Fernando Perez <fperez@colorado.edu>
4351 2004-06-13 Fernando Perez <fperez@colorado.edu>
4347
4352
4348 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4353 * setup.py (scriptfiles): Don't trigger win_post_install unless an
4349 install was really requested (so setup.py can be used for other
4354 install was really requested (so setup.py can be used for other
4350 things under Windows).
4355 things under Windows).
4351
4356
4352 2004-06-10 Fernando Perez <fperez@colorado.edu>
4357 2004-06-10 Fernando Perez <fperez@colorado.edu>
4353
4358
4354 * IPython/Logger.py (Logger.create_log): Manually remove any old
4359 * IPython/Logger.py (Logger.create_log): Manually remove any old
4355 backup, since os.remove may fail under Windows. Fixes bug
4360 backup, since os.remove may fail under Windows. Fixes bug
4356 reported by Thorsten.
4361 reported by Thorsten.
4357
4362
4358 2004-06-09 Fernando Perez <fperez@colorado.edu>
4363 2004-06-09 Fernando Perez <fperez@colorado.edu>
4359
4364
4360 * examples/example-embed.py: fixed all references to %n (replaced
4365 * examples/example-embed.py: fixed all references to %n (replaced
4361 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4366 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
4362 for all examples and the manual as well.
4367 for all examples and the manual as well.
4363
4368
4364 2004-06-08 Fernando Perez <fperez@colorado.edu>
4369 2004-06-08 Fernando Perez <fperez@colorado.edu>
4365
4370
4366 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4371 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
4367 alignment and color management. All 3 prompt subsystems now
4372 alignment and color management. All 3 prompt subsystems now
4368 inherit from BasePrompt.
4373 inherit from BasePrompt.
4369
4374
4370 * tools/release: updates for windows installer build and tag rpms
4375 * tools/release: updates for windows installer build and tag rpms
4371 with python version (since paths are fixed).
4376 with python version (since paths are fixed).
4372
4377
4373 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4378 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
4374 which will become eventually obsolete. Also fixed the default
4379 which will become eventually obsolete. Also fixed the default
4375 prompt_in2 to use \D, so at least new users start with the correct
4380 prompt_in2 to use \D, so at least new users start with the correct
4376 defaults.
4381 defaults.
4377 WARNING: Users with existing ipythonrc files will need to apply
4382 WARNING: Users with existing ipythonrc files will need to apply
4378 this fix manually!
4383 this fix manually!
4379
4384
4380 * setup.py: make windows installer (.exe). This is finally the
4385 * setup.py: make windows installer (.exe). This is finally the
4381 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4386 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
4382 which I hadn't included because it required Python 2.3 (or recent
4387 which I hadn't included because it required Python 2.3 (or recent
4383 distutils).
4388 distutils).
4384
4389
4385 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4390 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
4386 usage of new '\D' escape.
4391 usage of new '\D' escape.
4387
4392
4388 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4393 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
4389 lacks os.getuid())
4394 lacks os.getuid())
4390 (CachedOutput.set_colors): Added the ability to turn coloring
4395 (CachedOutput.set_colors): Added the ability to turn coloring
4391 on/off with @colors even for manually defined prompt colors. It
4396 on/off with @colors even for manually defined prompt colors. It
4392 uses a nasty global, but it works safely and via the generic color
4397 uses a nasty global, but it works safely and via the generic color
4393 handling mechanism.
4398 handling mechanism.
4394 (Prompt2.__init__): Introduced new escape '\D' for continuation
4399 (Prompt2.__init__): Introduced new escape '\D' for continuation
4395 prompts. It represents the counter ('\#') as dots.
4400 prompts. It represents the counter ('\#') as dots.
4396 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4401 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
4397 need to update their ipythonrc files and replace '%n' with '\D' in
4402 need to update their ipythonrc files and replace '%n' with '\D' in
4398 their prompt_in2 settings everywhere. Sorry, but there's
4403 their prompt_in2 settings everywhere. Sorry, but there's
4399 otherwise no clean way to get all prompts to properly align. The
4404 otherwise no clean way to get all prompts to properly align. The
4400 ipythonrc shipped with IPython has been updated.
4405 ipythonrc shipped with IPython has been updated.
4401
4406
4402 2004-06-07 Fernando Perez <fperez@colorado.edu>
4407 2004-06-07 Fernando Perez <fperez@colorado.edu>
4403
4408
4404 * setup.py (isfile): Pass local_icons option to latex2html, so the
4409 * setup.py (isfile): Pass local_icons option to latex2html, so the
4405 resulting HTML file is self-contained. Thanks to
4410 resulting HTML file is self-contained. Thanks to
4406 dryice-AT-liu.com.cn for the tip.
4411 dryice-AT-liu.com.cn for the tip.
4407
4412
4408 * pysh.py: I created a new profile 'shell', which implements a
4413 * pysh.py: I created a new profile 'shell', which implements a
4409 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4414 _rudimentary_ IPython-based shell. This is in NO WAY a realy
4410 system shell, nor will it become one anytime soon. It's mainly
4415 system shell, nor will it become one anytime soon. It's mainly
4411 meant to illustrate the use of the new flexible bash-like prompts.
4416 meant to illustrate the use of the new flexible bash-like prompts.
4412 I guess it could be used by hardy souls for true shell management,
4417 I guess it could be used by hardy souls for true shell management,
4413 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4418 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
4414 profile. This uses the InterpreterExec extension provided by
4419 profile. This uses the InterpreterExec extension provided by
4415 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4420 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
4416
4421
4417 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4422 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
4418 auto-align itself with the length of the previous input prompt
4423 auto-align itself with the length of the previous input prompt
4419 (taking into account the invisible color escapes).
4424 (taking into account the invisible color escapes).
4420 (CachedOutput.__init__): Large restructuring of this class. Now
4425 (CachedOutput.__init__): Large restructuring of this class. Now
4421 all three prompts (primary1, primary2, output) are proper objects,
4426 all three prompts (primary1, primary2, output) are proper objects,
4422 managed by the 'parent' CachedOutput class. The code is still a
4427 managed by the 'parent' CachedOutput class. The code is still a
4423 bit hackish (all prompts share state via a pointer to the cache),
4428 bit hackish (all prompts share state via a pointer to the cache),
4424 but it's overall far cleaner than before.
4429 but it's overall far cleaner than before.
4425
4430
4426 * IPython/genutils.py (getoutputerror): modified to add verbose,
4431 * IPython/genutils.py (getoutputerror): modified to add verbose,
4427 debug and header options. This makes the interface of all getout*
4432 debug and header options. This makes the interface of all getout*
4428 functions uniform.
4433 functions uniform.
4429 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4434 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
4430
4435
4431 * IPython/Magic.py (Magic.default_option): added a function to
4436 * IPython/Magic.py (Magic.default_option): added a function to
4432 allow registering default options for any magic command. This
4437 allow registering default options for any magic command. This
4433 makes it easy to have profiles which customize the magics globally
4438 makes it easy to have profiles which customize the magics globally
4434 for a certain use. The values set through this function are
4439 for a certain use. The values set through this function are
4435 picked up by the parse_options() method, which all magics should
4440 picked up by the parse_options() method, which all magics should
4436 use to parse their options.
4441 use to parse their options.
4437
4442
4438 * IPython/genutils.py (warn): modified the warnings framework to
4443 * IPython/genutils.py (warn): modified the warnings framework to
4439 use the Term I/O class. I'm trying to slowly unify all of
4444 use the Term I/O class. I'm trying to slowly unify all of
4440 IPython's I/O operations to pass through Term.
4445 IPython's I/O operations to pass through Term.
4441
4446
4442 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4447 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
4443 the secondary prompt to correctly match the length of the primary
4448 the secondary prompt to correctly match the length of the primary
4444 one for any prompt. Now multi-line code will properly line up
4449 one for any prompt. Now multi-line code will properly line up
4445 even for path dependent prompts, such as the new ones available
4450 even for path dependent prompts, such as the new ones available
4446 via the prompt_specials.
4451 via the prompt_specials.
4447
4452
4448 2004-06-06 Fernando Perez <fperez@colorado.edu>
4453 2004-06-06 Fernando Perez <fperez@colorado.edu>
4449
4454
4450 * IPython/Prompts.py (prompt_specials): Added the ability to have
4455 * IPython/Prompts.py (prompt_specials): Added the ability to have
4451 bash-like special sequences in the prompts, which get
4456 bash-like special sequences in the prompts, which get
4452 automatically expanded. Things like hostname, current working
4457 automatically expanded. Things like hostname, current working
4453 directory and username are implemented already, but it's easy to
4458 directory and username are implemented already, but it's easy to
4454 add more in the future. Thanks to a patch by W.J. van der Laan
4459 add more in the future. Thanks to a patch by W.J. van der Laan
4455 <gnufnork-AT-hetdigitalegat.nl>
4460 <gnufnork-AT-hetdigitalegat.nl>
4456 (prompt_specials): Added color support for prompt strings, so
4461 (prompt_specials): Added color support for prompt strings, so
4457 users can define arbitrary color setups for their prompts.
4462 users can define arbitrary color setups for their prompts.
4458
4463
4459 2004-06-05 Fernando Perez <fperez@colorado.edu>
4464 2004-06-05 Fernando Perez <fperez@colorado.edu>
4460
4465
4461 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4466 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
4462 code to load Gary Bishop's readline and configure it
4467 code to load Gary Bishop's readline and configure it
4463 automatically. Thanks to Gary for help on this.
4468 automatically. Thanks to Gary for help on this.
4464
4469
4465 2004-06-01 Fernando Perez <fperez@colorado.edu>
4470 2004-06-01 Fernando Perez <fperez@colorado.edu>
4466
4471
4467 * IPython/Logger.py (Logger.create_log): fix bug for logging
4472 * IPython/Logger.py (Logger.create_log): fix bug for logging
4468 with no filename (previous fix was incomplete).
4473 with no filename (previous fix was incomplete).
4469
4474
4470 2004-05-25 Fernando Perez <fperez@colorado.edu>
4475 2004-05-25 Fernando Perez <fperez@colorado.edu>
4471
4476
4472 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4477 * IPython/Magic.py (Magic.parse_options): fix bug where naked
4473 parens would get passed to the shell.
4478 parens would get passed to the shell.
4474
4479
4475 2004-05-20 Fernando Perez <fperez@colorado.edu>
4480 2004-05-20 Fernando Perez <fperez@colorado.edu>
4476
4481
4477 * IPython/Magic.py (Magic.magic_prun): changed default profile
4482 * IPython/Magic.py (Magic.magic_prun): changed default profile
4478 sort order to 'time' (the more common profiling need).
4483 sort order to 'time' (the more common profiling need).
4479
4484
4480 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4485 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
4481 so that source code shown is guaranteed in sync with the file on
4486 so that source code shown is guaranteed in sync with the file on
4482 disk (also changed in psource). Similar fix to the one for
4487 disk (also changed in psource). Similar fix to the one for
4483 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4488 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
4484 <yann.ledu-AT-noos.fr>.
4489 <yann.ledu-AT-noos.fr>.
4485
4490
4486 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4491 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
4487 with a single option would not be correctly parsed. Closes
4492 with a single option would not be correctly parsed. Closes
4488 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4493 http://www.scipy.net/roundup/ipython/issue14. This bug had been
4489 introduced in 0.6.0 (on 2004-05-06).
4494 introduced in 0.6.0 (on 2004-05-06).
4490
4495
4491 2004-05-13 *** Released version 0.6.0
4496 2004-05-13 *** Released version 0.6.0
4492
4497
4493 2004-05-13 Fernando Perez <fperez@colorado.edu>
4498 2004-05-13 Fernando Perez <fperez@colorado.edu>
4494
4499
4495 * debian/: Added debian/ directory to CVS, so that debian support
4500 * debian/: Added debian/ directory to CVS, so that debian support
4496 is publicly accessible. The debian package is maintained by Jack
4501 is publicly accessible. The debian package is maintained by Jack
4497 Moffit <jack-AT-xiph.org>.
4502 Moffit <jack-AT-xiph.org>.
4498
4503
4499 * Documentation: included the notes about an ipython-based system
4504 * Documentation: included the notes about an ipython-based system
4500 shell (the hypothetical 'pysh') into the new_design.pdf document,
4505 shell (the hypothetical 'pysh') into the new_design.pdf document,
4501 so that these ideas get distributed to users along with the
4506 so that these ideas get distributed to users along with the
4502 official documentation.
4507 official documentation.
4503
4508
4504 2004-05-10 Fernando Perez <fperez@colorado.edu>
4509 2004-05-10 Fernando Perez <fperez@colorado.edu>
4505
4510
4506 * IPython/Logger.py (Logger.create_log): fix recently introduced
4511 * IPython/Logger.py (Logger.create_log): fix recently introduced
4507 bug (misindented line) where logstart would fail when not given an
4512 bug (misindented line) where logstart would fail when not given an
4508 explicit filename.
4513 explicit filename.
4509
4514
4510 2004-05-09 Fernando Perez <fperez@colorado.edu>
4515 2004-05-09 Fernando Perez <fperez@colorado.edu>
4511
4516
4512 * IPython/Magic.py (Magic.parse_options): skip system call when
4517 * IPython/Magic.py (Magic.parse_options): skip system call when
4513 there are no options to look for. Faster, cleaner for the common
4518 there are no options to look for. Faster, cleaner for the common
4514 case.
4519 case.
4515
4520
4516 * Documentation: many updates to the manual: describing Windows
4521 * Documentation: many updates to the manual: describing Windows
4517 support better, Gnuplot updates, credits, misc small stuff. Also
4522 support better, Gnuplot updates, credits, misc small stuff. Also
4518 updated the new_design doc a bit.
4523 updated the new_design doc a bit.
4519
4524
4520 2004-05-06 *** Released version 0.6.0.rc1
4525 2004-05-06 *** Released version 0.6.0.rc1
4521
4526
4522 2004-05-06 Fernando Perez <fperez@colorado.edu>
4527 2004-05-06 Fernando Perez <fperez@colorado.edu>
4523
4528
4524 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4529 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
4525 operations to use the vastly more efficient list/''.join() method.
4530 operations to use the vastly more efficient list/''.join() method.
4526 (FormattedTB.text): Fix
4531 (FormattedTB.text): Fix
4527 http://www.scipy.net/roundup/ipython/issue12 - exception source
4532 http://www.scipy.net/roundup/ipython/issue12 - exception source
4528 extract not updated after reload. Thanks to Mike Salib
4533 extract not updated after reload. Thanks to Mike Salib
4529 <msalib-AT-mit.edu> for pinning the source of the problem.
4534 <msalib-AT-mit.edu> for pinning the source of the problem.
4530 Fortunately, the solution works inside ipython and doesn't require
4535 Fortunately, the solution works inside ipython and doesn't require
4531 any changes to python proper.
4536 any changes to python proper.
4532
4537
4533 * IPython/Magic.py (Magic.parse_options): Improved to process the
4538 * IPython/Magic.py (Magic.parse_options): Improved to process the
4534 argument list as a true shell would (by actually using the
4539 argument list as a true shell would (by actually using the
4535 underlying system shell). This way, all @magics automatically get
4540 underlying system shell). This way, all @magics automatically get
4536 shell expansion for variables. Thanks to a comment by Alex
4541 shell expansion for variables. Thanks to a comment by Alex
4537 Schmolck.
4542 Schmolck.
4538
4543
4539 2004-04-04 Fernando Perez <fperez@colorado.edu>
4544 2004-04-04 Fernando Perez <fperez@colorado.edu>
4540
4545
4541 * IPython/iplib.py (InteractiveShell.interact): Added a special
4546 * IPython/iplib.py (InteractiveShell.interact): Added a special
4542 trap for a debugger quit exception, which is basically impossible
4547 trap for a debugger quit exception, which is basically impossible
4543 to handle by normal mechanisms, given what pdb does to the stack.
4548 to handle by normal mechanisms, given what pdb does to the stack.
4544 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4549 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
4545
4550
4546 2004-04-03 Fernando Perez <fperez@colorado.edu>
4551 2004-04-03 Fernando Perez <fperez@colorado.edu>
4547
4552
4548 * IPython/genutils.py (Term): Standardized the names of the Term
4553 * IPython/genutils.py (Term): Standardized the names of the Term
4549 class streams to cin/cout/cerr, following C++ naming conventions
4554 class streams to cin/cout/cerr, following C++ naming conventions
4550 (I can't use in/out/err because 'in' is not a valid attribute
4555 (I can't use in/out/err because 'in' is not a valid attribute
4551 name).
4556 name).
4552
4557
4553 * IPython/iplib.py (InteractiveShell.interact): don't increment
4558 * IPython/iplib.py (InteractiveShell.interact): don't increment
4554 the prompt if there's no user input. By Daniel 'Dang' Griffith
4559 the prompt if there's no user input. By Daniel 'Dang' Griffith
4555 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4560 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
4556 Francois Pinard.
4561 Francois Pinard.
4557
4562
4558 2004-04-02 Fernando Perez <fperez@colorado.edu>
4563 2004-04-02 Fernando Perez <fperez@colorado.edu>
4559
4564
4560 * IPython/genutils.py (Stream.__init__): Modified to survive at
4565 * IPython/genutils.py (Stream.__init__): Modified to survive at
4561 least importing in contexts where stdin/out/err aren't true file
4566 least importing in contexts where stdin/out/err aren't true file
4562 objects, such as PyCrust (they lack fileno() and mode). However,
4567 objects, such as PyCrust (they lack fileno() and mode). However,
4563 the recovery facilities which rely on these things existing will
4568 the recovery facilities which rely on these things existing will
4564 not work.
4569 not work.
4565
4570
4566 2004-04-01 Fernando Perez <fperez@colorado.edu>
4571 2004-04-01 Fernando Perez <fperez@colorado.edu>
4567
4572
4568 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4573 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
4569 use the new getoutputerror() function, so it properly
4574 use the new getoutputerror() function, so it properly
4570 distinguishes stdout/err.
4575 distinguishes stdout/err.
4571
4576
4572 * IPython/genutils.py (getoutputerror): added a function to
4577 * IPython/genutils.py (getoutputerror): added a function to
4573 capture separately the standard output and error of a command.
4578 capture separately the standard output and error of a command.
4574 After a comment from dang on the mailing lists. This code is
4579 After a comment from dang on the mailing lists. This code is
4575 basically a modified version of commands.getstatusoutput(), from
4580 basically a modified version of commands.getstatusoutput(), from
4576 the standard library.
4581 the standard library.
4577
4582
4578 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4583 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
4579 '!!' as a special syntax (shorthand) to access @sx.
4584 '!!' as a special syntax (shorthand) to access @sx.
4580
4585
4581 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4586 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
4582 command and return its output as a list split on '\n'.
4587 command and return its output as a list split on '\n'.
4583
4588
4584 2004-03-31 Fernando Perez <fperez@colorado.edu>
4589 2004-03-31 Fernando Perez <fperez@colorado.edu>
4585
4590
4586 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4591 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
4587 method to dictionaries used as FakeModule instances if they lack
4592 method to dictionaries used as FakeModule instances if they lack
4588 it. At least pydoc in python2.3 breaks for runtime-defined
4593 it. At least pydoc in python2.3 breaks for runtime-defined
4589 functions without this hack. At some point I need to _really_
4594 functions without this hack. At some point I need to _really_
4590 understand what FakeModule is doing, because it's a gross hack.
4595 understand what FakeModule is doing, because it's a gross hack.
4591 But it solves Arnd's problem for now...
4596 But it solves Arnd's problem for now...
4592
4597
4593 2004-02-27 Fernando Perez <fperez@colorado.edu>
4598 2004-02-27 Fernando Perez <fperez@colorado.edu>
4594
4599
4595 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4600 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
4596 mode would behave erratically. Also increased the number of
4601 mode would behave erratically. Also increased the number of
4597 possible logs in rotate mod to 999. Thanks to Rod Holland
4602 possible logs in rotate mod to 999. Thanks to Rod Holland
4598 <rhh@StructureLABS.com> for the report and fixes.
4603 <rhh@StructureLABS.com> for the report and fixes.
4599
4604
4600 2004-02-26 Fernando Perez <fperez@colorado.edu>
4605 2004-02-26 Fernando Perez <fperez@colorado.edu>
4601
4606
4602 * IPython/genutils.py (page): Check that the curses module really
4607 * IPython/genutils.py (page): Check that the curses module really
4603 has the initscr attribute before trying to use it. For some
4608 has the initscr attribute before trying to use it. For some
4604 reason, the Solaris curses module is missing this. I think this
4609 reason, the Solaris curses module is missing this. I think this
4605 should be considered a Solaris python bug, but I'm not sure.
4610 should be considered a Solaris python bug, but I'm not sure.
4606
4611
4607 2004-01-17 Fernando Perez <fperez@colorado.edu>
4612 2004-01-17 Fernando Perez <fperez@colorado.edu>
4608
4613
4609 * IPython/genutils.py (Stream.__init__): Changes to try to make
4614 * IPython/genutils.py (Stream.__init__): Changes to try to make
4610 ipython robust against stdin/out/err being closed by the user.
4615 ipython robust against stdin/out/err being closed by the user.
4611 This is 'user error' (and blocks a normal python session, at least
4616 This is 'user error' (and blocks a normal python session, at least
4612 the stdout case). However, Ipython should be able to survive such
4617 the stdout case). However, Ipython should be able to survive such
4613 instances of abuse as gracefully as possible. To simplify the
4618 instances of abuse as gracefully as possible. To simplify the
4614 coding and maintain compatibility with Gary Bishop's Term
4619 coding and maintain compatibility with Gary Bishop's Term
4615 contributions, I've made use of classmethods for this. I think
4620 contributions, I've made use of classmethods for this. I think
4616 this introduces a dependency on python 2.2.
4621 this introduces a dependency on python 2.2.
4617
4622
4618 2004-01-13 Fernando Perez <fperez@colorado.edu>
4623 2004-01-13 Fernando Perez <fperez@colorado.edu>
4619
4624
4620 * IPython/numutils.py (exp_safe): simplified the code a bit and
4625 * IPython/numutils.py (exp_safe): simplified the code a bit and
4621 removed the need for importing the kinds module altogether.
4626 removed the need for importing the kinds module altogether.
4622
4627
4623 2004-01-06 Fernando Perez <fperez@colorado.edu>
4628 2004-01-06 Fernando Perez <fperez@colorado.edu>
4624
4629
4625 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4630 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
4626 a magic function instead, after some community feedback. No
4631 a magic function instead, after some community feedback. No
4627 special syntax will exist for it, but its name is deliberately
4632 special syntax will exist for it, but its name is deliberately
4628 very short.
4633 very short.
4629
4634
4630 2003-12-20 Fernando Perez <fperez@colorado.edu>
4635 2003-12-20 Fernando Perez <fperez@colorado.edu>
4631
4636
4632 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4637 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
4633 new functionality, to automagically assign the result of a shell
4638 new functionality, to automagically assign the result of a shell
4634 command to a variable. I'll solicit some community feedback on
4639 command to a variable. I'll solicit some community feedback on
4635 this before making it permanent.
4640 this before making it permanent.
4636
4641
4637 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4642 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
4638 requested about callables for which inspect couldn't obtain a
4643 requested about callables for which inspect couldn't obtain a
4639 proper argspec. Thanks to a crash report sent by Etienne
4644 proper argspec. Thanks to a crash report sent by Etienne
4640 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4645 Posthumus <etienne-AT-apple01.cs.vu.nl>.
4641
4646
4642 2003-12-09 Fernando Perez <fperez@colorado.edu>
4647 2003-12-09 Fernando Perez <fperez@colorado.edu>
4643
4648
4644 * IPython/genutils.py (page): patch for the pager to work across
4649 * IPython/genutils.py (page): patch for the pager to work across
4645 various versions of Windows. By Gary Bishop.
4650 various versions of Windows. By Gary Bishop.
4646
4651
4647 2003-12-04 Fernando Perez <fperez@colorado.edu>
4652 2003-12-04 Fernando Perez <fperez@colorado.edu>
4648
4653
4649 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4654 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
4650 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4655 Gnuplot.py version 1.7, whose internal names changed quite a bit.
4651 While I tested this and it looks ok, there may still be corner
4656 While I tested this and it looks ok, there may still be corner
4652 cases I've missed.
4657 cases I've missed.
4653
4658
4654 2003-12-01 Fernando Perez <fperez@colorado.edu>
4659 2003-12-01 Fernando Perez <fperez@colorado.edu>
4655
4660
4656 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4661 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
4657 where a line like 'p,q=1,2' would fail because the automagic
4662 where a line like 'p,q=1,2' would fail because the automagic
4658 system would be triggered for @p.
4663 system would be triggered for @p.
4659
4664
4660 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4665 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
4661 cleanups, code unmodified.
4666 cleanups, code unmodified.
4662
4667
4663 * IPython/genutils.py (Term): added a class for IPython to handle
4668 * IPython/genutils.py (Term): added a class for IPython to handle
4664 output. In most cases it will just be a proxy for stdout/err, but
4669 output. In most cases it will just be a proxy for stdout/err, but
4665 having this allows modifications to be made for some platforms,
4670 having this allows modifications to be made for some platforms,
4666 such as handling color escapes under Windows. All of this code
4671 such as handling color escapes under Windows. All of this code
4667 was contributed by Gary Bishop, with minor modifications by me.
4672 was contributed by Gary Bishop, with minor modifications by me.
4668 The actual changes affect many files.
4673 The actual changes affect many files.
4669
4674
4670 2003-11-30 Fernando Perez <fperez@colorado.edu>
4675 2003-11-30 Fernando Perez <fperez@colorado.edu>
4671
4676
4672 * IPython/iplib.py (file_matches): new completion code, courtesy
4677 * IPython/iplib.py (file_matches): new completion code, courtesy
4673 of Jeff Collins. This enables filename completion again under
4678 of Jeff Collins. This enables filename completion again under
4674 python 2.3, which disabled it at the C level.
4679 python 2.3, which disabled it at the C level.
4675
4680
4676 2003-11-11 Fernando Perez <fperez@colorado.edu>
4681 2003-11-11 Fernando Perez <fperez@colorado.edu>
4677
4682
4678 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4683 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
4679 for Numeric.array(map(...)), but often convenient.
4684 for Numeric.array(map(...)), but often convenient.
4680
4685
4681 2003-11-05 Fernando Perez <fperez@colorado.edu>
4686 2003-11-05 Fernando Perez <fperez@colorado.edu>
4682
4687
4683 * IPython/numutils.py (frange): Changed a call from int() to
4688 * IPython/numutils.py (frange): Changed a call from int() to
4684 int(round()) to prevent a problem reported with arange() in the
4689 int(round()) to prevent a problem reported with arange() in the
4685 numpy list.
4690 numpy list.
4686
4691
4687 2003-10-06 Fernando Perez <fperez@colorado.edu>
4692 2003-10-06 Fernando Perez <fperez@colorado.edu>
4688
4693
4689 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4694 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
4690 prevent crashes if sys lacks an argv attribute (it happens with
4695 prevent crashes if sys lacks an argv attribute (it happens with
4691 embedded interpreters which build a bare-bones sys module).
4696 embedded interpreters which build a bare-bones sys module).
4692 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4697 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
4693
4698
4694 2003-09-24 Fernando Perez <fperez@colorado.edu>
4699 2003-09-24 Fernando Perez <fperez@colorado.edu>
4695
4700
4696 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4701 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
4697 to protect against poorly written user objects where __getattr__
4702 to protect against poorly written user objects where __getattr__
4698 raises exceptions other than AttributeError. Thanks to a bug
4703 raises exceptions other than AttributeError. Thanks to a bug
4699 report by Oliver Sander <osander-AT-gmx.de>.
4704 report by Oliver Sander <osander-AT-gmx.de>.
4700
4705
4701 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4706 * IPython/FakeModule.py (FakeModule.__repr__): this method was
4702 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4707 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
4703
4708
4704 2003-09-09 Fernando Perez <fperez@colorado.edu>
4709 2003-09-09 Fernando Perez <fperez@colorado.edu>
4705
4710
4706 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4711 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
4707 unpacking a list whith a callable as first element would
4712 unpacking a list whith a callable as first element would
4708 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4713 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
4709 Collins.
4714 Collins.
4710
4715
4711 2003-08-25 *** Released version 0.5.0
4716 2003-08-25 *** Released version 0.5.0
4712
4717
4713 2003-08-22 Fernando Perez <fperez@colorado.edu>
4718 2003-08-22 Fernando Perez <fperez@colorado.edu>
4714
4719
4715 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4720 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
4716 improperly defined user exceptions. Thanks to feedback from Mark
4721 improperly defined user exceptions. Thanks to feedback from Mark
4717 Russell <mrussell-AT-verio.net>.
4722 Russell <mrussell-AT-verio.net>.
4718
4723
4719 2003-08-20 Fernando Perez <fperez@colorado.edu>
4724 2003-08-20 Fernando Perez <fperez@colorado.edu>
4720
4725
4721 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4726 * IPython/OInspect.py (Inspector.pinfo): changed String Form
4722 printing so that it would print multi-line string forms starting
4727 printing so that it would print multi-line string forms starting
4723 with a new line. This way the formatting is better respected for
4728 with a new line. This way the formatting is better respected for
4724 objects which work hard to make nice string forms.
4729 objects which work hard to make nice string forms.
4725
4730
4726 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4731 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
4727 autocall would overtake data access for objects with both
4732 autocall would overtake data access for objects with both
4728 __getitem__ and __call__.
4733 __getitem__ and __call__.
4729
4734
4730 2003-08-19 *** Released version 0.5.0-rc1
4735 2003-08-19 *** Released version 0.5.0-rc1
4731
4736
4732 2003-08-19 Fernando Perez <fperez@colorado.edu>
4737 2003-08-19 Fernando Perez <fperez@colorado.edu>
4733
4738
4734 * IPython/deep_reload.py (load_tail): single tiny change here
4739 * IPython/deep_reload.py (load_tail): single tiny change here
4735 seems to fix the long-standing bug of dreload() failing to work
4740 seems to fix the long-standing bug of dreload() failing to work
4736 for dotted names. But this module is pretty tricky, so I may have
4741 for dotted names. But this module is pretty tricky, so I may have
4737 missed some subtlety. Needs more testing!.
4742 missed some subtlety. Needs more testing!.
4738
4743
4739 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4744 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
4740 exceptions which have badly implemented __str__ methods.
4745 exceptions which have badly implemented __str__ methods.
4741 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4746 (VerboseTB.text): harden against inspect.getinnerframes crashing,
4742 which I've been getting reports about from Python 2.3 users. I
4747 which I've been getting reports about from Python 2.3 users. I
4743 wish I had a simple test case to reproduce the problem, so I could
4748 wish I had a simple test case to reproduce the problem, so I could
4744 either write a cleaner workaround or file a bug report if
4749 either write a cleaner workaround or file a bug report if
4745 necessary.
4750 necessary.
4746
4751
4747 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4752 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
4748 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4753 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
4749 a bug report by Tjabo Kloppenburg.
4754 a bug report by Tjabo Kloppenburg.
4750
4755
4751 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4756 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
4752 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4757 crashes. Wrapped the pdb call in a blanket try/except, since pdb
4753 seems rather unstable. Thanks to a bug report by Tjabo
4758 seems rather unstable. Thanks to a bug report by Tjabo
4754 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4759 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
4755
4760
4756 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4761 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
4757 this out soon because of the critical fixes in the inner loop for
4762 this out soon because of the critical fixes in the inner loop for
4758 generators.
4763 generators.
4759
4764
4760 * IPython/Magic.py (Magic.getargspec): removed. This (and
4765 * IPython/Magic.py (Magic.getargspec): removed. This (and
4761 _get_def) have been obsoleted by OInspect for a long time, I
4766 _get_def) have been obsoleted by OInspect for a long time, I
4762 hadn't noticed that they were dead code.
4767 hadn't noticed that they were dead code.
4763 (Magic._ofind): restored _ofind functionality for a few literals
4768 (Magic._ofind): restored _ofind functionality for a few literals
4764 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4769 (those in ["''",'""','[]','{}','()']). But it won't work anymore
4765 for things like "hello".capitalize?, since that would require a
4770 for things like "hello".capitalize?, since that would require a
4766 potentially dangerous eval() again.
4771 potentially dangerous eval() again.
4767
4772
4768 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4773 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
4769 logic a bit more to clean up the escapes handling and minimize the
4774 logic a bit more to clean up the escapes handling and minimize the
4770 use of _ofind to only necessary cases. The interactive 'feel' of
4775 use of _ofind to only necessary cases. The interactive 'feel' of
4771 IPython should have improved quite a bit with the changes in
4776 IPython should have improved quite a bit with the changes in
4772 _prefilter and _ofind (besides being far safer than before).
4777 _prefilter and _ofind (besides being far safer than before).
4773
4778
4774 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4779 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
4775 obscure, never reported). Edit would fail to find the object to
4780 obscure, never reported). Edit would fail to find the object to
4776 edit under some circumstances.
4781 edit under some circumstances.
4777 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4782 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
4778 which were causing double-calling of generators. Those eval calls
4783 which were causing double-calling of generators. Those eval calls
4779 were _very_ dangerous, since code with side effects could be
4784 were _very_ dangerous, since code with side effects could be
4780 triggered. As they say, 'eval is evil'... These were the
4785 triggered. As they say, 'eval is evil'... These were the
4781 nastiest evals in IPython. Besides, _ofind is now far simpler,
4786 nastiest evals in IPython. Besides, _ofind is now far simpler,
4782 and it should also be quite a bit faster. Its use of inspect is
4787 and it should also be quite a bit faster. Its use of inspect is
4783 also safer, so perhaps some of the inspect-related crashes I've
4788 also safer, so perhaps some of the inspect-related crashes I've
4784 seen lately with Python 2.3 might be taken care of. That will
4789 seen lately with Python 2.3 might be taken care of. That will
4785 need more testing.
4790 need more testing.
4786
4791
4787 2003-08-17 Fernando Perez <fperez@colorado.edu>
4792 2003-08-17 Fernando Perez <fperez@colorado.edu>
4788
4793
4789 * IPython/iplib.py (InteractiveShell._prefilter): significant
4794 * IPython/iplib.py (InteractiveShell._prefilter): significant
4790 simplifications to the logic for handling user escapes. Faster
4795 simplifications to the logic for handling user escapes. Faster
4791 and simpler code.
4796 and simpler code.
4792
4797
4793 2003-08-14 Fernando Perez <fperez@colorado.edu>
4798 2003-08-14 Fernando Perez <fperez@colorado.edu>
4794
4799
4795 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4800 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
4796 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4801 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
4797 but it should be quite a bit faster. And the recursive version
4802 but it should be quite a bit faster. And the recursive version
4798 generated O(log N) intermediate storage for all rank>1 arrays,
4803 generated O(log N) intermediate storage for all rank>1 arrays,
4799 even if they were contiguous.
4804 even if they were contiguous.
4800 (l1norm): Added this function.
4805 (l1norm): Added this function.
4801 (norm): Added this function for arbitrary norms (including
4806 (norm): Added this function for arbitrary norms (including
4802 l-infinity). l1 and l2 are still special cases for convenience
4807 l-infinity). l1 and l2 are still special cases for convenience
4803 and speed.
4808 and speed.
4804
4809
4805 2003-08-03 Fernando Perez <fperez@colorado.edu>
4810 2003-08-03 Fernando Perez <fperez@colorado.edu>
4806
4811
4807 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4812 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
4808 exceptions, which now raise PendingDeprecationWarnings in Python
4813 exceptions, which now raise PendingDeprecationWarnings in Python
4809 2.3. There were some in Magic and some in Gnuplot2.
4814 2.3. There were some in Magic and some in Gnuplot2.
4810
4815
4811 2003-06-30 Fernando Perez <fperez@colorado.edu>
4816 2003-06-30 Fernando Perez <fperez@colorado.edu>
4812
4817
4813 * IPython/genutils.py (page): modified to call curses only for
4818 * IPython/genutils.py (page): modified to call curses only for
4814 terminals where TERM=='xterm'. After problems under many other
4819 terminals where TERM=='xterm'. After problems under many other
4815 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4820 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
4816
4821
4817 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4822 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
4818 would be triggered when readline was absent. This was just an old
4823 would be triggered when readline was absent. This was just an old
4819 debugging statement I'd forgotten to take out.
4824 debugging statement I'd forgotten to take out.
4820
4825
4821 2003-06-20 Fernando Perez <fperez@colorado.edu>
4826 2003-06-20 Fernando Perez <fperez@colorado.edu>
4822
4827
4823 * IPython/genutils.py (clock): modified to return only user time
4828 * IPython/genutils.py (clock): modified to return only user time
4824 (not counting system time), after a discussion on scipy. While
4829 (not counting system time), after a discussion on scipy. While
4825 system time may be a useful quantity occasionally, it may much
4830 system time may be a useful quantity occasionally, it may much
4826 more easily be skewed by occasional swapping or other similar
4831 more easily be skewed by occasional swapping or other similar
4827 activity.
4832 activity.
4828
4833
4829 2003-06-05 Fernando Perez <fperez@colorado.edu>
4834 2003-06-05 Fernando Perez <fperez@colorado.edu>
4830
4835
4831 * IPython/numutils.py (identity): new function, for building
4836 * IPython/numutils.py (identity): new function, for building
4832 arbitrary rank Kronecker deltas (mostly backwards compatible with
4837 arbitrary rank Kronecker deltas (mostly backwards compatible with
4833 Numeric.identity)
4838 Numeric.identity)
4834
4839
4835 2003-06-03 Fernando Perez <fperez@colorado.edu>
4840 2003-06-03 Fernando Perez <fperez@colorado.edu>
4836
4841
4837 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4842 * IPython/iplib.py (InteractiveShell.handle_magic): protect
4838 arguments passed to magics with spaces, to allow trailing '\' to
4843 arguments passed to magics with spaces, to allow trailing '\' to
4839 work normally (mainly for Windows users).
4844 work normally (mainly for Windows users).
4840
4845
4841 2003-05-29 Fernando Perez <fperez@colorado.edu>
4846 2003-05-29 Fernando Perez <fperez@colorado.edu>
4842
4847
4843 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4848 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
4844 instead of pydoc.help. This fixes a bizarre behavior where
4849 instead of pydoc.help. This fixes a bizarre behavior where
4845 printing '%s' % locals() would trigger the help system. Now
4850 printing '%s' % locals() would trigger the help system. Now
4846 ipython behaves like normal python does.
4851 ipython behaves like normal python does.
4847
4852
4848 Note that if one does 'from pydoc import help', the bizarre
4853 Note that if one does 'from pydoc import help', the bizarre
4849 behavior returns, but this will also happen in normal python, so
4854 behavior returns, but this will also happen in normal python, so
4850 it's not an ipython bug anymore (it has to do with how pydoc.help
4855 it's not an ipython bug anymore (it has to do with how pydoc.help
4851 is implemented).
4856 is implemented).
4852
4857
4853 2003-05-22 Fernando Perez <fperez@colorado.edu>
4858 2003-05-22 Fernando Perez <fperez@colorado.edu>
4854
4859
4855 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4860 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
4856 return [] instead of None when nothing matches, also match to end
4861 return [] instead of None when nothing matches, also match to end
4857 of line. Patch by Gary Bishop.
4862 of line. Patch by Gary Bishop.
4858
4863
4859 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4864 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
4860 protection as before, for files passed on the command line. This
4865 protection as before, for files passed on the command line. This
4861 prevents the CrashHandler from kicking in if user files call into
4866 prevents the CrashHandler from kicking in if user files call into
4862 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4867 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
4863 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4868 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
4864
4869
4865 2003-05-20 *** Released version 0.4.0
4870 2003-05-20 *** Released version 0.4.0
4866
4871
4867 2003-05-20 Fernando Perez <fperez@colorado.edu>
4872 2003-05-20 Fernando Perez <fperez@colorado.edu>
4868
4873
4869 * setup.py: added support for manpages. It's a bit hackish b/c of
4874 * setup.py: added support for manpages. It's a bit hackish b/c of
4870 a bug in the way the bdist_rpm distutils target handles gzipped
4875 a bug in the way the bdist_rpm distutils target handles gzipped
4871 manpages, but it works. After a patch by Jack.
4876 manpages, but it works. After a patch by Jack.
4872
4877
4873 2003-05-19 Fernando Perez <fperez@colorado.edu>
4878 2003-05-19 Fernando Perez <fperez@colorado.edu>
4874
4879
4875 * IPython/numutils.py: added a mockup of the kinds module, since
4880 * IPython/numutils.py: added a mockup of the kinds module, since
4876 it was recently removed from Numeric. This way, numutils will
4881 it was recently removed from Numeric. This way, numutils will
4877 work for all users even if they are missing kinds.
4882 work for all users even if they are missing kinds.
4878
4883
4879 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4884 * IPython/Magic.py (Magic._ofind): Harden against an inspect
4880 failure, which can occur with SWIG-wrapped extensions. After a
4885 failure, which can occur with SWIG-wrapped extensions. After a
4881 crash report from Prabhu.
4886 crash report from Prabhu.
4882
4887
4883 2003-05-16 Fernando Perez <fperez@colorado.edu>
4888 2003-05-16 Fernando Perez <fperez@colorado.edu>
4884
4889
4885 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4890 * IPython/iplib.py (InteractiveShell.excepthook): New method to
4886 protect ipython from user code which may call directly
4891 protect ipython from user code which may call directly
4887 sys.excepthook (this looks like an ipython crash to the user, even
4892 sys.excepthook (this looks like an ipython crash to the user, even
4888 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4893 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4889 This is especially important to help users of WxWindows, but may
4894 This is especially important to help users of WxWindows, but may
4890 also be useful in other cases.
4895 also be useful in other cases.
4891
4896
4892 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4897 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
4893 an optional tb_offset to be specified, and to preserve exception
4898 an optional tb_offset to be specified, and to preserve exception
4894 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4899 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
4895
4900
4896 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4901 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
4897
4902
4898 2003-05-15 Fernando Perez <fperez@colorado.edu>
4903 2003-05-15 Fernando Perez <fperez@colorado.edu>
4899
4904
4900 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4905 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
4901 installing for a new user under Windows.
4906 installing for a new user under Windows.
4902
4907
4903 2003-05-12 Fernando Perez <fperez@colorado.edu>
4908 2003-05-12 Fernando Perez <fperez@colorado.edu>
4904
4909
4905 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4910 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
4906 handler for Emacs comint-based lines. Currently it doesn't do
4911 handler for Emacs comint-based lines. Currently it doesn't do
4907 much (but importantly, it doesn't update the history cache). In
4912 much (but importantly, it doesn't update the history cache). In
4908 the future it may be expanded if Alex needs more functionality
4913 the future it may be expanded if Alex needs more functionality
4909 there.
4914 there.
4910
4915
4911 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4916 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
4912 info to crash reports.
4917 info to crash reports.
4913
4918
4914 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4919 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
4915 just like Python's -c. Also fixed crash with invalid -color
4920 just like Python's -c. Also fixed crash with invalid -color
4916 option value at startup. Thanks to Will French
4921 option value at startup. Thanks to Will French
4917 <wfrench-AT-bestweb.net> for the bug report.
4922 <wfrench-AT-bestweb.net> for the bug report.
4918
4923
4919 2003-05-09 Fernando Perez <fperez@colorado.edu>
4924 2003-05-09 Fernando Perez <fperez@colorado.edu>
4920
4925
4921 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4926 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
4922 to EvalDict (it's a mapping, after all) and simplified its code
4927 to EvalDict (it's a mapping, after all) and simplified its code
4923 quite a bit, after a nice discussion on c.l.py where Gustavo
4928 quite a bit, after a nice discussion on c.l.py where Gustavo
4924 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4929 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
4925
4930
4926 2003-04-30 Fernando Perez <fperez@colorado.edu>
4931 2003-04-30 Fernando Perez <fperez@colorado.edu>
4927
4932
4928 * IPython/genutils.py (timings_out): modified it to reduce its
4933 * IPython/genutils.py (timings_out): modified it to reduce its
4929 overhead in the common reps==1 case.
4934 overhead in the common reps==1 case.
4930
4935
4931 2003-04-29 Fernando Perez <fperez@colorado.edu>
4936 2003-04-29 Fernando Perez <fperez@colorado.edu>
4932
4937
4933 * IPython/genutils.py (timings_out): Modified to use the resource
4938 * IPython/genutils.py (timings_out): Modified to use the resource
4934 module, which avoids the wraparound problems of time.clock().
4939 module, which avoids the wraparound problems of time.clock().
4935
4940
4936 2003-04-17 *** Released version 0.2.15pre4
4941 2003-04-17 *** Released version 0.2.15pre4
4937
4942
4938 2003-04-17 Fernando Perez <fperez@colorado.edu>
4943 2003-04-17 Fernando Perez <fperez@colorado.edu>
4939
4944
4940 * setup.py (scriptfiles): Split windows-specific stuff over to a
4945 * setup.py (scriptfiles): Split windows-specific stuff over to a
4941 separate file, in an attempt to have a Windows GUI installer.
4946 separate file, in an attempt to have a Windows GUI installer.
4942 That didn't work, but part of the groundwork is done.
4947 That didn't work, but part of the groundwork is done.
4943
4948
4944 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4949 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
4945 indent/unindent with 4 spaces. Particularly useful in combination
4950 indent/unindent with 4 spaces. Particularly useful in combination
4946 with the new auto-indent option.
4951 with the new auto-indent option.
4947
4952
4948 2003-04-16 Fernando Perez <fperez@colorado.edu>
4953 2003-04-16 Fernando Perez <fperez@colorado.edu>
4949
4954
4950 * IPython/Magic.py: various replacements of self.rc for
4955 * IPython/Magic.py: various replacements of self.rc for
4951 self.shell.rc. A lot more remains to be done to fully disentangle
4956 self.shell.rc. A lot more remains to be done to fully disentangle
4952 this class from the main Shell class.
4957 this class from the main Shell class.
4953
4958
4954 * IPython/GnuplotRuntime.py: added checks for mouse support so
4959 * IPython/GnuplotRuntime.py: added checks for mouse support so
4955 that we don't try to enable it if the current gnuplot doesn't
4960 that we don't try to enable it if the current gnuplot doesn't
4956 really support it. Also added checks so that we don't try to
4961 really support it. Also added checks so that we don't try to
4957 enable persist under Windows (where Gnuplot doesn't recognize the
4962 enable persist under Windows (where Gnuplot doesn't recognize the
4958 option).
4963 option).
4959
4964
4960 * IPython/iplib.py (InteractiveShell.interact): Added optional
4965 * IPython/iplib.py (InteractiveShell.interact): Added optional
4961 auto-indenting code, after a patch by King C. Shu
4966 auto-indenting code, after a patch by King C. Shu
4962 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4967 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
4963 get along well with pasting indented code. If I ever figure out
4968 get along well with pasting indented code. If I ever figure out
4964 how to make that part go well, it will become on by default.
4969 how to make that part go well, it will become on by default.
4965
4970
4966 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4971 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
4967 crash ipython if there was an unmatched '%' in the user's prompt
4972 crash ipython if there was an unmatched '%' in the user's prompt
4968 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4973 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
4969
4974
4970 * IPython/iplib.py (InteractiveShell.interact): removed the
4975 * IPython/iplib.py (InteractiveShell.interact): removed the
4971 ability to ask the user whether he wants to crash or not at the
4976 ability to ask the user whether he wants to crash or not at the
4972 'last line' exception handler. Calling functions at that point
4977 'last line' exception handler. Calling functions at that point
4973 changes the stack, and the error reports would have incorrect
4978 changes the stack, and the error reports would have incorrect
4974 tracebacks.
4979 tracebacks.
4975
4980
4976 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4981 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
4977 pass through a peger a pretty-printed form of any object. After a
4982 pass through a peger a pretty-printed form of any object. After a
4978 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4983 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
4979
4984
4980 2003-04-14 Fernando Perez <fperez@colorado.edu>
4985 2003-04-14 Fernando Perez <fperez@colorado.edu>
4981
4986
4982 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4987 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
4983 all files in ~ would be modified at first install (instead of
4988 all files in ~ would be modified at first install (instead of
4984 ~/.ipython). This could be potentially disastrous, as the
4989 ~/.ipython). This could be potentially disastrous, as the
4985 modification (make line-endings native) could damage binary files.
4990 modification (make line-endings native) could damage binary files.
4986
4991
4987 2003-04-10 Fernando Perez <fperez@colorado.edu>
4992 2003-04-10 Fernando Perez <fperez@colorado.edu>
4988
4993
4989 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4994 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
4990 handle only lines which are invalid python. This now means that
4995 handle only lines which are invalid python. This now means that
4991 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4996 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
4992 for the bug report.
4997 for the bug report.
4993
4998
4994 2003-04-01 Fernando Perez <fperez@colorado.edu>
4999 2003-04-01 Fernando Perez <fperez@colorado.edu>
4995
5000
4996 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
5001 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
4997 where failing to set sys.last_traceback would crash pdb.pm().
5002 where failing to set sys.last_traceback would crash pdb.pm().
4998 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
5003 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
4999 report.
5004 report.
5000
5005
5001 2003-03-25 Fernando Perez <fperez@colorado.edu>
5006 2003-03-25 Fernando Perez <fperez@colorado.edu>
5002
5007
5003 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5008 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
5004 before printing it (it had a lot of spurious blank lines at the
5009 before printing it (it had a lot of spurious blank lines at the
5005 end).
5010 end).
5006
5011
5007 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5012 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
5008 output would be sent 21 times! Obviously people don't use this
5013 output would be sent 21 times! Obviously people don't use this
5009 too often, or I would have heard about it.
5014 too often, or I would have heard about it.
5010
5015
5011 2003-03-24 Fernando Perez <fperez@colorado.edu>
5016 2003-03-24 Fernando Perez <fperez@colorado.edu>
5012
5017
5013 * setup.py (scriptfiles): renamed the data_files parameter from
5018 * setup.py (scriptfiles): renamed the data_files parameter from
5014 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5019 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
5015 for the patch.
5020 for the patch.
5016
5021
5017 2003-03-20 Fernando Perez <fperez@colorado.edu>
5022 2003-03-20 Fernando Perez <fperez@colorado.edu>
5018
5023
5019 * IPython/genutils.py (error): added error() and fatal()
5024 * IPython/genutils.py (error): added error() and fatal()
5020 functions.
5025 functions.
5021
5026
5022 2003-03-18 *** Released version 0.2.15pre3
5027 2003-03-18 *** Released version 0.2.15pre3
5023
5028
5024 2003-03-18 Fernando Perez <fperez@colorado.edu>
5029 2003-03-18 Fernando Perez <fperez@colorado.edu>
5025
5030
5026 * setupext/install_data_ext.py
5031 * setupext/install_data_ext.py
5027 (install_data_ext.initialize_options): Class contributed by Jack
5032 (install_data_ext.initialize_options): Class contributed by Jack
5028 Moffit for fixing the old distutils hack. He is sending this to
5033 Moffit for fixing the old distutils hack. He is sending this to
5029 the distutils folks so in the future we may not need it as a
5034 the distutils folks so in the future we may not need it as a
5030 private fix.
5035 private fix.
5031
5036
5032 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5037 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
5033 changes for Debian packaging. See his patch for full details.
5038 changes for Debian packaging. See his patch for full details.
5034 The old distutils hack of making the ipythonrc* files carry a
5039 The old distutils hack of making the ipythonrc* files carry a
5035 bogus .py extension is gone, at last. Examples were moved to a
5040 bogus .py extension is gone, at last. Examples were moved to a
5036 separate subdir under doc/, and the separate executable scripts
5041 separate subdir under doc/, and the separate executable scripts
5037 now live in their own directory. Overall a great cleanup. The
5042 now live in their own directory. Overall a great cleanup. The
5038 manual was updated to use the new files, and setup.py has been
5043 manual was updated to use the new files, and setup.py has been
5039 fixed for this setup.
5044 fixed for this setup.
5040
5045
5041 * IPython/PyColorize.py (Parser.usage): made non-executable and
5046 * IPython/PyColorize.py (Parser.usage): made non-executable and
5042 created a pycolor wrapper around it to be included as a script.
5047 created a pycolor wrapper around it to be included as a script.
5043
5048
5044 2003-03-12 *** Released version 0.2.15pre2
5049 2003-03-12 *** Released version 0.2.15pre2
5045
5050
5046 2003-03-12 Fernando Perez <fperez@colorado.edu>
5051 2003-03-12 Fernando Perez <fperez@colorado.edu>
5047
5052
5048 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5053 * IPython/ColorANSI.py (make_color_table): Finally fixed the
5049 long-standing problem with garbage characters in some terminals.
5054 long-standing problem with garbage characters in some terminals.
5050 The issue was really that the \001 and \002 escapes must _only_ be
5055 The issue was really that the \001 and \002 escapes must _only_ be
5051 passed to input prompts (which call readline), but _never_ to
5056 passed to input prompts (which call readline), but _never_ to
5052 normal text to be printed on screen. I changed ColorANSI to have
5057 normal text to be printed on screen. I changed ColorANSI to have
5053 two classes: TermColors and InputTermColors, each with the
5058 two classes: TermColors and InputTermColors, each with the
5054 appropriate escapes for input prompts or normal text. The code in
5059 appropriate escapes for input prompts or normal text. The code in
5055 Prompts.py got slightly more complicated, but this very old and
5060 Prompts.py got slightly more complicated, but this very old and
5056 annoying bug is finally fixed.
5061 annoying bug is finally fixed.
5057
5062
5058 All the credit for nailing down the real origin of this problem
5063 All the credit for nailing down the real origin of this problem
5059 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5064 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
5060 *Many* thanks to him for spending quite a bit of effort on this.
5065 *Many* thanks to him for spending quite a bit of effort on this.
5061
5066
5062 2003-03-05 *** Released version 0.2.15pre1
5067 2003-03-05 *** Released version 0.2.15pre1
5063
5068
5064 2003-03-03 Fernando Perez <fperez@colorado.edu>
5069 2003-03-03 Fernando Perez <fperez@colorado.edu>
5065
5070
5066 * IPython/FakeModule.py: Moved the former _FakeModule to a
5071 * IPython/FakeModule.py: Moved the former _FakeModule to a
5067 separate file, because it's also needed by Magic (to fix a similar
5072 separate file, because it's also needed by Magic (to fix a similar
5068 pickle-related issue in @run).
5073 pickle-related issue in @run).
5069
5074
5070 2003-03-02 Fernando Perez <fperez@colorado.edu>
5075 2003-03-02 Fernando Perez <fperez@colorado.edu>
5071
5076
5072 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5077 * IPython/Magic.py (Magic.magic_autocall): new magic to control
5073 the autocall option at runtime.
5078 the autocall option at runtime.
5074 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5079 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
5075 across Magic.py to start separating Magic from InteractiveShell.
5080 across Magic.py to start separating Magic from InteractiveShell.
5076 (Magic._ofind): Fixed to return proper namespace for dotted
5081 (Magic._ofind): Fixed to return proper namespace for dotted
5077 names. Before, a dotted name would always return 'not currently
5082 names. Before, a dotted name would always return 'not currently
5078 defined', because it would find the 'parent'. s.x would be found,
5083 defined', because it would find the 'parent'. s.x would be found,
5079 but since 'x' isn't defined by itself, it would get confused.
5084 but since 'x' isn't defined by itself, it would get confused.
5080 (Magic.magic_run): Fixed pickling problems reported by Ralf
5085 (Magic.magic_run): Fixed pickling problems reported by Ralf
5081 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5086 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
5082 that I'd used when Mike Heeter reported similar issues at the
5087 that I'd used when Mike Heeter reported similar issues at the
5083 top-level, but now for @run. It boils down to injecting the
5088 top-level, but now for @run. It boils down to injecting the
5084 namespace where code is being executed with something that looks
5089 namespace where code is being executed with something that looks
5085 enough like a module to fool pickle.dump(). Since a pickle stores
5090 enough like a module to fool pickle.dump(). Since a pickle stores
5086 a named reference to the importing module, we need this for
5091 a named reference to the importing module, we need this for
5087 pickles to save something sensible.
5092 pickles to save something sensible.
5088
5093
5089 * IPython/ipmaker.py (make_IPython): added an autocall option.
5094 * IPython/ipmaker.py (make_IPython): added an autocall option.
5090
5095
5091 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5096 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
5092 the auto-eval code. Now autocalling is an option, and the code is
5097 the auto-eval code. Now autocalling is an option, and the code is
5093 also vastly safer. There is no more eval() involved at all.
5098 also vastly safer. There is no more eval() involved at all.
5094
5099
5095 2003-03-01 Fernando Perez <fperez@colorado.edu>
5100 2003-03-01 Fernando Perez <fperez@colorado.edu>
5096
5101
5097 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5102 * IPython/Magic.py (Magic._ofind): Changed interface to return a
5098 dict with named keys instead of a tuple.
5103 dict with named keys instead of a tuple.
5099
5104
5100 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5105 * IPython: Started using CVS for IPython as of 0.2.15pre1.
5101
5106
5102 * setup.py (make_shortcut): Fixed message about directories
5107 * setup.py (make_shortcut): Fixed message about directories
5103 created during Windows installation (the directories were ok, just
5108 created during Windows installation (the directories were ok, just
5104 the printed message was misleading). Thanks to Chris Liechti
5109 the printed message was misleading). Thanks to Chris Liechti
5105 <cliechti-AT-gmx.net> for the heads up.
5110 <cliechti-AT-gmx.net> for the heads up.
5106
5111
5107 2003-02-21 Fernando Perez <fperez@colorado.edu>
5112 2003-02-21 Fernando Perez <fperez@colorado.edu>
5108
5113
5109 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5114 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
5110 of ValueError exception when checking for auto-execution. This
5115 of ValueError exception when checking for auto-execution. This
5111 one is raised by things like Numeric arrays arr.flat when the
5116 one is raised by things like Numeric arrays arr.flat when the
5112 array is non-contiguous.
5117 array is non-contiguous.
5113
5118
5114 2003-01-31 Fernando Perez <fperez@colorado.edu>
5119 2003-01-31 Fernando Perez <fperez@colorado.edu>
5115
5120
5116 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5121 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
5117 not return any value at all (even though the command would get
5122 not return any value at all (even though the command would get
5118 executed).
5123 executed).
5119 (xsys): Flush stdout right after printing the command to ensure
5124 (xsys): Flush stdout right after printing the command to ensure
5120 proper ordering of commands and command output in the total
5125 proper ordering of commands and command output in the total
5121 output.
5126 output.
5122 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5127 (SystemExec/xsys/bq): Switched the names of xsys/bq and
5123 system/getoutput as defaults. The old ones are kept for
5128 system/getoutput as defaults. The old ones are kept for
5124 compatibility reasons, so no code which uses this library needs
5129 compatibility reasons, so no code which uses this library needs
5125 changing.
5130 changing.
5126
5131
5127 2003-01-27 *** Released version 0.2.14
5132 2003-01-27 *** Released version 0.2.14
5128
5133
5129 2003-01-25 Fernando Perez <fperez@colorado.edu>
5134 2003-01-25 Fernando Perez <fperez@colorado.edu>
5130
5135
5131 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5136 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
5132 functions defined in previous edit sessions could not be re-edited
5137 functions defined in previous edit sessions could not be re-edited
5133 (because the temp files were immediately removed). Now temp files
5138 (because the temp files were immediately removed). Now temp files
5134 are removed only at IPython's exit.
5139 are removed only at IPython's exit.
5135 (Magic.magic_run): Improved @run to perform shell-like expansions
5140 (Magic.magic_run): Improved @run to perform shell-like expansions
5136 on its arguments (~users and $VARS). With this, @run becomes more
5141 on its arguments (~users and $VARS). With this, @run becomes more
5137 like a normal command-line.
5142 like a normal command-line.
5138
5143
5139 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5144 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
5140 bugs related to embedding and cleaned up that code. A fairly
5145 bugs related to embedding and cleaned up that code. A fairly
5141 important one was the impossibility to access the global namespace
5146 important one was the impossibility to access the global namespace
5142 through the embedded IPython (only local variables were visible).
5147 through the embedded IPython (only local variables were visible).
5143
5148
5144 2003-01-14 Fernando Perez <fperez@colorado.edu>
5149 2003-01-14 Fernando Perez <fperez@colorado.edu>
5145
5150
5146 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5151 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
5147 auto-calling to be a bit more conservative. Now it doesn't get
5152 auto-calling to be a bit more conservative. Now it doesn't get
5148 triggered if any of '!=()<>' are in the rest of the input line, to
5153 triggered if any of '!=()<>' are in the rest of the input line, to
5149 allow comparing callables. Thanks to Alex for the heads up.
5154 allow comparing callables. Thanks to Alex for the heads up.
5150
5155
5151 2003-01-07 Fernando Perez <fperez@colorado.edu>
5156 2003-01-07 Fernando Perez <fperez@colorado.edu>
5152
5157
5153 * IPython/genutils.py (page): fixed estimation of the number of
5158 * IPython/genutils.py (page): fixed estimation of the number of
5154 lines in a string to be paged to simply count newlines. This
5159 lines in a string to be paged to simply count newlines. This
5155 prevents over-guessing due to embedded escape sequences. A better
5160 prevents over-guessing due to embedded escape sequences. A better
5156 long-term solution would involve stripping out the control chars
5161 long-term solution would involve stripping out the control chars
5157 for the count, but it's potentially so expensive I just don't
5162 for the count, but it's potentially so expensive I just don't
5158 think it's worth doing.
5163 think it's worth doing.
5159
5164
5160 2002-12-19 *** Released version 0.2.14pre50
5165 2002-12-19 *** Released version 0.2.14pre50
5161
5166
5162 2002-12-19 Fernando Perez <fperez@colorado.edu>
5167 2002-12-19 Fernando Perez <fperez@colorado.edu>
5163
5168
5164 * tools/release (version): Changed release scripts to inform
5169 * tools/release (version): Changed release scripts to inform
5165 Andrea and build a NEWS file with a list of recent changes.
5170 Andrea and build a NEWS file with a list of recent changes.
5166
5171
5167 * IPython/ColorANSI.py (__all__): changed terminal detection
5172 * IPython/ColorANSI.py (__all__): changed terminal detection
5168 code. Seems to work better for xterms without breaking
5173 code. Seems to work better for xterms without breaking
5169 konsole. Will need more testing to determine if WinXP and Mac OSX
5174 konsole. Will need more testing to determine if WinXP and Mac OSX
5170 also work ok.
5175 also work ok.
5171
5176
5172 2002-12-18 *** Released version 0.2.14pre49
5177 2002-12-18 *** Released version 0.2.14pre49
5173
5178
5174 2002-12-18 Fernando Perez <fperez@colorado.edu>
5179 2002-12-18 Fernando Perez <fperez@colorado.edu>
5175
5180
5176 * Docs: added new info about Mac OSX, from Andrea.
5181 * Docs: added new info about Mac OSX, from Andrea.
5177
5182
5178 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5183 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
5179 allow direct plotting of python strings whose format is the same
5184 allow direct plotting of python strings whose format is the same
5180 of gnuplot data files.
5185 of gnuplot data files.
5181
5186
5182 2002-12-16 Fernando Perez <fperez@colorado.edu>
5187 2002-12-16 Fernando Perez <fperez@colorado.edu>
5183
5188
5184 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5189 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
5185 value of exit question to be acknowledged.
5190 value of exit question to be acknowledged.
5186
5191
5187 2002-12-03 Fernando Perez <fperez@colorado.edu>
5192 2002-12-03 Fernando Perez <fperez@colorado.edu>
5188
5193
5189 * IPython/ipmaker.py: removed generators, which had been added
5194 * IPython/ipmaker.py: removed generators, which had been added
5190 by mistake in an earlier debugging run. This was causing trouble
5195 by mistake in an earlier debugging run. This was causing trouble
5191 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5196 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
5192 for pointing this out.
5197 for pointing this out.
5193
5198
5194 2002-11-17 Fernando Perez <fperez@colorado.edu>
5199 2002-11-17 Fernando Perez <fperez@colorado.edu>
5195
5200
5196 * Manual: updated the Gnuplot section.
5201 * Manual: updated the Gnuplot section.
5197
5202
5198 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5203 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
5199 a much better split of what goes in Runtime and what goes in
5204 a much better split of what goes in Runtime and what goes in
5200 Interactive.
5205 Interactive.
5201
5206
5202 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5207 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
5203 being imported from iplib.
5208 being imported from iplib.
5204
5209
5205 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5210 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
5206 for command-passing. Now the global Gnuplot instance is called
5211 for command-passing. Now the global Gnuplot instance is called
5207 'gp' instead of 'g', which was really a far too fragile and
5212 'gp' instead of 'g', which was really a far too fragile and
5208 common name.
5213 common name.
5209
5214
5210 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5215 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
5211 bounding boxes generated by Gnuplot for square plots.
5216 bounding boxes generated by Gnuplot for square plots.
5212
5217
5213 * IPython/genutils.py (popkey): new function added. I should
5218 * IPython/genutils.py (popkey): new function added. I should
5214 suggest this on c.l.py as a dict method, it seems useful.
5219 suggest this on c.l.py as a dict method, it seems useful.
5215
5220
5216 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5221 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
5217 to transparently handle PostScript generation. MUCH better than
5222 to transparently handle PostScript generation. MUCH better than
5218 the previous plot_eps/replot_eps (which I removed now). The code
5223 the previous plot_eps/replot_eps (which I removed now). The code
5219 is also fairly clean and well documented now (including
5224 is also fairly clean and well documented now (including
5220 docstrings).
5225 docstrings).
5221
5226
5222 2002-11-13 Fernando Perez <fperez@colorado.edu>
5227 2002-11-13 Fernando Perez <fperez@colorado.edu>
5223
5228
5224 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5229 * IPython/Magic.py (Magic.magic_edit): fixed docstring
5225 (inconsistent with options).
5230 (inconsistent with options).
5226
5231
5227 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5232 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
5228 manually disabled, I don't know why. Fixed it.
5233 manually disabled, I don't know why. Fixed it.
5229 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5234 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
5230 eps output.
5235 eps output.
5231
5236
5232 2002-11-12 Fernando Perez <fperez@colorado.edu>
5237 2002-11-12 Fernando Perez <fperez@colorado.edu>
5233
5238
5234 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5239 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
5235 don't propagate up to caller. Fixes crash reported by François
5240 don't propagate up to caller. Fixes crash reported by François
5236 Pinard.
5241 Pinard.
5237
5242
5238 2002-11-09 Fernando Perez <fperez@colorado.edu>
5243 2002-11-09 Fernando Perez <fperez@colorado.edu>
5239
5244
5240 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5245 * IPython/ipmaker.py (make_IPython): fixed problem with writing
5241 history file for new users.
5246 history file for new users.
5242 (make_IPython): fixed bug where initial install would leave the
5247 (make_IPython): fixed bug where initial install would leave the
5243 user running in the .ipython dir.
5248 user running in the .ipython dir.
5244 (make_IPython): fixed bug where config dir .ipython would be
5249 (make_IPython): fixed bug where config dir .ipython would be
5245 created regardless of the given -ipythondir option. Thanks to Cory
5250 created regardless of the given -ipythondir option. Thanks to Cory
5246 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5251 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
5247
5252
5248 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5253 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
5249 type confirmations. Will need to use it in all of IPython's code
5254 type confirmations. Will need to use it in all of IPython's code
5250 consistently.
5255 consistently.
5251
5256
5252 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5257 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
5253 context to print 31 lines instead of the default 5. This will make
5258 context to print 31 lines instead of the default 5. This will make
5254 the crash reports extremely detailed in case the problem is in
5259 the crash reports extremely detailed in case the problem is in
5255 libraries I don't have access to.
5260 libraries I don't have access to.
5256
5261
5257 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5262 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
5258 line of defense' code to still crash, but giving users fair
5263 line of defense' code to still crash, but giving users fair
5259 warning. I don't want internal errors to go unreported: if there's
5264 warning. I don't want internal errors to go unreported: if there's
5260 an internal problem, IPython should crash and generate a full
5265 an internal problem, IPython should crash and generate a full
5261 report.
5266 report.
5262
5267
5263 2002-11-08 Fernando Perez <fperez@colorado.edu>
5268 2002-11-08 Fernando Perez <fperez@colorado.edu>
5264
5269
5265 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5270 * IPython/iplib.py (InteractiveShell.interact): added code to trap
5266 otherwise uncaught exceptions which can appear if people set
5271 otherwise uncaught exceptions which can appear if people set
5267 sys.stdout to something badly broken. Thanks to a crash report
5272 sys.stdout to something badly broken. Thanks to a crash report
5268 from henni-AT-mail.brainbot.com.
5273 from henni-AT-mail.brainbot.com.
5269
5274
5270 2002-11-04 Fernando Perez <fperez@colorado.edu>
5275 2002-11-04 Fernando Perez <fperez@colorado.edu>
5271
5276
5272 * IPython/iplib.py (InteractiveShell.interact): added
5277 * IPython/iplib.py (InteractiveShell.interact): added
5273 __IPYTHON__active to the builtins. It's a flag which goes on when
5278 __IPYTHON__active to the builtins. It's a flag which goes on when
5274 the interaction starts and goes off again when it stops. This
5279 the interaction starts and goes off again when it stops. This
5275 allows embedding code to detect being inside IPython. Before this
5280 allows embedding code to detect being inside IPython. Before this
5276 was done via __IPYTHON__, but that only shows that an IPython
5281 was done via __IPYTHON__, but that only shows that an IPython
5277 instance has been created.
5282 instance has been created.
5278
5283
5279 * IPython/Magic.py (Magic.magic_env): I realized that in a
5284 * IPython/Magic.py (Magic.magic_env): I realized that in a
5280 UserDict, instance.data holds the data as a normal dict. So I
5285 UserDict, instance.data holds the data as a normal dict. So I
5281 modified @env to return os.environ.data instead of rebuilding a
5286 modified @env to return os.environ.data instead of rebuilding a
5282 dict by hand.
5287 dict by hand.
5283
5288
5284 2002-11-02 Fernando Perez <fperez@colorado.edu>
5289 2002-11-02 Fernando Perez <fperez@colorado.edu>
5285
5290
5286 * IPython/genutils.py (warn): changed so that level 1 prints no
5291 * IPython/genutils.py (warn): changed so that level 1 prints no
5287 header. Level 2 is now the default (with 'WARNING' header, as
5292 header. Level 2 is now the default (with 'WARNING' header, as
5288 before). I think I tracked all places where changes were needed in
5293 before). I think I tracked all places where changes were needed in
5289 IPython, but outside code using the old level numbering may have
5294 IPython, but outside code using the old level numbering may have
5290 broken.
5295 broken.
5291
5296
5292 * IPython/iplib.py (InteractiveShell.runcode): added this to
5297 * IPython/iplib.py (InteractiveShell.runcode): added this to
5293 handle the tracebacks in SystemExit traps correctly. The previous
5298 handle the tracebacks in SystemExit traps correctly. The previous
5294 code (through interact) was printing more of the stack than
5299 code (through interact) was printing more of the stack than
5295 necessary, showing IPython internal code to the user.
5300 necessary, showing IPython internal code to the user.
5296
5301
5297 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5302 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
5298 default. Now that the default at the confirmation prompt is yes,
5303 default. Now that the default at the confirmation prompt is yes,
5299 it's not so intrusive. François' argument that ipython sessions
5304 it's not so intrusive. François' argument that ipython sessions
5300 tend to be complex enough not to lose them from an accidental C-d,
5305 tend to be complex enough not to lose them from an accidental C-d,
5301 is a valid one.
5306 is a valid one.
5302
5307
5303 * IPython/iplib.py (InteractiveShell.interact): added a
5308 * IPython/iplib.py (InteractiveShell.interact): added a
5304 showtraceback() call to the SystemExit trap, and modified the exit
5309 showtraceback() call to the SystemExit trap, and modified the exit
5305 confirmation to have yes as the default.
5310 confirmation to have yes as the default.
5306
5311
5307 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5312 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
5308 this file. It's been gone from the code for a long time, this was
5313 this file. It's been gone from the code for a long time, this was
5309 simply leftover junk.
5314 simply leftover junk.
5310
5315
5311 2002-11-01 Fernando Perez <fperez@colorado.edu>
5316 2002-11-01 Fernando Perez <fperez@colorado.edu>
5312
5317
5313 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5318 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
5314 added. If set, IPython now traps EOF and asks for
5319 added. If set, IPython now traps EOF and asks for
5315 confirmation. After a request by François Pinard.
5320 confirmation. After a request by François Pinard.
5316
5321
5317 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5322 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
5318 of @abort, and with a new (better) mechanism for handling the
5323 of @abort, and with a new (better) mechanism for handling the
5319 exceptions.
5324 exceptions.
5320
5325
5321 2002-10-27 Fernando Perez <fperez@colorado.edu>
5326 2002-10-27 Fernando Perez <fperez@colorado.edu>
5322
5327
5323 * IPython/usage.py (__doc__): updated the --help information and
5328 * IPython/usage.py (__doc__): updated the --help information and
5324 the ipythonrc file to indicate that -log generates
5329 the ipythonrc file to indicate that -log generates
5325 ./ipython.log. Also fixed the corresponding info in @logstart.
5330 ./ipython.log. Also fixed the corresponding info in @logstart.
5326 This and several other fixes in the manuals thanks to reports by
5331 This and several other fixes in the manuals thanks to reports by
5327 François Pinard <pinard-AT-iro.umontreal.ca>.
5332 François Pinard <pinard-AT-iro.umontreal.ca>.
5328
5333
5329 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5334 * IPython/Logger.py (Logger.switch_log): Fixed error message to
5330 refer to @logstart (instead of @log, which doesn't exist).
5335 refer to @logstart (instead of @log, which doesn't exist).
5331
5336
5332 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5337 * IPython/iplib.py (InteractiveShell._prefilter): fixed
5333 AttributeError crash. Thanks to Christopher Armstrong
5338 AttributeError crash. Thanks to Christopher Armstrong
5334 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5339 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
5335 introduced recently (in 0.2.14pre37) with the fix to the eval
5340 introduced recently (in 0.2.14pre37) with the fix to the eval
5336 problem mentioned below.
5341 problem mentioned below.
5337
5342
5338 2002-10-17 Fernando Perez <fperez@colorado.edu>
5343 2002-10-17 Fernando Perez <fperez@colorado.edu>
5339
5344
5340 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5345 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
5341 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5346 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
5342
5347
5343 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5348 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
5344 this function to fix a problem reported by Alex Schmolck. He saw
5349 this function to fix a problem reported by Alex Schmolck. He saw
5345 it with list comprehensions and generators, which were getting
5350 it with list comprehensions and generators, which were getting
5346 called twice. The real problem was an 'eval' call in testing for
5351 called twice. The real problem was an 'eval' call in testing for
5347 automagic which was evaluating the input line silently.
5352 automagic which was evaluating the input line silently.
5348
5353
5349 This is a potentially very nasty bug, if the input has side
5354 This is a potentially very nasty bug, if the input has side
5350 effects which must not be repeated. The code is much cleaner now,
5355 effects which must not be repeated. The code is much cleaner now,
5351 without any blanket 'except' left and with a regexp test for
5356 without any blanket 'except' left and with a regexp test for
5352 actual function names.
5357 actual function names.
5353
5358
5354 But an eval remains, which I'm not fully comfortable with. I just
5359 But an eval remains, which I'm not fully comfortable with. I just
5355 don't know how to find out if an expression could be a callable in
5360 don't know how to find out if an expression could be a callable in
5356 the user's namespace without doing an eval on the string. However
5361 the user's namespace without doing an eval on the string. However
5357 that string is now much more strictly checked so that no code
5362 that string is now much more strictly checked so that no code
5358 slips by, so the eval should only happen for things that can
5363 slips by, so the eval should only happen for things that can
5359 really be only function/method names.
5364 really be only function/method names.
5360
5365
5361 2002-10-15 Fernando Perez <fperez@colorado.edu>
5366 2002-10-15 Fernando Perez <fperez@colorado.edu>
5362
5367
5363 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5368 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
5364 OSX information to main manual, removed README_Mac_OSX file from
5369 OSX information to main manual, removed README_Mac_OSX file from
5365 distribution. Also updated credits for recent additions.
5370 distribution. Also updated credits for recent additions.
5366
5371
5367 2002-10-10 Fernando Perez <fperez@colorado.edu>
5372 2002-10-10 Fernando Perez <fperez@colorado.edu>
5368
5373
5369 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5374 * README_Mac_OSX: Added a README for Mac OSX users for fixing
5370 terminal-related issues. Many thanks to Andrea Riciputi
5375 terminal-related issues. Many thanks to Andrea Riciputi
5371 <andrea.riciputi-AT-libero.it> for writing it.
5376 <andrea.riciputi-AT-libero.it> for writing it.
5372
5377
5373 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5378 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
5374 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5379 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
5375
5380
5376 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5381 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
5377 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5382 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
5378 <syver-en-AT-online.no> who both submitted patches for this problem.
5383 <syver-en-AT-online.no> who both submitted patches for this problem.
5379
5384
5380 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5385 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
5381 global embedding to make sure that things don't overwrite user
5386 global embedding to make sure that things don't overwrite user
5382 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5387 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
5383
5388
5384 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5389 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
5385 compatibility. Thanks to Hayden Callow
5390 compatibility. Thanks to Hayden Callow
5386 <h.callow-AT-elec.canterbury.ac.nz>
5391 <h.callow-AT-elec.canterbury.ac.nz>
5387
5392
5388 2002-10-04 Fernando Perez <fperez@colorado.edu>
5393 2002-10-04 Fernando Perez <fperez@colorado.edu>
5389
5394
5390 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5395 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
5391 Gnuplot.File objects.
5396 Gnuplot.File objects.
5392
5397
5393 2002-07-23 Fernando Perez <fperez@colorado.edu>
5398 2002-07-23 Fernando Perez <fperez@colorado.edu>
5394
5399
5395 * IPython/genutils.py (timing): Added timings() and timing() for
5400 * IPython/genutils.py (timing): Added timings() and timing() for
5396 quick access to the most commonly needed data, the execution
5401 quick access to the most commonly needed data, the execution
5397 times. Old timing() renamed to timings_out().
5402 times. Old timing() renamed to timings_out().
5398
5403
5399 2002-07-18 Fernando Perez <fperez@colorado.edu>
5404 2002-07-18 Fernando Perez <fperez@colorado.edu>
5400
5405
5401 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5406 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
5402 bug with nested instances disrupting the parent's tab completion.
5407 bug with nested instances disrupting the parent's tab completion.
5403
5408
5404 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5409 * IPython/iplib.py (all_completions): Added Alex Schmolck's
5405 all_completions code to begin the emacs integration.
5410 all_completions code to begin the emacs integration.
5406
5411
5407 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5412 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
5408 argument to allow titling individual arrays when plotting.
5413 argument to allow titling individual arrays when plotting.
5409
5414
5410 2002-07-15 Fernando Perez <fperez@colorado.edu>
5415 2002-07-15 Fernando Perez <fperez@colorado.edu>
5411
5416
5412 * setup.py (make_shortcut): changed to retrieve the value of
5417 * setup.py (make_shortcut): changed to retrieve the value of
5413 'Program Files' directory from the registry (this value changes in
5418 'Program Files' directory from the registry (this value changes in
5414 non-english versions of Windows). Thanks to Thomas Fanslau
5419 non-english versions of Windows). Thanks to Thomas Fanslau
5415 <tfanslau-AT-gmx.de> for the report.
5420 <tfanslau-AT-gmx.de> for the report.
5416
5421
5417 2002-07-10 Fernando Perez <fperez@colorado.edu>
5422 2002-07-10 Fernando Perez <fperez@colorado.edu>
5418
5423
5419 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5424 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
5420 a bug in pdb, which crashes if a line with only whitespace is
5425 a bug in pdb, which crashes if a line with only whitespace is
5421 entered. Bug report submitted to sourceforge.
5426 entered. Bug report submitted to sourceforge.
5422
5427
5423 2002-07-09 Fernando Perez <fperez@colorado.edu>
5428 2002-07-09 Fernando Perez <fperez@colorado.edu>
5424
5429
5425 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5430 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
5426 reporting exceptions (it's a bug in inspect.py, I just set a
5431 reporting exceptions (it's a bug in inspect.py, I just set a
5427 workaround).
5432 workaround).
5428
5433
5429 2002-07-08 Fernando Perez <fperez@colorado.edu>
5434 2002-07-08 Fernando Perez <fperez@colorado.edu>
5430
5435
5431 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5436 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
5432 __IPYTHON__ in __builtins__ to show up in user_ns.
5437 __IPYTHON__ in __builtins__ to show up in user_ns.
5433
5438
5434 2002-07-03 Fernando Perez <fperez@colorado.edu>
5439 2002-07-03 Fernando Perez <fperez@colorado.edu>
5435
5440
5436 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5441 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
5437 name from @gp_set_instance to @gp_set_default.
5442 name from @gp_set_instance to @gp_set_default.
5438
5443
5439 * IPython/ipmaker.py (make_IPython): default editor value set to
5444 * IPython/ipmaker.py (make_IPython): default editor value set to
5440 '0' (a string), to match the rc file. Otherwise will crash when
5445 '0' (a string), to match the rc file. Otherwise will crash when
5441 .strip() is called on it.
5446 .strip() is called on it.
5442
5447
5443
5448
5444 2002-06-28 Fernando Perez <fperez@colorado.edu>
5449 2002-06-28 Fernando Perez <fperez@colorado.edu>
5445
5450
5446 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5451 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
5447 of files in current directory when a file is executed via
5452 of files in current directory when a file is executed via
5448 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5453 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
5449
5454
5450 * setup.py (manfiles): fix for rpm builds, submitted by RA
5455 * setup.py (manfiles): fix for rpm builds, submitted by RA
5451 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5456 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
5452
5457
5453 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5458 * IPython/ipmaker.py (make_IPython): fixed lookup of default
5454 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5459 editor when set to '0'. Problem was, '0' evaluates to True (it's a
5455 string!). A. Schmolck caught this one.
5460 string!). A. Schmolck caught this one.
5456
5461
5457 2002-06-27 Fernando Perez <fperez@colorado.edu>
5462 2002-06-27 Fernando Perez <fperez@colorado.edu>
5458
5463
5459 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5464 * IPython/ipmaker.py (make_IPython): fixed bug when running user
5460 defined files at the cmd line. __name__ wasn't being set to
5465 defined files at the cmd line. __name__ wasn't being set to
5461 __main__.
5466 __main__.
5462
5467
5463 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5468 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
5464 regular lists and tuples besides Numeric arrays.
5469 regular lists and tuples besides Numeric arrays.
5465
5470
5466 * IPython/Prompts.py (CachedOutput.__call__): Added output
5471 * IPython/Prompts.py (CachedOutput.__call__): Added output
5467 supression for input ending with ';'. Similar to Mathematica and
5472 supression for input ending with ';'. Similar to Mathematica and
5468 Matlab. The _* vars and Out[] list are still updated, just like
5473 Matlab. The _* vars and Out[] list are still updated, just like
5469 Mathematica behaves.
5474 Mathematica behaves.
5470
5475
5471 2002-06-25 Fernando Perez <fperez@colorado.edu>
5476 2002-06-25 Fernando Perez <fperez@colorado.edu>
5472
5477
5473 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5478 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
5474 .ini extensions for profiels under Windows.
5479 .ini extensions for profiels under Windows.
5475
5480
5476 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5481 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
5477 string form. Fix contributed by Alexander Schmolck
5482 string form. Fix contributed by Alexander Schmolck
5478 <a.schmolck-AT-gmx.net>
5483 <a.schmolck-AT-gmx.net>
5479
5484
5480 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5485 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
5481 pre-configured Gnuplot instance.
5486 pre-configured Gnuplot instance.
5482
5487
5483 2002-06-21 Fernando Perez <fperez@colorado.edu>
5488 2002-06-21 Fernando Perez <fperez@colorado.edu>
5484
5489
5485 * IPython/numutils.py (exp_safe): new function, works around the
5490 * IPython/numutils.py (exp_safe): new function, works around the
5486 underflow problems in Numeric.
5491 underflow problems in Numeric.
5487 (log2): New fn. Safe log in base 2: returns exact integer answer
5492 (log2): New fn. Safe log in base 2: returns exact integer answer
5488 for exact integer powers of 2.
5493 for exact integer powers of 2.
5489
5494
5490 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5495 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
5491 properly.
5496 properly.
5492
5497
5493 2002-06-20 Fernando Perez <fperez@colorado.edu>
5498 2002-06-20 Fernando Perez <fperez@colorado.edu>
5494
5499
5495 * IPython/genutils.py (timing): new function like
5500 * IPython/genutils.py (timing): new function like
5496 Mathematica's. Similar to time_test, but returns more info.
5501 Mathematica's. Similar to time_test, but returns more info.
5497
5502
5498 2002-06-18 Fernando Perez <fperez@colorado.edu>
5503 2002-06-18 Fernando Perez <fperez@colorado.edu>
5499
5504
5500 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5505 * IPython/Magic.py (Magic.magic_save): modified @save and @r
5501 according to Mike Heeter's suggestions.
5506 according to Mike Heeter's suggestions.
5502
5507
5503 2002-06-16 Fernando Perez <fperez@colorado.edu>
5508 2002-06-16 Fernando Perez <fperez@colorado.edu>
5504
5509
5505 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5510 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
5506 system. GnuplotMagic is gone as a user-directory option. New files
5511 system. GnuplotMagic is gone as a user-directory option. New files
5507 make it easier to use all the gnuplot stuff both from external
5512 make it easier to use all the gnuplot stuff both from external
5508 programs as well as from IPython. Had to rewrite part of
5513 programs as well as from IPython. Had to rewrite part of
5509 hardcopy() b/c of a strange bug: often the ps files simply don't
5514 hardcopy() b/c of a strange bug: often the ps files simply don't
5510 get created, and require a repeat of the command (often several
5515 get created, and require a repeat of the command (often several
5511 times).
5516 times).
5512
5517
5513 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5518 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
5514 resolve output channel at call time, so that if sys.stderr has
5519 resolve output channel at call time, so that if sys.stderr has
5515 been redirected by user this gets honored.
5520 been redirected by user this gets honored.
5516
5521
5517 2002-06-13 Fernando Perez <fperez@colorado.edu>
5522 2002-06-13 Fernando Perez <fperez@colorado.edu>
5518
5523
5519 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5524 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
5520 IPShell. Kept a copy with the old names to avoid breaking people's
5525 IPShell. Kept a copy with the old names to avoid breaking people's
5521 embedded code.
5526 embedded code.
5522
5527
5523 * IPython/ipython: simplified it to the bare minimum after
5528 * IPython/ipython: simplified it to the bare minimum after
5524 Holger's suggestions. Added info about how to use it in
5529 Holger's suggestions. Added info about how to use it in
5525 PYTHONSTARTUP.
5530 PYTHONSTARTUP.
5526
5531
5527 * IPython/Shell.py (IPythonShell): changed the options passing
5532 * IPython/Shell.py (IPythonShell): changed the options passing
5528 from a string with funky %s replacements to a straight list. Maybe
5533 from a string with funky %s replacements to a straight list. Maybe
5529 a bit more typing, but it follows sys.argv conventions, so there's
5534 a bit more typing, but it follows sys.argv conventions, so there's
5530 less special-casing to remember.
5535 less special-casing to remember.
5531
5536
5532 2002-06-12 Fernando Perez <fperez@colorado.edu>
5537 2002-06-12 Fernando Perez <fperez@colorado.edu>
5533
5538
5534 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5539 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
5535 command. Thanks to a suggestion by Mike Heeter.
5540 command. Thanks to a suggestion by Mike Heeter.
5536 (Magic.magic_pfile): added behavior to look at filenames if given
5541 (Magic.magic_pfile): added behavior to look at filenames if given
5537 arg is not a defined object.
5542 arg is not a defined object.
5538 (Magic.magic_save): New @save function to save code snippets. Also
5543 (Magic.magic_save): New @save function to save code snippets. Also
5539 a Mike Heeter idea.
5544 a Mike Heeter idea.
5540
5545
5541 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5546 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
5542 plot() and replot(). Much more convenient now, especially for
5547 plot() and replot(). Much more convenient now, especially for
5543 interactive use.
5548 interactive use.
5544
5549
5545 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5550 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
5546 filenames.
5551 filenames.
5547
5552
5548 2002-06-02 Fernando Perez <fperez@colorado.edu>
5553 2002-06-02 Fernando Perez <fperez@colorado.edu>
5549
5554
5550 * IPython/Struct.py (Struct.__init__): modified to admit
5555 * IPython/Struct.py (Struct.__init__): modified to admit
5551 initialization via another struct.
5556 initialization via another struct.
5552
5557
5553 * IPython/genutils.py (SystemExec.__init__): New stateful
5558 * IPython/genutils.py (SystemExec.__init__): New stateful
5554 interface to xsys and bq. Useful for writing system scripts.
5559 interface to xsys and bq. Useful for writing system scripts.
5555
5560
5556 2002-05-30 Fernando Perez <fperez@colorado.edu>
5561 2002-05-30 Fernando Perez <fperez@colorado.edu>
5557
5562
5558 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5563 * MANIFEST.in: Changed docfile selection to exclude all the lyx
5559 documents. This will make the user download smaller (it's getting
5564 documents. This will make the user download smaller (it's getting
5560 too big).
5565 too big).
5561
5566
5562 2002-05-29 Fernando Perez <fperez@colorado.edu>
5567 2002-05-29 Fernando Perez <fperez@colorado.edu>
5563
5568
5564 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5569 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
5565 fix problems with shelve and pickle. Seems to work, but I don't
5570 fix problems with shelve and pickle. Seems to work, but I don't
5566 know if corner cases break it. Thanks to Mike Heeter
5571 know if corner cases break it. Thanks to Mike Heeter
5567 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5572 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
5568
5573
5569 2002-05-24 Fernando Perez <fperez@colorado.edu>
5574 2002-05-24 Fernando Perez <fperez@colorado.edu>
5570
5575
5571 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5576 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
5572 macros having broken.
5577 macros having broken.
5573
5578
5574 2002-05-21 Fernando Perez <fperez@colorado.edu>
5579 2002-05-21 Fernando Perez <fperez@colorado.edu>
5575
5580
5576 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5581 * IPython/Magic.py (Magic.magic_logstart): fixed recently
5577 introduced logging bug: all history before logging started was
5582 introduced logging bug: all history before logging started was
5578 being written one character per line! This came from the redesign
5583 being written one character per line! This came from the redesign
5579 of the input history as a special list which slices to strings,
5584 of the input history as a special list which slices to strings,
5580 not to lists.
5585 not to lists.
5581
5586
5582 2002-05-20 Fernando Perez <fperez@colorado.edu>
5587 2002-05-20 Fernando Perez <fperez@colorado.edu>
5583
5588
5584 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5589 * IPython/Prompts.py (CachedOutput.__init__): made the color table
5585 be an attribute of all classes in this module. The design of these
5590 be an attribute of all classes in this module. The design of these
5586 classes needs some serious overhauling.
5591 classes needs some serious overhauling.
5587
5592
5588 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5593 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
5589 which was ignoring '_' in option names.
5594 which was ignoring '_' in option names.
5590
5595
5591 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5596 * IPython/ultraTB.py (FormattedTB.__init__): Changed
5592 'Verbose_novars' to 'Context' and made it the new default. It's a
5597 'Verbose_novars' to 'Context' and made it the new default. It's a
5593 bit more readable and also safer than verbose.
5598 bit more readable and also safer than verbose.
5594
5599
5595 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5600 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
5596 triple-quoted strings.
5601 triple-quoted strings.
5597
5602
5598 * IPython/OInspect.py (__all__): new module exposing the object
5603 * IPython/OInspect.py (__all__): new module exposing the object
5599 introspection facilities. Now the corresponding magics are dummy
5604 introspection facilities. Now the corresponding magics are dummy
5600 wrappers around this. Having this module will make it much easier
5605 wrappers around this. Having this module will make it much easier
5601 to put these functions into our modified pdb.
5606 to put these functions into our modified pdb.
5602 This new object inspector system uses the new colorizing module,
5607 This new object inspector system uses the new colorizing module,
5603 so source code and other things are nicely syntax highlighted.
5608 so source code and other things are nicely syntax highlighted.
5604
5609
5605 2002-05-18 Fernando Perez <fperez@colorado.edu>
5610 2002-05-18 Fernando Perez <fperez@colorado.edu>
5606
5611
5607 * IPython/ColorANSI.py: Split the coloring tools into a separate
5612 * IPython/ColorANSI.py: Split the coloring tools into a separate
5608 module so I can use them in other code easier (they were part of
5613 module so I can use them in other code easier (they were part of
5609 ultraTB).
5614 ultraTB).
5610
5615
5611 2002-05-17 Fernando Perez <fperez@colorado.edu>
5616 2002-05-17 Fernando Perez <fperez@colorado.edu>
5612
5617
5613 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5618 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5614 fixed it to set the global 'g' also to the called instance, as
5619 fixed it to set the global 'g' also to the called instance, as
5615 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5620 long as 'g' was still a gnuplot instance (so it doesn't overwrite
5616 user's 'g' variables).
5621 user's 'g' variables).
5617
5622
5618 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5623 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
5619 global variables (aliases to _ih,_oh) so that users which expect
5624 global variables (aliases to _ih,_oh) so that users which expect
5620 In[5] or Out[7] to work aren't unpleasantly surprised.
5625 In[5] or Out[7] to work aren't unpleasantly surprised.
5621 (InputList.__getslice__): new class to allow executing slices of
5626 (InputList.__getslice__): new class to allow executing slices of
5622 input history directly. Very simple class, complements the use of
5627 input history directly. Very simple class, complements the use of
5623 macros.
5628 macros.
5624
5629
5625 2002-05-16 Fernando Perez <fperez@colorado.edu>
5630 2002-05-16 Fernando Perez <fperez@colorado.edu>
5626
5631
5627 * setup.py (docdirbase): make doc directory be just doc/IPython
5632 * setup.py (docdirbase): make doc directory be just doc/IPython
5628 without version numbers, it will reduce clutter for users.
5633 without version numbers, it will reduce clutter for users.
5629
5634
5630 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5635 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
5631 execfile call to prevent possible memory leak. See for details:
5636 execfile call to prevent possible memory leak. See for details:
5632 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5637 http://mail.python.org/pipermail/python-list/2002-February/088476.html
5633
5638
5634 2002-05-15 Fernando Perez <fperez@colorado.edu>
5639 2002-05-15 Fernando Perez <fperez@colorado.edu>
5635
5640
5636 * IPython/Magic.py (Magic.magic_psource): made the object
5641 * IPython/Magic.py (Magic.magic_psource): made the object
5637 introspection names be more standard: pdoc, pdef, pfile and
5642 introspection names be more standard: pdoc, pdef, pfile and
5638 psource. They all print/page their output, and it makes
5643 psource. They all print/page their output, and it makes
5639 remembering them easier. Kept old names for compatibility as
5644 remembering them easier. Kept old names for compatibility as
5640 aliases.
5645 aliases.
5641
5646
5642 2002-05-14 Fernando Perez <fperez@colorado.edu>
5647 2002-05-14 Fernando Perez <fperez@colorado.edu>
5643
5648
5644 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5649 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
5645 what the mouse problem was. The trick is to use gnuplot with temp
5650 what the mouse problem was. The trick is to use gnuplot with temp
5646 files and NOT with pipes (for data communication), because having
5651 files and NOT with pipes (for data communication), because having
5647 both pipes and the mouse on is bad news.
5652 both pipes and the mouse on is bad news.
5648
5653
5649 2002-05-13 Fernando Perez <fperez@colorado.edu>
5654 2002-05-13 Fernando Perez <fperez@colorado.edu>
5650
5655
5651 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5656 * IPython/Magic.py (Magic._ofind): fixed namespace order search
5652 bug. Information would be reported about builtins even when
5657 bug. Information would be reported about builtins even when
5653 user-defined functions overrode them.
5658 user-defined functions overrode them.
5654
5659
5655 2002-05-11 Fernando Perez <fperez@colorado.edu>
5660 2002-05-11 Fernando Perez <fperez@colorado.edu>
5656
5661
5657 * IPython/__init__.py (__all__): removed FlexCompleter from
5662 * IPython/__init__.py (__all__): removed FlexCompleter from
5658 __all__ so that things don't fail in platforms without readline.
5663 __all__ so that things don't fail in platforms without readline.
5659
5664
5660 2002-05-10 Fernando Perez <fperez@colorado.edu>
5665 2002-05-10 Fernando Perez <fperez@colorado.edu>
5661
5666
5662 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5667 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
5663 it requires Numeric, effectively making Numeric a dependency for
5668 it requires Numeric, effectively making Numeric a dependency for
5664 IPython.
5669 IPython.
5665
5670
5666 * Released 0.2.13
5671 * Released 0.2.13
5667
5672
5668 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5673 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
5669 profiler interface. Now all the major options from the profiler
5674 profiler interface. Now all the major options from the profiler
5670 module are directly supported in IPython, both for single
5675 module are directly supported in IPython, both for single
5671 expressions (@prun) and for full programs (@run -p).
5676 expressions (@prun) and for full programs (@run -p).
5672
5677
5673 2002-05-09 Fernando Perez <fperez@colorado.edu>
5678 2002-05-09 Fernando Perez <fperez@colorado.edu>
5674
5679
5675 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5680 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
5676 magic properly formatted for screen.
5681 magic properly formatted for screen.
5677
5682
5678 * setup.py (make_shortcut): Changed things to put pdf version in
5683 * setup.py (make_shortcut): Changed things to put pdf version in
5679 doc/ instead of doc/manual (had to change lyxport a bit).
5684 doc/ instead of doc/manual (had to change lyxport a bit).
5680
5685
5681 * IPython/Magic.py (Profile.string_stats): made profile runs go
5686 * IPython/Magic.py (Profile.string_stats): made profile runs go
5682 through pager (they are long and a pager allows searching, saving,
5687 through pager (they are long and a pager allows searching, saving,
5683 etc.)
5688 etc.)
5684
5689
5685 2002-05-08 Fernando Perez <fperez@colorado.edu>
5690 2002-05-08 Fernando Perez <fperez@colorado.edu>
5686
5691
5687 * Released 0.2.12
5692 * Released 0.2.12
5688
5693
5689 2002-05-06 Fernando Perez <fperez@colorado.edu>
5694 2002-05-06 Fernando Perez <fperez@colorado.edu>
5690
5695
5691 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5696 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
5692 introduced); 'hist n1 n2' was broken.
5697 introduced); 'hist n1 n2' was broken.
5693 (Magic.magic_pdb): added optional on/off arguments to @pdb
5698 (Magic.magic_pdb): added optional on/off arguments to @pdb
5694 (Magic.magic_run): added option -i to @run, which executes code in
5699 (Magic.magic_run): added option -i to @run, which executes code in
5695 the IPython namespace instead of a clean one. Also added @irun as
5700 the IPython namespace instead of a clean one. Also added @irun as
5696 an alias to @run -i.
5701 an alias to @run -i.
5697
5702
5698 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5703 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
5699 fixed (it didn't really do anything, the namespaces were wrong).
5704 fixed (it didn't really do anything, the namespaces were wrong).
5700
5705
5701 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5706 * IPython/Debugger.py (__init__): Added workaround for python 2.1
5702
5707
5703 * IPython/__init__.py (__all__): Fixed package namespace, now
5708 * IPython/__init__.py (__all__): Fixed package namespace, now
5704 'import IPython' does give access to IPython.<all> as
5709 'import IPython' does give access to IPython.<all> as
5705 expected. Also renamed __release__ to Release.
5710 expected. Also renamed __release__ to Release.
5706
5711
5707 * IPython/Debugger.py (__license__): created new Pdb class which
5712 * IPython/Debugger.py (__license__): created new Pdb class which
5708 functions like a drop-in for the normal pdb.Pdb but does NOT
5713 functions like a drop-in for the normal pdb.Pdb but does NOT
5709 import readline by default. This way it doesn't muck up IPython's
5714 import readline by default. This way it doesn't muck up IPython's
5710 readline handling, and now tab-completion finally works in the
5715 readline handling, and now tab-completion finally works in the
5711 debugger -- sort of. It completes things globally visible, but the
5716 debugger -- sort of. It completes things globally visible, but the
5712 completer doesn't track the stack as pdb walks it. That's a bit
5717 completer doesn't track the stack as pdb walks it. That's a bit
5713 tricky, and I'll have to implement it later.
5718 tricky, and I'll have to implement it later.
5714
5719
5715 2002-05-05 Fernando Perez <fperez@colorado.edu>
5720 2002-05-05 Fernando Perez <fperez@colorado.edu>
5716
5721
5717 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5722 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
5718 magic docstrings when printed via ? (explicit \'s were being
5723 magic docstrings when printed via ? (explicit \'s were being
5719 printed).
5724 printed).
5720
5725
5721 * IPython/ipmaker.py (make_IPython): fixed namespace
5726 * IPython/ipmaker.py (make_IPython): fixed namespace
5722 identification bug. Now variables loaded via logs or command-line
5727 identification bug. Now variables loaded via logs or command-line
5723 files are recognized in the interactive namespace by @who.
5728 files are recognized in the interactive namespace by @who.
5724
5729
5725 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5730 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
5726 log replay system stemming from the string form of Structs.
5731 log replay system stemming from the string form of Structs.
5727
5732
5728 * IPython/Magic.py (Macro.__init__): improved macros to properly
5733 * IPython/Magic.py (Macro.__init__): improved macros to properly
5729 handle magic commands in them.
5734 handle magic commands in them.
5730 (Magic.magic_logstart): usernames are now expanded so 'logstart
5735 (Magic.magic_logstart): usernames are now expanded so 'logstart
5731 ~/mylog' now works.
5736 ~/mylog' now works.
5732
5737
5733 * IPython/iplib.py (complete): fixed bug where paths starting with
5738 * IPython/iplib.py (complete): fixed bug where paths starting with
5734 '/' would be completed as magic names.
5739 '/' would be completed as magic names.
5735
5740
5736 2002-05-04 Fernando Perez <fperez@colorado.edu>
5741 2002-05-04 Fernando Perez <fperez@colorado.edu>
5737
5742
5738 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5743 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
5739 allow running full programs under the profiler's control.
5744 allow running full programs under the profiler's control.
5740
5745
5741 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5746 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
5742 mode to report exceptions verbosely but without formatting
5747 mode to report exceptions verbosely but without formatting
5743 variables. This addresses the issue of ipython 'freezing' (it's
5748 variables. This addresses the issue of ipython 'freezing' (it's
5744 not frozen, but caught in an expensive formatting loop) when huge
5749 not frozen, but caught in an expensive formatting loop) when huge
5745 variables are in the context of an exception.
5750 variables are in the context of an exception.
5746 (VerboseTB.text): Added '--->' markers at line where exception was
5751 (VerboseTB.text): Added '--->' markers at line where exception was
5747 triggered. Much clearer to read, especially in NoColor modes.
5752 triggered. Much clearer to read, especially in NoColor modes.
5748
5753
5749 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5754 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
5750 implemented in reverse when changing to the new parse_options().
5755 implemented in reverse when changing to the new parse_options().
5751
5756
5752 2002-05-03 Fernando Perez <fperez@colorado.edu>
5757 2002-05-03 Fernando Perez <fperez@colorado.edu>
5753
5758
5754 * IPython/Magic.py (Magic.parse_options): new function so that
5759 * IPython/Magic.py (Magic.parse_options): new function so that
5755 magics can parse options easier.
5760 magics can parse options easier.
5756 (Magic.magic_prun): new function similar to profile.run(),
5761 (Magic.magic_prun): new function similar to profile.run(),
5757 suggested by Chris Hart.
5762 suggested by Chris Hart.
5758 (Magic.magic_cd): fixed behavior so that it only changes if
5763 (Magic.magic_cd): fixed behavior so that it only changes if
5759 directory actually is in history.
5764 directory actually is in history.
5760
5765
5761 * IPython/usage.py (__doc__): added information about potential
5766 * IPython/usage.py (__doc__): added information about potential
5762 slowness of Verbose exception mode when there are huge data
5767 slowness of Verbose exception mode when there are huge data
5763 structures to be formatted (thanks to Archie Paulson).
5768 structures to be formatted (thanks to Archie Paulson).
5764
5769
5765 * IPython/ipmaker.py (make_IPython): Changed default logging
5770 * IPython/ipmaker.py (make_IPython): Changed default logging
5766 (when simply called with -log) to use curr_dir/ipython.log in
5771 (when simply called with -log) to use curr_dir/ipython.log in
5767 rotate mode. Fixed crash which was occuring with -log before
5772 rotate mode. Fixed crash which was occuring with -log before
5768 (thanks to Jim Boyle).
5773 (thanks to Jim Boyle).
5769
5774
5770 2002-05-01 Fernando Perez <fperez@colorado.edu>
5775 2002-05-01 Fernando Perez <fperez@colorado.edu>
5771
5776
5772 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5777 * Released 0.2.11 for these fixes (mainly the ultraTB one which
5773 was nasty -- though somewhat of a corner case).
5778 was nasty -- though somewhat of a corner case).
5774
5779
5775 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5780 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
5776 text (was a bug).
5781 text (was a bug).
5777
5782
5778 2002-04-30 Fernando Perez <fperez@colorado.edu>
5783 2002-04-30 Fernando Perez <fperez@colorado.edu>
5779
5784
5780 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5785 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
5781 a print after ^D or ^C from the user so that the In[] prompt
5786 a print after ^D or ^C from the user so that the In[] prompt
5782 doesn't over-run the gnuplot one.
5787 doesn't over-run the gnuplot one.
5783
5788
5784 2002-04-29 Fernando Perez <fperez@colorado.edu>
5789 2002-04-29 Fernando Perez <fperez@colorado.edu>
5785
5790
5786 * Released 0.2.10
5791 * Released 0.2.10
5787
5792
5788 * IPython/__release__.py (version): get date dynamically.
5793 * IPython/__release__.py (version): get date dynamically.
5789
5794
5790 * Misc. documentation updates thanks to Arnd's comments. Also ran
5795 * Misc. documentation updates thanks to Arnd's comments. Also ran
5791 a full spellcheck on the manual (hadn't been done in a while).
5796 a full spellcheck on the manual (hadn't been done in a while).
5792
5797
5793 2002-04-27 Fernando Perez <fperez@colorado.edu>
5798 2002-04-27 Fernando Perez <fperez@colorado.edu>
5794
5799
5795 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5800 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
5796 starting a log in mid-session would reset the input history list.
5801 starting a log in mid-session would reset the input history list.
5797
5802
5798 2002-04-26 Fernando Perez <fperez@colorado.edu>
5803 2002-04-26 Fernando Perez <fperez@colorado.edu>
5799
5804
5800 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5805 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
5801 all files were being included in an update. Now anything in
5806 all files were being included in an update. Now anything in
5802 UserConfig that matches [A-Za-z]*.py will go (this excludes
5807 UserConfig that matches [A-Za-z]*.py will go (this excludes
5803 __init__.py)
5808 __init__.py)
5804
5809
5805 2002-04-25 Fernando Perez <fperez@colorado.edu>
5810 2002-04-25 Fernando Perez <fperez@colorado.edu>
5806
5811
5807 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5812 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
5808 to __builtins__ so that any form of embedded or imported code can
5813 to __builtins__ so that any form of embedded or imported code can
5809 test for being inside IPython.
5814 test for being inside IPython.
5810
5815
5811 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5816 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
5812 changed to GnuplotMagic because it's now an importable module,
5817 changed to GnuplotMagic because it's now an importable module,
5813 this makes the name follow that of the standard Gnuplot module.
5818 this makes the name follow that of the standard Gnuplot module.
5814 GnuplotMagic can now be loaded at any time in mid-session.
5819 GnuplotMagic can now be loaded at any time in mid-session.
5815
5820
5816 2002-04-24 Fernando Perez <fperez@colorado.edu>
5821 2002-04-24 Fernando Perez <fperez@colorado.edu>
5817
5822
5818 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5823 * IPython/numutils.py: removed SIUnits. It doesn't properly set
5819 the globals (IPython has its own namespace) and the
5824 the globals (IPython has its own namespace) and the
5820 PhysicalQuantity stuff is much better anyway.
5825 PhysicalQuantity stuff is much better anyway.
5821
5826
5822 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5827 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
5823 embedding example to standard user directory for
5828 embedding example to standard user directory for
5824 distribution. Also put it in the manual.
5829 distribution. Also put it in the manual.
5825
5830
5826 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5831 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
5827 instance as first argument (so it doesn't rely on some obscure
5832 instance as first argument (so it doesn't rely on some obscure
5828 hidden global).
5833 hidden global).
5829
5834
5830 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5835 * IPython/UserConfig/ipythonrc.py: put () back in accepted
5831 delimiters. While it prevents ().TAB from working, it allows
5836 delimiters. While it prevents ().TAB from working, it allows
5832 completions in open (... expressions. This is by far a more common
5837 completions in open (... expressions. This is by far a more common
5833 case.
5838 case.
5834
5839
5835 2002-04-23 Fernando Perez <fperez@colorado.edu>
5840 2002-04-23 Fernando Perez <fperez@colorado.edu>
5836
5841
5837 * IPython/Extensions/InterpreterPasteInput.py: new
5842 * IPython/Extensions/InterpreterPasteInput.py: new
5838 syntax-processing module for pasting lines with >>> or ... at the
5843 syntax-processing module for pasting lines with >>> or ... at the
5839 start.
5844 start.
5840
5845
5841 * IPython/Extensions/PhysicalQ_Interactive.py
5846 * IPython/Extensions/PhysicalQ_Interactive.py
5842 (PhysicalQuantityInteractive.__int__): fixed to work with either
5847 (PhysicalQuantityInteractive.__int__): fixed to work with either
5843 Numeric or math.
5848 Numeric or math.
5844
5849
5845 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5850 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
5846 provided profiles. Now we have:
5851 provided profiles. Now we have:
5847 -math -> math module as * and cmath with its own namespace.
5852 -math -> math module as * and cmath with its own namespace.
5848 -numeric -> Numeric as *, plus gnuplot & grace
5853 -numeric -> Numeric as *, plus gnuplot & grace
5849 -physics -> same as before
5854 -physics -> same as before
5850
5855
5851 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5856 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
5852 user-defined magics wouldn't be found by @magic if they were
5857 user-defined magics wouldn't be found by @magic if they were
5853 defined as class methods. Also cleaned up the namespace search
5858 defined as class methods. Also cleaned up the namespace search
5854 logic and the string building (to use %s instead of many repeated
5859 logic and the string building (to use %s instead of many repeated
5855 string adds).
5860 string adds).
5856
5861
5857 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5862 * IPython/UserConfig/example-magic.py (magic_foo): updated example
5858 of user-defined magics to operate with class methods (cleaner, in
5863 of user-defined magics to operate with class methods (cleaner, in
5859 line with the gnuplot code).
5864 line with the gnuplot code).
5860
5865
5861 2002-04-22 Fernando Perez <fperez@colorado.edu>
5866 2002-04-22 Fernando Perez <fperez@colorado.edu>
5862
5867
5863 * setup.py: updated dependency list so that manual is updated when
5868 * setup.py: updated dependency list so that manual is updated when
5864 all included files change.
5869 all included files change.
5865
5870
5866 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5871 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
5867 the delimiter removal option (the fix is ugly right now).
5872 the delimiter removal option (the fix is ugly right now).
5868
5873
5869 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5874 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
5870 all of the math profile (quicker loading, no conflict between
5875 all of the math profile (quicker loading, no conflict between
5871 g-9.8 and g-gnuplot).
5876 g-9.8 and g-gnuplot).
5872
5877
5873 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5878 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
5874 name of post-mortem files to IPython_crash_report.txt.
5879 name of post-mortem files to IPython_crash_report.txt.
5875
5880
5876 * Cleanup/update of the docs. Added all the new readline info and
5881 * Cleanup/update of the docs. Added all the new readline info and
5877 formatted all lists as 'real lists'.
5882 formatted all lists as 'real lists'.
5878
5883
5879 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5884 * IPython/ipmaker.py (make_IPython): removed now-obsolete
5880 tab-completion options, since the full readline parse_and_bind is
5885 tab-completion options, since the full readline parse_and_bind is
5881 now accessible.
5886 now accessible.
5882
5887
5883 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5888 * IPython/iplib.py (InteractiveShell.init_readline): Changed
5884 handling of readline options. Now users can specify any string to
5889 handling of readline options. Now users can specify any string to
5885 be passed to parse_and_bind(), as well as the delimiters to be
5890 be passed to parse_and_bind(), as well as the delimiters to be
5886 removed.
5891 removed.
5887 (InteractiveShell.__init__): Added __name__ to the global
5892 (InteractiveShell.__init__): Added __name__ to the global
5888 namespace so that things like Itpl which rely on its existence
5893 namespace so that things like Itpl which rely on its existence
5889 don't crash.
5894 don't crash.
5890 (InteractiveShell._prefilter): Defined the default with a _ so
5895 (InteractiveShell._prefilter): Defined the default with a _ so
5891 that prefilter() is easier to override, while the default one
5896 that prefilter() is easier to override, while the default one
5892 remains available.
5897 remains available.
5893
5898
5894 2002-04-18 Fernando Perez <fperez@colorado.edu>
5899 2002-04-18 Fernando Perez <fperez@colorado.edu>
5895
5900
5896 * Added information about pdb in the docs.
5901 * Added information about pdb in the docs.
5897
5902
5898 2002-04-17 Fernando Perez <fperez@colorado.edu>
5903 2002-04-17 Fernando Perez <fperez@colorado.edu>
5899
5904
5900 * IPython/ipmaker.py (make_IPython): added rc_override option to
5905 * IPython/ipmaker.py (make_IPython): added rc_override option to
5901 allow passing config options at creation time which may override
5906 allow passing config options at creation time which may override
5902 anything set in the config files or command line. This is
5907 anything set in the config files or command line. This is
5903 particularly useful for configuring embedded instances.
5908 particularly useful for configuring embedded instances.
5904
5909
5905 2002-04-15 Fernando Perez <fperez@colorado.edu>
5910 2002-04-15 Fernando Perez <fperez@colorado.edu>
5906
5911
5907 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5912 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
5908 crash embedded instances because of the input cache falling out of
5913 crash embedded instances because of the input cache falling out of
5909 sync with the output counter.
5914 sync with the output counter.
5910
5915
5911 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5916 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
5912 mode which calls pdb after an uncaught exception in IPython itself.
5917 mode which calls pdb after an uncaught exception in IPython itself.
5913
5918
5914 2002-04-14 Fernando Perez <fperez@colorado.edu>
5919 2002-04-14 Fernando Perez <fperez@colorado.edu>
5915
5920
5916 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5921 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
5917 readline, fix it back after each call.
5922 readline, fix it back after each call.
5918
5923
5919 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5924 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
5920 method to force all access via __call__(), which guarantees that
5925 method to force all access via __call__(), which guarantees that
5921 traceback references are properly deleted.
5926 traceback references are properly deleted.
5922
5927
5923 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5928 * IPython/Prompts.py (CachedOutput._display): minor fixes to
5924 improve printing when pprint is in use.
5929 improve printing when pprint is in use.
5925
5930
5926 2002-04-13 Fernando Perez <fperez@colorado.edu>
5931 2002-04-13 Fernando Perez <fperez@colorado.edu>
5927
5932
5928 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5933 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
5929 exceptions aren't caught anymore. If the user triggers one, he
5934 exceptions aren't caught anymore. If the user triggers one, he
5930 should know why he's doing it and it should go all the way up,
5935 should know why he's doing it and it should go all the way up,
5931 just like any other exception. So now @abort will fully kill the
5936 just like any other exception. So now @abort will fully kill the
5932 embedded interpreter and the embedding code (unless that happens
5937 embedded interpreter and the embedding code (unless that happens
5933 to catch SystemExit).
5938 to catch SystemExit).
5934
5939
5935 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5940 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
5936 and a debugger() method to invoke the interactive pdb debugger
5941 and a debugger() method to invoke the interactive pdb debugger
5937 after printing exception information. Also added the corresponding
5942 after printing exception information. Also added the corresponding
5938 -pdb option and @pdb magic to control this feature, and updated
5943 -pdb option and @pdb magic to control this feature, and updated
5939 the docs. After a suggestion from Christopher Hart
5944 the docs. After a suggestion from Christopher Hart
5940 (hart-AT-caltech.edu).
5945 (hart-AT-caltech.edu).
5941
5946
5942 2002-04-12 Fernando Perez <fperez@colorado.edu>
5947 2002-04-12 Fernando Perez <fperez@colorado.edu>
5943
5948
5944 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5949 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
5945 the exception handlers defined by the user (not the CrashHandler)
5950 the exception handlers defined by the user (not the CrashHandler)
5946 so that user exceptions don't trigger an ipython bug report.
5951 so that user exceptions don't trigger an ipython bug report.
5947
5952
5948 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5953 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
5949 configurable (it should have always been so).
5954 configurable (it should have always been so).
5950
5955
5951 2002-03-26 Fernando Perez <fperez@colorado.edu>
5956 2002-03-26 Fernando Perez <fperez@colorado.edu>
5952
5957
5953 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5958 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
5954 and there to fix embedding namespace issues. This should all be
5959 and there to fix embedding namespace issues. This should all be
5955 done in a more elegant way.
5960 done in a more elegant way.
5956
5961
5957 2002-03-25 Fernando Perez <fperez@colorado.edu>
5962 2002-03-25 Fernando Perez <fperez@colorado.edu>
5958
5963
5959 * IPython/genutils.py (get_home_dir): Try to make it work under
5964 * IPython/genutils.py (get_home_dir): Try to make it work under
5960 win9x also.
5965 win9x also.
5961
5966
5962 2002-03-20 Fernando Perez <fperez@colorado.edu>
5967 2002-03-20 Fernando Perez <fperez@colorado.edu>
5963
5968
5964 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5969 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
5965 sys.displayhook untouched upon __init__.
5970 sys.displayhook untouched upon __init__.
5966
5971
5967 2002-03-19 Fernando Perez <fperez@colorado.edu>
5972 2002-03-19 Fernando Perez <fperez@colorado.edu>
5968
5973
5969 * Released 0.2.9 (for embedding bug, basically).
5974 * Released 0.2.9 (for embedding bug, basically).
5970
5975
5971 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5976 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
5972 exceptions so that enclosing shell's state can be restored.
5977 exceptions so that enclosing shell's state can be restored.
5973
5978
5974 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5979 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
5975 naming conventions in the .ipython/ dir.
5980 naming conventions in the .ipython/ dir.
5976
5981
5977 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5982 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
5978 from delimiters list so filenames with - in them get expanded.
5983 from delimiters list so filenames with - in them get expanded.
5979
5984
5980 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5985 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
5981 sys.displayhook not being properly restored after an embedded call.
5986 sys.displayhook not being properly restored after an embedded call.
5982
5987
5983 2002-03-18 Fernando Perez <fperez@colorado.edu>
5988 2002-03-18 Fernando Perez <fperez@colorado.edu>
5984
5989
5985 * Released 0.2.8
5990 * Released 0.2.8
5986
5991
5987 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5992 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
5988 some files weren't being included in a -upgrade.
5993 some files weren't being included in a -upgrade.
5989 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5994 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
5990 on' so that the first tab completes.
5995 on' so that the first tab completes.
5991 (InteractiveShell.handle_magic): fixed bug with spaces around
5996 (InteractiveShell.handle_magic): fixed bug with spaces around
5992 quotes breaking many magic commands.
5997 quotes breaking many magic commands.
5993
5998
5994 * setup.py: added note about ignoring the syntax error messages at
5999 * setup.py: added note about ignoring the syntax error messages at
5995 installation.
6000 installation.
5996
6001
5997 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
6002 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
5998 streamlining the gnuplot interface, now there's only one magic @gp.
6003 streamlining the gnuplot interface, now there's only one magic @gp.
5999
6004
6000 2002-03-17 Fernando Perez <fperez@colorado.edu>
6005 2002-03-17 Fernando Perez <fperez@colorado.edu>
6001
6006
6002 * IPython/UserConfig/magic_gnuplot.py: new name for the
6007 * IPython/UserConfig/magic_gnuplot.py: new name for the
6003 example-magic_pm.py file. Much enhanced system, now with a shell
6008 example-magic_pm.py file. Much enhanced system, now with a shell
6004 for communicating directly with gnuplot, one command at a time.
6009 for communicating directly with gnuplot, one command at a time.
6005
6010
6006 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6011 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
6007 setting __name__=='__main__'.
6012 setting __name__=='__main__'.
6008
6013
6009 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6014 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
6010 mini-shell for accessing gnuplot from inside ipython. Should
6015 mini-shell for accessing gnuplot from inside ipython. Should
6011 extend it later for grace access too. Inspired by Arnd's
6016 extend it later for grace access too. Inspired by Arnd's
6012 suggestion.
6017 suggestion.
6013
6018
6014 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6019 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
6015 calling magic functions with () in their arguments. Thanks to Arnd
6020 calling magic functions with () in their arguments. Thanks to Arnd
6016 Baecker for pointing this to me.
6021 Baecker for pointing this to me.
6017
6022
6018 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6023 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
6019 infinitely for integer or complex arrays (only worked with floats).
6024 infinitely for integer or complex arrays (only worked with floats).
6020
6025
6021 2002-03-16 Fernando Perez <fperez@colorado.edu>
6026 2002-03-16 Fernando Perez <fperez@colorado.edu>
6022
6027
6023 * setup.py: Merged setup and setup_windows into a single script
6028 * setup.py: Merged setup and setup_windows into a single script
6024 which properly handles things for windows users.
6029 which properly handles things for windows users.
6025
6030
6026 2002-03-15 Fernando Perez <fperez@colorado.edu>
6031 2002-03-15 Fernando Perez <fperez@colorado.edu>
6027
6032
6028 * Big change to the manual: now the magics are all automatically
6033 * Big change to the manual: now the magics are all automatically
6029 documented. This information is generated from their docstrings
6034 documented. This information is generated from their docstrings
6030 and put in a latex file included by the manual lyx file. This way
6035 and put in a latex file included by the manual lyx file. This way
6031 we get always up to date information for the magics. The manual
6036 we get always up to date information for the magics. The manual
6032 now also has proper version information, also auto-synced.
6037 now also has proper version information, also auto-synced.
6033
6038
6034 For this to work, an undocumented --magic_docstrings option was added.
6039 For this to work, an undocumented --magic_docstrings option was added.
6035
6040
6036 2002-03-13 Fernando Perez <fperez@colorado.edu>
6041 2002-03-13 Fernando Perez <fperez@colorado.edu>
6037
6042
6038 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6043 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
6039 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6044 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
6040
6045
6041 2002-03-12 Fernando Perez <fperez@colorado.edu>
6046 2002-03-12 Fernando Perez <fperez@colorado.edu>
6042
6047
6043 * IPython/ultraTB.py (TermColors): changed color escapes again to
6048 * IPython/ultraTB.py (TermColors): changed color escapes again to
6044 fix the (old, reintroduced) line-wrapping bug. Basically, if
6049 fix the (old, reintroduced) line-wrapping bug. Basically, if
6045 \001..\002 aren't given in the color escapes, lines get wrapped
6050 \001..\002 aren't given in the color escapes, lines get wrapped
6046 weirdly. But giving those screws up old xterms and emacs terms. So
6051 weirdly. But giving those screws up old xterms and emacs terms. So
6047 I added some logic for emacs terms to be ok, but I can't identify old
6052 I added some logic for emacs terms to be ok, but I can't identify old
6048 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6053 xterms separately ($TERM=='xterm' for many terminals, like konsole).
6049
6054
6050 2002-03-10 Fernando Perez <fperez@colorado.edu>
6055 2002-03-10 Fernando Perez <fperez@colorado.edu>
6051
6056
6052 * IPython/usage.py (__doc__): Various documentation cleanups and
6057 * IPython/usage.py (__doc__): Various documentation cleanups and
6053 updates, both in usage docstrings and in the manual.
6058 updates, both in usage docstrings and in the manual.
6054
6059
6055 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6060 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
6056 handling of caching. Set minimum acceptabe value for having a
6061 handling of caching. Set minimum acceptabe value for having a
6057 cache at 20 values.
6062 cache at 20 values.
6058
6063
6059 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6064 * IPython/iplib.py (InteractiveShell.user_setup): moved the
6060 install_first_time function to a method, renamed it and added an
6065 install_first_time function to a method, renamed it and added an
6061 'upgrade' mode. Now people can update their config directory with
6066 'upgrade' mode. Now people can update their config directory with
6062 a simple command line switch (-upgrade, also new).
6067 a simple command line switch (-upgrade, also new).
6063
6068
6064 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6069 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
6065 @file (convenient for automagic users under Python >= 2.2).
6070 @file (convenient for automagic users under Python >= 2.2).
6066 Removed @files (it seemed more like a plural than an abbrev. of
6071 Removed @files (it seemed more like a plural than an abbrev. of
6067 'file show').
6072 'file show').
6068
6073
6069 * IPython/iplib.py (install_first_time): Fixed crash if there were
6074 * IPython/iplib.py (install_first_time): Fixed crash if there were
6070 backup files ('~') in .ipython/ install directory.
6075 backup files ('~') in .ipython/ install directory.
6071
6076
6072 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6077 * IPython/ipmaker.py (make_IPython): fixes for new prompt
6073 system. Things look fine, but these changes are fairly
6078 system. Things look fine, but these changes are fairly
6074 intrusive. Test them for a few days.
6079 intrusive. Test them for a few days.
6075
6080
6076 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6081 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
6077 the prompts system. Now all in/out prompt strings are user
6082 the prompts system. Now all in/out prompt strings are user
6078 controllable. This is particularly useful for embedding, as one
6083 controllable. This is particularly useful for embedding, as one
6079 can tag embedded instances with particular prompts.
6084 can tag embedded instances with particular prompts.
6080
6085
6081 Also removed global use of sys.ps1/2, which now allows nested
6086 Also removed global use of sys.ps1/2, which now allows nested
6082 embeddings without any problems. Added command-line options for
6087 embeddings without any problems. Added command-line options for
6083 the prompt strings.
6088 the prompt strings.
6084
6089
6085 2002-03-08 Fernando Perez <fperez@colorado.edu>
6090 2002-03-08 Fernando Perez <fperez@colorado.edu>
6086
6091
6087 * IPython/UserConfig/example-embed-short.py (ipshell): added
6092 * IPython/UserConfig/example-embed-short.py (ipshell): added
6088 example file with the bare minimum code for embedding.
6093 example file with the bare minimum code for embedding.
6089
6094
6090 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6095 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
6091 functionality for the embeddable shell to be activated/deactivated
6096 functionality for the embeddable shell to be activated/deactivated
6092 either globally or at each call.
6097 either globally or at each call.
6093
6098
6094 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6099 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
6095 rewriting the prompt with '--->' for auto-inputs with proper
6100 rewriting the prompt with '--->' for auto-inputs with proper
6096 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6101 coloring. Now the previous UGLY hack in handle_auto() is gone, and
6097 this is handled by the prompts class itself, as it should.
6102 this is handled by the prompts class itself, as it should.
6098
6103
6099 2002-03-05 Fernando Perez <fperez@colorado.edu>
6104 2002-03-05 Fernando Perez <fperez@colorado.edu>
6100
6105
6101 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6106 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
6102 @logstart to avoid name clashes with the math log function.
6107 @logstart to avoid name clashes with the math log function.
6103
6108
6104 * Big updates to X/Emacs section of the manual.
6109 * Big updates to X/Emacs section of the manual.
6105
6110
6106 * Removed ipython_emacs. Milan explained to me how to pass
6111 * Removed ipython_emacs. Milan explained to me how to pass
6107 arguments to ipython through Emacs. Some day I'm going to end up
6112 arguments to ipython through Emacs. Some day I'm going to end up
6108 learning some lisp...
6113 learning some lisp...
6109
6114
6110 2002-03-04 Fernando Perez <fperez@colorado.edu>
6115 2002-03-04 Fernando Perez <fperez@colorado.edu>
6111
6116
6112 * IPython/ipython_emacs: Created script to be used as the
6117 * IPython/ipython_emacs: Created script to be used as the
6113 py-python-command Emacs variable so we can pass IPython
6118 py-python-command Emacs variable so we can pass IPython
6114 parameters. I can't figure out how to tell Emacs directly to pass
6119 parameters. I can't figure out how to tell Emacs directly to pass
6115 parameters to IPython, so a dummy shell script will do it.
6120 parameters to IPython, so a dummy shell script will do it.
6116
6121
6117 Other enhancements made for things to work better under Emacs'
6122 Other enhancements made for things to work better under Emacs'
6118 various types of terminals. Many thanks to Milan Zamazal
6123 various types of terminals. Many thanks to Milan Zamazal
6119 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6124 <pdm-AT-zamazal.org> for all the suggestions and pointers.
6120
6125
6121 2002-03-01 Fernando Perez <fperez@colorado.edu>
6126 2002-03-01 Fernando Perez <fperez@colorado.edu>
6122
6127
6123 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6128 * IPython/ipmaker.py (make_IPython): added a --readline! option so
6124 that loading of readline is now optional. This gives better
6129 that loading of readline is now optional. This gives better
6125 control to emacs users.
6130 control to emacs users.
6126
6131
6127 * IPython/ultraTB.py (__date__): Modified color escape sequences
6132 * IPython/ultraTB.py (__date__): Modified color escape sequences
6128 and now things work fine under xterm and in Emacs' term buffers
6133 and now things work fine under xterm and in Emacs' term buffers
6129 (though not shell ones). Well, in emacs you get colors, but all
6134 (though not shell ones). Well, in emacs you get colors, but all
6130 seem to be 'light' colors (no difference between dark and light
6135 seem to be 'light' colors (no difference between dark and light
6131 ones). But the garbage chars are gone, and also in xterms. It
6136 ones). But the garbage chars are gone, and also in xterms. It
6132 seems that now I'm using 'cleaner' ansi sequences.
6137 seems that now I'm using 'cleaner' ansi sequences.
6133
6138
6134 2002-02-21 Fernando Perez <fperez@colorado.edu>
6139 2002-02-21 Fernando Perez <fperez@colorado.edu>
6135
6140
6136 * Released 0.2.7 (mainly to publish the scoping fix).
6141 * Released 0.2.7 (mainly to publish the scoping fix).
6137
6142
6138 * IPython/Logger.py (Logger.logstate): added. A corresponding
6143 * IPython/Logger.py (Logger.logstate): added. A corresponding
6139 @logstate magic was created.
6144 @logstate magic was created.
6140
6145
6141 * IPython/Magic.py: fixed nested scoping problem under Python
6146 * IPython/Magic.py: fixed nested scoping problem under Python
6142 2.1.x (automagic wasn't working).
6147 2.1.x (automagic wasn't working).
6143
6148
6144 2002-02-20 Fernando Perez <fperez@colorado.edu>
6149 2002-02-20 Fernando Perez <fperez@colorado.edu>
6145
6150
6146 * Released 0.2.6.
6151 * Released 0.2.6.
6147
6152
6148 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6153 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
6149 option so that logs can come out without any headers at all.
6154 option so that logs can come out without any headers at all.
6150
6155
6151 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6156 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
6152 SciPy.
6157 SciPy.
6153
6158
6154 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6159 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
6155 that embedded IPython calls don't require vars() to be explicitly
6160 that embedded IPython calls don't require vars() to be explicitly
6156 passed. Now they are extracted from the caller's frame (code
6161 passed. Now they are extracted from the caller's frame (code
6157 snatched from Eric Jones' weave). Added better documentation to
6162 snatched from Eric Jones' weave). Added better documentation to
6158 the section on embedding and the example file.
6163 the section on embedding and the example file.
6159
6164
6160 * IPython/genutils.py (page): Changed so that under emacs, it just
6165 * IPython/genutils.py (page): Changed so that under emacs, it just
6161 prints the string. You can then page up and down in the emacs
6166 prints the string. You can then page up and down in the emacs
6162 buffer itself. This is how the builtin help() works.
6167 buffer itself. This is how the builtin help() works.
6163
6168
6164 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6169 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
6165 macro scoping: macros need to be executed in the user's namespace
6170 macro scoping: macros need to be executed in the user's namespace
6166 to work as if they had been typed by the user.
6171 to work as if they had been typed by the user.
6167
6172
6168 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6173 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
6169 execute automatically (no need to type 'exec...'). They then
6174 execute automatically (no need to type 'exec...'). They then
6170 behave like 'true macros'. The printing system was also modified
6175 behave like 'true macros'. The printing system was also modified
6171 for this to work.
6176 for this to work.
6172
6177
6173 2002-02-19 Fernando Perez <fperez@colorado.edu>
6178 2002-02-19 Fernando Perez <fperez@colorado.edu>
6174
6179
6175 * IPython/genutils.py (page_file): new function for paging files
6180 * IPython/genutils.py (page_file): new function for paging files
6176 in an OS-independent way. Also necessary for file viewing to work
6181 in an OS-independent way. Also necessary for file viewing to work
6177 well inside Emacs buffers.
6182 well inside Emacs buffers.
6178 (page): Added checks for being in an emacs buffer.
6183 (page): Added checks for being in an emacs buffer.
6179 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6184 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
6180 same bug in iplib.
6185 same bug in iplib.
6181
6186
6182 2002-02-18 Fernando Perez <fperez@colorado.edu>
6187 2002-02-18 Fernando Perez <fperez@colorado.edu>
6183
6188
6184 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6189 * IPython/iplib.py (InteractiveShell.init_readline): modified use
6185 of readline so that IPython can work inside an Emacs buffer.
6190 of readline so that IPython can work inside an Emacs buffer.
6186
6191
6187 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6192 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
6188 method signatures (they weren't really bugs, but it looks cleaner
6193 method signatures (they weren't really bugs, but it looks cleaner
6189 and keeps PyChecker happy).
6194 and keeps PyChecker happy).
6190
6195
6191 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6196 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
6192 for implementing various user-defined hooks. Currently only
6197 for implementing various user-defined hooks. Currently only
6193 display is done.
6198 display is done.
6194
6199
6195 * IPython/Prompts.py (CachedOutput._display): changed display
6200 * IPython/Prompts.py (CachedOutput._display): changed display
6196 functions so that they can be dynamically changed by users easily.
6201 functions so that they can be dynamically changed by users easily.
6197
6202
6198 * IPython/Extensions/numeric_formats.py (num_display): added an
6203 * IPython/Extensions/numeric_formats.py (num_display): added an
6199 extension for printing NumPy arrays in flexible manners. It
6204 extension for printing NumPy arrays in flexible manners. It
6200 doesn't do anything yet, but all the structure is in
6205 doesn't do anything yet, but all the structure is in
6201 place. Ultimately the plan is to implement output format control
6206 place. Ultimately the plan is to implement output format control
6202 like in Octave.
6207 like in Octave.
6203
6208
6204 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6209 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
6205 methods are found at run-time by all the automatic machinery.
6210 methods are found at run-time by all the automatic machinery.
6206
6211
6207 2002-02-17 Fernando Perez <fperez@colorado.edu>
6212 2002-02-17 Fernando Perez <fperez@colorado.edu>
6208
6213
6209 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6214 * setup_Windows.py (make_shortcut): documented. Cleaned up the
6210 whole file a little.
6215 whole file a little.
6211
6216
6212 * ToDo: closed this document. Now there's a new_design.lyx
6217 * ToDo: closed this document. Now there's a new_design.lyx
6213 document for all new ideas. Added making a pdf of it for the
6218 document for all new ideas. Added making a pdf of it for the
6214 end-user distro.
6219 end-user distro.
6215
6220
6216 * IPython/Logger.py (Logger.switch_log): Created this to replace
6221 * IPython/Logger.py (Logger.switch_log): Created this to replace
6217 logon() and logoff(). It also fixes a nasty crash reported by
6222 logon() and logoff(). It also fixes a nasty crash reported by
6218 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6223 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
6219
6224
6220 * IPython/iplib.py (complete): got auto-completion to work with
6225 * IPython/iplib.py (complete): got auto-completion to work with
6221 automagic (I had wanted this for a long time).
6226 automagic (I had wanted this for a long time).
6222
6227
6223 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6228 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
6224 to @file, since file() is now a builtin and clashes with automagic
6229 to @file, since file() is now a builtin and clashes with automagic
6225 for @file.
6230 for @file.
6226
6231
6227 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6232 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
6228 of this was previously in iplib, which had grown to more than 2000
6233 of this was previously in iplib, which had grown to more than 2000
6229 lines, way too long. No new functionality, but it makes managing
6234 lines, way too long. No new functionality, but it makes managing
6230 the code a bit easier.
6235 the code a bit easier.
6231
6236
6232 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6237 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
6233 information to crash reports.
6238 information to crash reports.
6234
6239
6235 2002-02-12 Fernando Perez <fperez@colorado.edu>
6240 2002-02-12 Fernando Perez <fperez@colorado.edu>
6236
6241
6237 * Released 0.2.5.
6242 * Released 0.2.5.
6238
6243
6239 2002-02-11 Fernando Perez <fperez@colorado.edu>
6244 2002-02-11 Fernando Perez <fperez@colorado.edu>
6240
6245
6241 * Wrote a relatively complete Windows installer. It puts
6246 * Wrote a relatively complete Windows installer. It puts
6242 everything in place, creates Start Menu entries and fixes the
6247 everything in place, creates Start Menu entries and fixes the
6243 color issues. Nothing fancy, but it works.
6248 color issues. Nothing fancy, but it works.
6244
6249
6245 2002-02-10 Fernando Perez <fperez@colorado.edu>
6250 2002-02-10 Fernando Perez <fperez@colorado.edu>
6246
6251
6247 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6252 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
6248 os.path.expanduser() call so that we can type @run ~/myfile.py and
6253 os.path.expanduser() call so that we can type @run ~/myfile.py and
6249 have thigs work as expected.
6254 have thigs work as expected.
6250
6255
6251 * IPython/genutils.py (page): fixed exception handling so things
6256 * IPython/genutils.py (page): fixed exception handling so things
6252 work both in Unix and Windows correctly. Quitting a pager triggers
6257 work both in Unix and Windows correctly. Quitting a pager triggers
6253 an IOError/broken pipe in Unix, and in windows not finding a pager
6258 an IOError/broken pipe in Unix, and in windows not finding a pager
6254 is also an IOError, so I had to actually look at the return value
6259 is also an IOError, so I had to actually look at the return value
6255 of the exception, not just the exception itself. Should be ok now.
6260 of the exception, not just the exception itself. Should be ok now.
6256
6261
6257 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6262 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
6258 modified to allow case-insensitive color scheme changes.
6263 modified to allow case-insensitive color scheme changes.
6259
6264
6260 2002-02-09 Fernando Perez <fperez@colorado.edu>
6265 2002-02-09 Fernando Perez <fperez@colorado.edu>
6261
6266
6262 * IPython/genutils.py (native_line_ends): new function to leave
6267 * IPython/genutils.py (native_line_ends): new function to leave
6263 user config files with os-native line-endings.
6268 user config files with os-native line-endings.
6264
6269
6265 * README and manual updates.
6270 * README and manual updates.
6266
6271
6267 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6272 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
6268 instead of StringType to catch Unicode strings.
6273 instead of StringType to catch Unicode strings.
6269
6274
6270 * IPython/genutils.py (filefind): fixed bug for paths with
6275 * IPython/genutils.py (filefind): fixed bug for paths with
6271 embedded spaces (very common in Windows).
6276 embedded spaces (very common in Windows).
6272
6277
6273 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6278 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
6274 files under Windows, so that they get automatically associated
6279 files under Windows, so that they get automatically associated
6275 with a text editor. Windows makes it a pain to handle
6280 with a text editor. Windows makes it a pain to handle
6276 extension-less files.
6281 extension-less files.
6277
6282
6278 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6283 * IPython/iplib.py (InteractiveShell.init_readline): Made the
6279 warning about readline only occur for Posix. In Windows there's no
6284 warning about readline only occur for Posix. In Windows there's no
6280 way to get readline, so why bother with the warning.
6285 way to get readline, so why bother with the warning.
6281
6286
6282 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6287 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
6283 for __str__ instead of dir(self), since dir() changed in 2.2.
6288 for __str__ instead of dir(self), since dir() changed in 2.2.
6284
6289
6285 * Ported to Windows! Tested on XP, I suspect it should work fine
6290 * Ported to Windows! Tested on XP, I suspect it should work fine
6286 on NT/2000, but I don't think it will work on 98 et al. That
6291 on NT/2000, but I don't think it will work on 98 et al. That
6287 series of Windows is such a piece of junk anyway that I won't try
6292 series of Windows is such a piece of junk anyway that I won't try
6288 porting it there. The XP port was straightforward, showed a few
6293 porting it there. The XP port was straightforward, showed a few
6289 bugs here and there (fixed all), in particular some string
6294 bugs here and there (fixed all), in particular some string
6290 handling stuff which required considering Unicode strings (which
6295 handling stuff which required considering Unicode strings (which
6291 Windows uses). This is good, but hasn't been too tested :) No
6296 Windows uses). This is good, but hasn't been too tested :) No
6292 fancy installer yet, I'll put a note in the manual so people at
6297 fancy installer yet, I'll put a note in the manual so people at
6293 least make manually a shortcut.
6298 least make manually a shortcut.
6294
6299
6295 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6300 * IPython/iplib.py (Magic.magic_colors): Unified the color options
6296 into a single one, "colors". This now controls both prompt and
6301 into a single one, "colors". This now controls both prompt and
6297 exception color schemes, and can be changed both at startup
6302 exception color schemes, and can be changed both at startup
6298 (either via command-line switches or via ipythonrc files) and at
6303 (either via command-line switches or via ipythonrc files) and at
6299 runtime, with @colors.
6304 runtime, with @colors.
6300 (Magic.magic_run): renamed @prun to @run and removed the old
6305 (Magic.magic_run): renamed @prun to @run and removed the old
6301 @run. The two were too similar to warrant keeping both.
6306 @run. The two were too similar to warrant keeping both.
6302
6307
6303 2002-02-03 Fernando Perez <fperez@colorado.edu>
6308 2002-02-03 Fernando Perez <fperez@colorado.edu>
6304
6309
6305 * IPython/iplib.py (install_first_time): Added comment on how to
6310 * IPython/iplib.py (install_first_time): Added comment on how to
6306 configure the color options for first-time users. Put a <return>
6311 configure the color options for first-time users. Put a <return>
6307 request at the end so that small-terminal users get a chance to
6312 request at the end so that small-terminal users get a chance to
6308 read the startup info.
6313 read the startup info.
6309
6314
6310 2002-01-23 Fernando Perez <fperez@colorado.edu>
6315 2002-01-23 Fernando Perez <fperez@colorado.edu>
6311
6316
6312 * IPython/iplib.py (CachedOutput.update): Changed output memory
6317 * IPython/iplib.py (CachedOutput.update): Changed output memory
6313 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6318 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
6314 input history we still use _i. Did this b/c these variable are
6319 input history we still use _i. Did this b/c these variable are
6315 very commonly used in interactive work, so the less we need to
6320 very commonly used in interactive work, so the less we need to
6316 type the better off we are.
6321 type the better off we are.
6317 (Magic.magic_prun): updated @prun to better handle the namespaces
6322 (Magic.magic_prun): updated @prun to better handle the namespaces
6318 the file will run in, including a fix for __name__ not being set
6323 the file will run in, including a fix for __name__ not being set
6319 before.
6324 before.
6320
6325
6321 2002-01-20 Fernando Perez <fperez@colorado.edu>
6326 2002-01-20 Fernando Perez <fperez@colorado.edu>
6322
6327
6323 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6328 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
6324 extra garbage for Python 2.2. Need to look more carefully into
6329 extra garbage for Python 2.2. Need to look more carefully into
6325 this later.
6330 this later.
6326
6331
6327 2002-01-19 Fernando Perez <fperez@colorado.edu>
6332 2002-01-19 Fernando Perez <fperez@colorado.edu>
6328
6333
6329 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6334 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
6330 display SyntaxError exceptions properly formatted when they occur
6335 display SyntaxError exceptions properly formatted when they occur
6331 (they can be triggered by imported code).
6336 (they can be triggered by imported code).
6332
6337
6333 2002-01-18 Fernando Perez <fperez@colorado.edu>
6338 2002-01-18 Fernando Perez <fperez@colorado.edu>
6334
6339
6335 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6340 * IPython/iplib.py (InteractiveShell.safe_execfile): now
6336 SyntaxError exceptions are reported nicely formatted, instead of
6341 SyntaxError exceptions are reported nicely formatted, instead of
6337 spitting out only offset information as before.
6342 spitting out only offset information as before.
6338 (Magic.magic_prun): Added the @prun function for executing
6343 (Magic.magic_prun): Added the @prun function for executing
6339 programs with command line args inside IPython.
6344 programs with command line args inside IPython.
6340
6345
6341 2002-01-16 Fernando Perez <fperez@colorado.edu>
6346 2002-01-16 Fernando Perez <fperez@colorado.edu>
6342
6347
6343 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6348 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
6344 to *not* include the last item given in a range. This brings their
6349 to *not* include the last item given in a range. This brings their
6345 behavior in line with Python's slicing:
6350 behavior in line with Python's slicing:
6346 a[n1:n2] -> a[n1]...a[n2-1]
6351 a[n1:n2] -> a[n1]...a[n2-1]
6347 It may be a bit less convenient, but I prefer to stick to Python's
6352 It may be a bit less convenient, but I prefer to stick to Python's
6348 conventions *everywhere*, so users never have to wonder.
6353 conventions *everywhere*, so users never have to wonder.
6349 (Magic.magic_macro): Added @macro function to ease the creation of
6354 (Magic.magic_macro): Added @macro function to ease the creation of
6350 macros.
6355 macros.
6351
6356
6352 2002-01-05 Fernando Perez <fperez@colorado.edu>
6357 2002-01-05 Fernando Perez <fperez@colorado.edu>
6353
6358
6354 * Released 0.2.4.
6359 * Released 0.2.4.
6355
6360
6356 * IPython/iplib.py (Magic.magic_pdef):
6361 * IPython/iplib.py (Magic.magic_pdef):
6357 (InteractiveShell.safe_execfile): report magic lines and error
6362 (InteractiveShell.safe_execfile): report magic lines and error
6358 lines without line numbers so one can easily copy/paste them for
6363 lines without line numbers so one can easily copy/paste them for
6359 re-execution.
6364 re-execution.
6360
6365
6361 * Updated manual with recent changes.
6366 * Updated manual with recent changes.
6362
6367
6363 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6368 * IPython/iplib.py (Magic.magic_oinfo): added constructor
6364 docstring printing when class? is called. Very handy for knowing
6369 docstring printing when class? is called. Very handy for knowing
6365 how to create class instances (as long as __init__ is well
6370 how to create class instances (as long as __init__ is well
6366 documented, of course :)
6371 documented, of course :)
6367 (Magic.magic_doc): print both class and constructor docstrings.
6372 (Magic.magic_doc): print both class and constructor docstrings.
6368 (Magic.magic_pdef): give constructor info if passed a class and
6373 (Magic.magic_pdef): give constructor info if passed a class and
6369 __call__ info for callable object instances.
6374 __call__ info for callable object instances.
6370
6375
6371 2002-01-04 Fernando Perez <fperez@colorado.edu>
6376 2002-01-04 Fernando Perez <fperez@colorado.edu>
6372
6377
6373 * Made deep_reload() off by default. It doesn't always work
6378 * Made deep_reload() off by default. It doesn't always work
6374 exactly as intended, so it's probably safer to have it off. It's
6379 exactly as intended, so it's probably safer to have it off. It's
6375 still available as dreload() anyway, so nothing is lost.
6380 still available as dreload() anyway, so nothing is lost.
6376
6381
6377 2002-01-02 Fernando Perez <fperez@colorado.edu>
6382 2002-01-02 Fernando Perez <fperez@colorado.edu>
6378
6383
6379 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6384 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
6380 so I wanted an updated release).
6385 so I wanted an updated release).
6381
6386
6382 2001-12-27 Fernando Perez <fperez@colorado.edu>
6387 2001-12-27 Fernando Perez <fperez@colorado.edu>
6383
6388
6384 * IPython/iplib.py (InteractiveShell.interact): Added the original
6389 * IPython/iplib.py (InteractiveShell.interact): Added the original
6385 code from 'code.py' for this module in order to change the
6390 code from 'code.py' for this module in order to change the
6386 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6391 handling of a KeyboardInterrupt. This was necessary b/c otherwise
6387 the history cache would break when the user hit Ctrl-C, and
6392 the history cache would break when the user hit Ctrl-C, and
6388 interact() offers no way to add any hooks to it.
6393 interact() offers no way to add any hooks to it.
6389
6394
6390 2001-12-23 Fernando Perez <fperez@colorado.edu>
6395 2001-12-23 Fernando Perez <fperez@colorado.edu>
6391
6396
6392 * setup.py: added check for 'MANIFEST' before trying to remove
6397 * setup.py: added check for 'MANIFEST' before trying to remove
6393 it. Thanks to Sean Reifschneider.
6398 it. Thanks to Sean Reifschneider.
6394
6399
6395 2001-12-22 Fernando Perez <fperez@colorado.edu>
6400 2001-12-22 Fernando Perez <fperez@colorado.edu>
6396
6401
6397 * Released 0.2.2.
6402 * Released 0.2.2.
6398
6403
6399 * Finished (reasonably) writing the manual. Later will add the
6404 * Finished (reasonably) writing the manual. Later will add the
6400 python-standard navigation stylesheets, but for the time being
6405 python-standard navigation stylesheets, but for the time being
6401 it's fairly complete. Distribution will include html and pdf
6406 it's fairly complete. Distribution will include html and pdf
6402 versions.
6407 versions.
6403
6408
6404 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6409 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
6405 (MayaVi author).
6410 (MayaVi author).
6406
6411
6407 2001-12-21 Fernando Perez <fperez@colorado.edu>
6412 2001-12-21 Fernando Perez <fperez@colorado.edu>
6408
6413
6409 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6414 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
6410 good public release, I think (with the manual and the distutils
6415 good public release, I think (with the manual and the distutils
6411 installer). The manual can use some work, but that can go
6416 installer). The manual can use some work, but that can go
6412 slowly. Otherwise I think it's quite nice for end users. Next
6417 slowly. Otherwise I think it's quite nice for end users. Next
6413 summer, rewrite the guts of it...
6418 summer, rewrite the guts of it...
6414
6419
6415 * Changed format of ipythonrc files to use whitespace as the
6420 * Changed format of ipythonrc files to use whitespace as the
6416 separator instead of an explicit '='. Cleaner.
6421 separator instead of an explicit '='. Cleaner.
6417
6422
6418 2001-12-20 Fernando Perez <fperez@colorado.edu>
6423 2001-12-20 Fernando Perez <fperez@colorado.edu>
6419
6424
6420 * Started a manual in LyX. For now it's just a quick merge of the
6425 * Started a manual in LyX. For now it's just a quick merge of the
6421 various internal docstrings and READMEs. Later it may grow into a
6426 various internal docstrings and READMEs. Later it may grow into a
6422 nice, full-blown manual.
6427 nice, full-blown manual.
6423
6428
6424 * Set up a distutils based installer. Installation should now be
6429 * Set up a distutils based installer. Installation should now be
6425 trivially simple for end-users.
6430 trivially simple for end-users.
6426
6431
6427 2001-12-11 Fernando Perez <fperez@colorado.edu>
6432 2001-12-11 Fernando Perez <fperez@colorado.edu>
6428
6433
6429 * Released 0.2.0. First public release, announced it at
6434 * Released 0.2.0. First public release, announced it at
6430 comp.lang.python. From now on, just bugfixes...
6435 comp.lang.python. From now on, just bugfixes...
6431
6436
6432 * Went through all the files, set copyright/license notices and
6437 * Went through all the files, set copyright/license notices and
6433 cleaned up things. Ready for release.
6438 cleaned up things. Ready for release.
6434
6439
6435 2001-12-10 Fernando Perez <fperez@colorado.edu>
6440 2001-12-10 Fernando Perez <fperez@colorado.edu>
6436
6441
6437 * Changed the first-time installer not to use tarfiles. It's more
6442 * Changed the first-time installer not to use tarfiles. It's more
6438 robust now and less unix-dependent. Also makes it easier for
6443 robust now and less unix-dependent. Also makes it easier for
6439 people to later upgrade versions.
6444 people to later upgrade versions.
6440
6445
6441 * Changed @exit to @abort to reflect the fact that it's pretty
6446 * Changed @exit to @abort to reflect the fact that it's pretty
6442 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6447 brutal (a sys.exit()). The difference between @abort and Ctrl-D
6443 becomes significant only when IPyhton is embedded: in that case,
6448 becomes significant only when IPyhton is embedded: in that case,
6444 C-D closes IPython only, but @abort kills the enclosing program
6449 C-D closes IPython only, but @abort kills the enclosing program
6445 too (unless it had called IPython inside a try catching
6450 too (unless it had called IPython inside a try catching
6446 SystemExit).
6451 SystemExit).
6447
6452
6448 * Created Shell module which exposes the actuall IPython Shell
6453 * Created Shell module which exposes the actuall IPython Shell
6449 classes, currently the normal and the embeddable one. This at
6454 classes, currently the normal and the embeddable one. This at
6450 least offers a stable interface we won't need to change when
6455 least offers a stable interface we won't need to change when
6451 (later) the internals are rewritten. That rewrite will be confined
6456 (later) the internals are rewritten. That rewrite will be confined
6452 to iplib and ipmaker, but the Shell interface should remain as is.
6457 to iplib and ipmaker, but the Shell interface should remain as is.
6453
6458
6454 * Added embed module which offers an embeddable IPShell object,
6459 * Added embed module which offers an embeddable IPShell object,
6455 useful to fire up IPython *inside* a running program. Great for
6460 useful to fire up IPython *inside* a running program. Great for
6456 debugging or dynamical data analysis.
6461 debugging or dynamical data analysis.
6457
6462
6458 2001-12-08 Fernando Perez <fperez@colorado.edu>
6463 2001-12-08 Fernando Perez <fperez@colorado.edu>
6459
6464
6460 * Fixed small bug preventing seeing info from methods of defined
6465 * Fixed small bug preventing seeing info from methods of defined
6461 objects (incorrect namespace in _ofind()).
6466 objects (incorrect namespace in _ofind()).
6462
6467
6463 * Documentation cleanup. Moved the main usage docstrings to a
6468 * Documentation cleanup. Moved the main usage docstrings to a
6464 separate file, usage.py (cleaner to maintain, and hopefully in the
6469 separate file, usage.py (cleaner to maintain, and hopefully in the
6465 future some perlpod-like way of producing interactive, man and
6470 future some perlpod-like way of producing interactive, man and
6466 html docs out of it will be found).
6471 html docs out of it will be found).
6467
6472
6468 * Added @profile to see your profile at any time.
6473 * Added @profile to see your profile at any time.
6469
6474
6470 * Added @p as an alias for 'print'. It's especially convenient if
6475 * Added @p as an alias for 'print'. It's especially convenient if
6471 using automagic ('p x' prints x).
6476 using automagic ('p x' prints x).
6472
6477
6473 * Small cleanups and fixes after a pychecker run.
6478 * Small cleanups and fixes after a pychecker run.
6474
6479
6475 * Changed the @cd command to handle @cd - and @cd -<n> for
6480 * Changed the @cd command to handle @cd - and @cd -<n> for
6476 visiting any directory in _dh.
6481 visiting any directory in _dh.
6477
6482
6478 * Introduced _dh, a history of visited directories. @dhist prints
6483 * Introduced _dh, a history of visited directories. @dhist prints
6479 it out with numbers.
6484 it out with numbers.
6480
6485
6481 2001-12-07 Fernando Perez <fperez@colorado.edu>
6486 2001-12-07 Fernando Perez <fperez@colorado.edu>
6482
6487
6483 * Released 0.1.22
6488 * Released 0.1.22
6484
6489
6485 * Made initialization a bit more robust against invalid color
6490 * Made initialization a bit more robust against invalid color
6486 options in user input (exit, not traceback-crash).
6491 options in user input (exit, not traceback-crash).
6487
6492
6488 * Changed the bug crash reporter to write the report only in the
6493 * Changed the bug crash reporter to write the report only in the
6489 user's .ipython directory. That way IPython won't litter people's
6494 user's .ipython directory. That way IPython won't litter people's
6490 hard disks with crash files all over the place. Also print on
6495 hard disks with crash files all over the place. Also print on
6491 screen the necessary mail command.
6496 screen the necessary mail command.
6492
6497
6493 * With the new ultraTB, implemented LightBG color scheme for light
6498 * With the new ultraTB, implemented LightBG color scheme for light
6494 background terminals. A lot of people like white backgrounds, so I
6499 background terminals. A lot of people like white backgrounds, so I
6495 guess we should at least give them something readable.
6500 guess we should at least give them something readable.
6496
6501
6497 2001-12-06 Fernando Perez <fperez@colorado.edu>
6502 2001-12-06 Fernando Perez <fperez@colorado.edu>
6498
6503
6499 * Modified the structure of ultraTB. Now there's a proper class
6504 * Modified the structure of ultraTB. Now there's a proper class
6500 for tables of color schemes which allow adding schemes easily and
6505 for tables of color schemes which allow adding schemes easily and
6501 switching the active scheme without creating a new instance every
6506 switching the active scheme without creating a new instance every
6502 time (which was ridiculous). The syntax for creating new schemes
6507 time (which was ridiculous). The syntax for creating new schemes
6503 is also cleaner. I think ultraTB is finally done, with a clean
6508 is also cleaner. I think ultraTB is finally done, with a clean
6504 class structure. Names are also much cleaner (now there's proper
6509 class structure. Names are also much cleaner (now there's proper
6505 color tables, no need for every variable to also have 'color' in
6510 color tables, no need for every variable to also have 'color' in
6506 its name).
6511 its name).
6507
6512
6508 * Broke down genutils into separate files. Now genutils only
6513 * Broke down genutils into separate files. Now genutils only
6509 contains utility functions, and classes have been moved to their
6514 contains utility functions, and classes have been moved to their
6510 own files (they had enough independent functionality to warrant
6515 own files (they had enough independent functionality to warrant
6511 it): ConfigLoader, OutputTrap, Struct.
6516 it): ConfigLoader, OutputTrap, Struct.
6512
6517
6513 2001-12-05 Fernando Perez <fperez@colorado.edu>
6518 2001-12-05 Fernando Perez <fperez@colorado.edu>
6514
6519
6515 * IPython turns 21! Released version 0.1.21, as a candidate for
6520 * IPython turns 21! Released version 0.1.21, as a candidate for
6516 public consumption. If all goes well, release in a few days.
6521 public consumption. If all goes well, release in a few days.
6517
6522
6518 * Fixed path bug (files in Extensions/ directory wouldn't be found
6523 * Fixed path bug (files in Extensions/ directory wouldn't be found
6519 unless IPython/ was explicitly in sys.path).
6524 unless IPython/ was explicitly in sys.path).
6520
6525
6521 * Extended the FlexCompleter class as MagicCompleter to allow
6526 * Extended the FlexCompleter class as MagicCompleter to allow
6522 completion of @-starting lines.
6527 completion of @-starting lines.
6523
6528
6524 * Created __release__.py file as a central repository for release
6529 * Created __release__.py file as a central repository for release
6525 info that other files can read from.
6530 info that other files can read from.
6526
6531
6527 * Fixed small bug in logging: when logging was turned on in
6532 * Fixed small bug in logging: when logging was turned on in
6528 mid-session, old lines with special meanings (!@?) were being
6533 mid-session, old lines with special meanings (!@?) were being
6529 logged without the prepended comment, which is necessary since
6534 logged without the prepended comment, which is necessary since
6530 they are not truly valid python syntax. This should make session
6535 they are not truly valid python syntax. This should make session
6531 restores produce less errors.
6536 restores produce less errors.
6532
6537
6533 * The namespace cleanup forced me to make a FlexCompleter class
6538 * The namespace cleanup forced me to make a FlexCompleter class
6534 which is nothing but a ripoff of rlcompleter, but with selectable
6539 which is nothing but a ripoff of rlcompleter, but with selectable
6535 namespace (rlcompleter only works in __main__.__dict__). I'll try
6540 namespace (rlcompleter only works in __main__.__dict__). I'll try
6536 to submit a note to the authors to see if this change can be
6541 to submit a note to the authors to see if this change can be
6537 incorporated in future rlcompleter releases (Dec.6: done)
6542 incorporated in future rlcompleter releases (Dec.6: done)
6538
6543
6539 * More fixes to namespace handling. It was a mess! Now all
6544 * More fixes to namespace handling. It was a mess! Now all
6540 explicit references to __main__.__dict__ are gone (except when
6545 explicit references to __main__.__dict__ are gone (except when
6541 really needed) and everything is handled through the namespace
6546 really needed) and everything is handled through the namespace
6542 dicts in the IPython instance. We seem to be getting somewhere
6547 dicts in the IPython instance. We seem to be getting somewhere
6543 with this, finally...
6548 with this, finally...
6544
6549
6545 * Small documentation updates.
6550 * Small documentation updates.
6546
6551
6547 * Created the Extensions directory under IPython (with an
6552 * Created the Extensions directory under IPython (with an
6548 __init__.py). Put the PhysicalQ stuff there. This directory should
6553 __init__.py). Put the PhysicalQ stuff there. This directory should
6549 be used for all special-purpose extensions.
6554 be used for all special-purpose extensions.
6550
6555
6551 * File renaming:
6556 * File renaming:
6552 ipythonlib --> ipmaker
6557 ipythonlib --> ipmaker
6553 ipplib --> iplib
6558 ipplib --> iplib
6554 This makes a bit more sense in terms of what these files actually do.
6559 This makes a bit more sense in terms of what these files actually do.
6555
6560
6556 * Moved all the classes and functions in ipythonlib to ipplib, so
6561 * Moved all the classes and functions in ipythonlib to ipplib, so
6557 now ipythonlib only has make_IPython(). This will ease up its
6562 now ipythonlib only has make_IPython(). This will ease up its
6558 splitting in smaller functional chunks later.
6563 splitting in smaller functional chunks later.
6559
6564
6560 * Cleaned up (done, I think) output of @whos. Better column
6565 * Cleaned up (done, I think) output of @whos. Better column
6561 formatting, and now shows str(var) for as much as it can, which is
6566 formatting, and now shows str(var) for as much as it can, which is
6562 typically what one gets with a 'print var'.
6567 typically what one gets with a 'print var'.
6563
6568
6564 2001-12-04 Fernando Perez <fperez@colorado.edu>
6569 2001-12-04 Fernando Perez <fperez@colorado.edu>
6565
6570
6566 * Fixed namespace problems. Now builtin/IPyhton/user names get
6571 * Fixed namespace problems. Now builtin/IPyhton/user names get
6567 properly reported in their namespace. Internal namespace handling
6572 properly reported in their namespace. Internal namespace handling
6568 is finally getting decent (not perfect yet, but much better than
6573 is finally getting decent (not perfect yet, but much better than
6569 the ad-hoc mess we had).
6574 the ad-hoc mess we had).
6570
6575
6571 * Removed -exit option. If people just want to run a python
6576 * Removed -exit option. If people just want to run a python
6572 script, that's what the normal interpreter is for. Less
6577 script, that's what the normal interpreter is for. Less
6573 unnecessary options, less chances for bugs.
6578 unnecessary options, less chances for bugs.
6574
6579
6575 * Added a crash handler which generates a complete post-mortem if
6580 * Added a crash handler which generates a complete post-mortem if
6576 IPython crashes. This will help a lot in tracking bugs down the
6581 IPython crashes. This will help a lot in tracking bugs down the
6577 road.
6582 road.
6578
6583
6579 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6584 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
6580 which were boud to functions being reassigned would bypass the
6585 which were boud to functions being reassigned would bypass the
6581 logger, breaking the sync of _il with the prompt counter. This
6586 logger, breaking the sync of _il with the prompt counter. This
6582 would then crash IPython later when a new line was logged.
6587 would then crash IPython later when a new line was logged.
6583
6588
6584 2001-12-02 Fernando Perez <fperez@colorado.edu>
6589 2001-12-02 Fernando Perez <fperez@colorado.edu>
6585
6590
6586 * Made IPython a package. This means people don't have to clutter
6591 * Made IPython a package. This means people don't have to clutter
6587 their sys.path with yet another directory. Changed the INSTALL
6592 their sys.path with yet another directory. Changed the INSTALL
6588 file accordingly.
6593 file accordingly.
6589
6594
6590 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6595 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
6591 sorts its output (so @who shows it sorted) and @whos formats the
6596 sorts its output (so @who shows it sorted) and @whos formats the
6592 table according to the width of the first column. Nicer, easier to
6597 table according to the width of the first column. Nicer, easier to
6593 read. Todo: write a generic table_format() which takes a list of
6598 read. Todo: write a generic table_format() which takes a list of
6594 lists and prints it nicely formatted, with optional row/column
6599 lists and prints it nicely formatted, with optional row/column
6595 separators and proper padding and justification.
6600 separators and proper padding and justification.
6596
6601
6597 * Released 0.1.20
6602 * Released 0.1.20
6598
6603
6599 * Fixed bug in @log which would reverse the inputcache list (a
6604 * Fixed bug in @log which would reverse the inputcache list (a
6600 copy operation was missing).
6605 copy operation was missing).
6601
6606
6602 * Code cleanup. @config was changed to use page(). Better, since
6607 * Code cleanup. @config was changed to use page(). Better, since
6603 its output is always quite long.
6608 its output is always quite long.
6604
6609
6605 * Itpl is back as a dependency. I was having too many problems
6610 * Itpl is back as a dependency. I was having too many problems
6606 getting the parametric aliases to work reliably, and it's just
6611 getting the parametric aliases to work reliably, and it's just
6607 easier to code weird string operations with it than playing %()s
6612 easier to code weird string operations with it than playing %()s
6608 games. It's only ~6k, so I don't think it's too big a deal.
6613 games. It's only ~6k, so I don't think it's too big a deal.
6609
6614
6610 * Found (and fixed) a very nasty bug with history. !lines weren't
6615 * Found (and fixed) a very nasty bug with history. !lines weren't
6611 getting cached, and the out of sync caches would crash
6616 getting cached, and the out of sync caches would crash
6612 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6617 IPython. Fixed it by reorganizing the prefilter/handlers/logger
6613 division of labor a bit better. Bug fixed, cleaner structure.
6618 division of labor a bit better. Bug fixed, cleaner structure.
6614
6619
6615 2001-12-01 Fernando Perez <fperez@colorado.edu>
6620 2001-12-01 Fernando Perez <fperez@colorado.edu>
6616
6621
6617 * Released 0.1.19
6622 * Released 0.1.19
6618
6623
6619 * Added option -n to @hist to prevent line number printing. Much
6624 * Added option -n to @hist to prevent line number printing. Much
6620 easier to copy/paste code this way.
6625 easier to copy/paste code this way.
6621
6626
6622 * Created global _il to hold the input list. Allows easy
6627 * Created global _il to hold the input list. Allows easy
6623 re-execution of blocks of code by slicing it (inspired by Janko's
6628 re-execution of blocks of code by slicing it (inspired by Janko's
6624 comment on 'macros').
6629 comment on 'macros').
6625
6630
6626 * Small fixes and doc updates.
6631 * Small fixes and doc updates.
6627
6632
6628 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6633 * Rewrote @history function (was @h). Renamed it to @hist, @h is
6629 much too fragile with automagic. Handles properly multi-line
6634 much too fragile with automagic. Handles properly multi-line
6630 statements and takes parameters.
6635 statements and takes parameters.
6631
6636
6632 2001-11-30 Fernando Perez <fperez@colorado.edu>
6637 2001-11-30 Fernando Perez <fperez@colorado.edu>
6633
6638
6634 * Version 0.1.18 released.
6639 * Version 0.1.18 released.
6635
6640
6636 * Fixed nasty namespace bug in initial module imports.
6641 * Fixed nasty namespace bug in initial module imports.
6637
6642
6638 * Added copyright/license notes to all code files (except
6643 * Added copyright/license notes to all code files (except
6639 DPyGetOpt). For the time being, LGPL. That could change.
6644 DPyGetOpt). For the time being, LGPL. That could change.
6640
6645
6641 * Rewrote a much nicer README, updated INSTALL, cleaned up
6646 * Rewrote a much nicer README, updated INSTALL, cleaned up
6642 ipythonrc-* samples.
6647 ipythonrc-* samples.
6643
6648
6644 * Overall code/documentation cleanup. Basically ready for
6649 * Overall code/documentation cleanup. Basically ready for
6645 release. Only remaining thing: licence decision (LGPL?).
6650 release. Only remaining thing: licence decision (LGPL?).
6646
6651
6647 * Converted load_config to a class, ConfigLoader. Now recursion
6652 * Converted load_config to a class, ConfigLoader. Now recursion
6648 control is better organized. Doesn't include the same file twice.
6653 control is better organized. Doesn't include the same file twice.
6649
6654
6650 2001-11-29 Fernando Perez <fperez@colorado.edu>
6655 2001-11-29 Fernando Perez <fperez@colorado.edu>
6651
6656
6652 * Got input history working. Changed output history variables from
6657 * Got input history working. Changed output history variables from
6653 _p to _o so that _i is for input and _o for output. Just cleaner
6658 _p to _o so that _i is for input and _o for output. Just cleaner
6654 convention.
6659 convention.
6655
6660
6656 * Implemented parametric aliases. This pretty much allows the
6661 * Implemented parametric aliases. This pretty much allows the
6657 alias system to offer full-blown shell convenience, I think.
6662 alias system to offer full-blown shell convenience, I think.
6658
6663
6659 * Version 0.1.17 released, 0.1.18 opened.
6664 * Version 0.1.17 released, 0.1.18 opened.
6660
6665
6661 * dot_ipython/ipythonrc (alias): added documentation.
6666 * dot_ipython/ipythonrc (alias): added documentation.
6662 (xcolor): Fixed small bug (xcolors -> xcolor)
6667 (xcolor): Fixed small bug (xcolors -> xcolor)
6663
6668
6664 * Changed the alias system. Now alias is a magic command to define
6669 * Changed the alias system. Now alias is a magic command to define
6665 aliases just like the shell. Rationale: the builtin magics should
6670 aliases just like the shell. Rationale: the builtin magics should
6666 be there for things deeply connected to IPython's
6671 be there for things deeply connected to IPython's
6667 architecture. And this is a much lighter system for what I think
6672 architecture. And this is a much lighter system for what I think
6668 is the really important feature: allowing users to define quickly
6673 is the really important feature: allowing users to define quickly
6669 magics that will do shell things for them, so they can customize
6674 magics that will do shell things for them, so they can customize
6670 IPython easily to match their work habits. If someone is really
6675 IPython easily to match their work habits. If someone is really
6671 desperate to have another name for a builtin alias, they can
6676 desperate to have another name for a builtin alias, they can
6672 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6677 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
6673 works.
6678 works.
6674
6679
6675 2001-11-28 Fernando Perez <fperez@colorado.edu>
6680 2001-11-28 Fernando Perez <fperez@colorado.edu>
6676
6681
6677 * Changed @file so that it opens the source file at the proper
6682 * Changed @file so that it opens the source file at the proper
6678 line. Since it uses less, if your EDITOR environment is
6683 line. Since it uses less, if your EDITOR environment is
6679 configured, typing v will immediately open your editor of choice
6684 configured, typing v will immediately open your editor of choice
6680 right at the line where the object is defined. Not as quick as
6685 right at the line where the object is defined. Not as quick as
6681 having a direct @edit command, but for all intents and purposes it
6686 having a direct @edit command, but for all intents and purposes it
6682 works. And I don't have to worry about writing @edit to deal with
6687 works. And I don't have to worry about writing @edit to deal with
6683 all the editors, less does that.
6688 all the editors, less does that.
6684
6689
6685 * Version 0.1.16 released, 0.1.17 opened.
6690 * Version 0.1.16 released, 0.1.17 opened.
6686
6691
6687 * Fixed some nasty bugs in the page/page_dumb combo that could
6692 * Fixed some nasty bugs in the page/page_dumb combo that could
6688 crash IPython.
6693 crash IPython.
6689
6694
6690 2001-11-27 Fernando Perez <fperez@colorado.edu>
6695 2001-11-27 Fernando Perez <fperez@colorado.edu>
6691
6696
6692 * Version 0.1.15 released, 0.1.16 opened.
6697 * Version 0.1.15 released, 0.1.16 opened.
6693
6698
6694 * Finally got ? and ?? to work for undefined things: now it's
6699 * Finally got ? and ?? to work for undefined things: now it's
6695 possible to type {}.get? and get information about the get method
6700 possible to type {}.get? and get information about the get method
6696 of dicts, or os.path? even if only os is defined (so technically
6701 of dicts, or os.path? even if only os is defined (so technically
6697 os.path isn't). Works at any level. For example, after import os,
6702 os.path isn't). Works at any level. For example, after import os,
6698 os?, os.path?, os.path.abspath? all work. This is great, took some
6703 os?, os.path?, os.path.abspath? all work. This is great, took some
6699 work in _ofind.
6704 work in _ofind.
6700
6705
6701 * Fixed more bugs with logging. The sanest way to do it was to add
6706 * Fixed more bugs with logging. The sanest way to do it was to add
6702 to @log a 'mode' parameter. Killed two in one shot (this mode
6707 to @log a 'mode' parameter. Killed two in one shot (this mode
6703 option was a request of Janko's). I think it's finally clean
6708 option was a request of Janko's). I think it's finally clean
6704 (famous last words).
6709 (famous last words).
6705
6710
6706 * Added a page_dumb() pager which does a decent job of paging on
6711 * Added a page_dumb() pager which does a decent job of paging on
6707 screen, if better things (like less) aren't available. One less
6712 screen, if better things (like less) aren't available. One less
6708 unix dependency (someday maybe somebody will port this to
6713 unix dependency (someday maybe somebody will port this to
6709 windows).
6714 windows).
6710
6715
6711 * Fixed problem in magic_log: would lock of logging out if log
6716 * Fixed problem in magic_log: would lock of logging out if log
6712 creation failed (because it would still think it had succeeded).
6717 creation failed (because it would still think it had succeeded).
6713
6718
6714 * Improved the page() function using curses to auto-detect screen
6719 * Improved the page() function using curses to auto-detect screen
6715 size. Now it can make a much better decision on whether to print
6720 size. Now it can make a much better decision on whether to print
6716 or page a string. Option screen_length was modified: a value 0
6721 or page a string. Option screen_length was modified: a value 0
6717 means auto-detect, and that's the default now.
6722 means auto-detect, and that's the default now.
6718
6723
6719 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6724 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
6720 go out. I'll test it for a few days, then talk to Janko about
6725 go out. I'll test it for a few days, then talk to Janko about
6721 licences and announce it.
6726 licences and announce it.
6722
6727
6723 * Fixed the length of the auto-generated ---> prompt which appears
6728 * Fixed the length of the auto-generated ---> prompt which appears
6724 for auto-parens and auto-quotes. Getting this right isn't trivial,
6729 for auto-parens and auto-quotes. Getting this right isn't trivial,
6725 with all the color escapes, different prompt types and optional
6730 with all the color escapes, different prompt types and optional
6726 separators. But it seems to be working in all the combinations.
6731 separators. But it seems to be working in all the combinations.
6727
6732
6728 2001-11-26 Fernando Perez <fperez@colorado.edu>
6733 2001-11-26 Fernando Perez <fperez@colorado.edu>
6729
6734
6730 * Wrote a regexp filter to get option types from the option names
6735 * Wrote a regexp filter to get option types from the option names
6731 string. This eliminates the need to manually keep two duplicate
6736 string. This eliminates the need to manually keep two duplicate
6732 lists.
6737 lists.
6733
6738
6734 * Removed the unneeded check_option_names. Now options are handled
6739 * Removed the unneeded check_option_names. Now options are handled
6735 in a much saner manner and it's easy to visually check that things
6740 in a much saner manner and it's easy to visually check that things
6736 are ok.
6741 are ok.
6737
6742
6738 * Updated version numbers on all files I modified to carry a
6743 * Updated version numbers on all files I modified to carry a
6739 notice so Janko and Nathan have clear version markers.
6744 notice so Janko and Nathan have clear version markers.
6740
6745
6741 * Updated docstring for ultraTB with my changes. I should send
6746 * Updated docstring for ultraTB with my changes. I should send
6742 this to Nathan.
6747 this to Nathan.
6743
6748
6744 * Lots of small fixes. Ran everything through pychecker again.
6749 * Lots of small fixes. Ran everything through pychecker again.
6745
6750
6746 * Made loading of deep_reload an cmd line option. If it's not too
6751 * Made loading of deep_reload an cmd line option. If it's not too
6747 kosher, now people can just disable it. With -nodeep_reload it's
6752 kosher, now people can just disable it. With -nodeep_reload it's
6748 still available as dreload(), it just won't overwrite reload().
6753 still available as dreload(), it just won't overwrite reload().
6749
6754
6750 * Moved many options to the no| form (-opt and -noopt
6755 * Moved many options to the no| form (-opt and -noopt
6751 accepted). Cleaner.
6756 accepted). Cleaner.
6752
6757
6753 * Changed magic_log so that if called with no parameters, it uses
6758 * Changed magic_log so that if called with no parameters, it uses
6754 'rotate' mode. That way auto-generated logs aren't automatically
6759 'rotate' mode. That way auto-generated logs aren't automatically
6755 over-written. For normal logs, now a backup is made if it exists
6760 over-written. For normal logs, now a backup is made if it exists
6756 (only 1 level of backups). A new 'backup' mode was added to the
6761 (only 1 level of backups). A new 'backup' mode was added to the
6757 Logger class to support this. This was a request by Janko.
6762 Logger class to support this. This was a request by Janko.
6758
6763
6759 * Added @logoff/@logon to stop/restart an active log.
6764 * Added @logoff/@logon to stop/restart an active log.
6760
6765
6761 * Fixed a lot of bugs in log saving/replay. It was pretty
6766 * Fixed a lot of bugs in log saving/replay. It was pretty
6762 broken. Now special lines (!@,/) appear properly in the command
6767 broken. Now special lines (!@,/) appear properly in the command
6763 history after a log replay.
6768 history after a log replay.
6764
6769
6765 * Tried and failed to implement full session saving via pickle. My
6770 * Tried and failed to implement full session saving via pickle. My
6766 idea was to pickle __main__.__dict__, but modules can't be
6771 idea was to pickle __main__.__dict__, but modules can't be
6767 pickled. This would be a better alternative to replaying logs, but
6772 pickled. This would be a better alternative to replaying logs, but
6768 seems quite tricky to get to work. Changed -session to be called
6773 seems quite tricky to get to work. Changed -session to be called
6769 -logplay, which more accurately reflects what it does. And if we
6774 -logplay, which more accurately reflects what it does. And if we
6770 ever get real session saving working, -session is now available.
6775 ever get real session saving working, -session is now available.
6771
6776
6772 * Implemented color schemes for prompts also. As for tracebacks,
6777 * Implemented color schemes for prompts also. As for tracebacks,
6773 currently only NoColor and Linux are supported. But now the
6778 currently only NoColor and Linux are supported. But now the
6774 infrastructure is in place, based on a generic ColorScheme
6779 infrastructure is in place, based on a generic ColorScheme
6775 class. So writing and activating new schemes both for the prompts
6780 class. So writing and activating new schemes both for the prompts
6776 and the tracebacks should be straightforward.
6781 and the tracebacks should be straightforward.
6777
6782
6778 * Version 0.1.13 released, 0.1.14 opened.
6783 * Version 0.1.13 released, 0.1.14 opened.
6779
6784
6780 * Changed handling of options for output cache. Now counter is
6785 * Changed handling of options for output cache. Now counter is
6781 hardwired starting at 1 and one specifies the maximum number of
6786 hardwired starting at 1 and one specifies the maximum number of
6782 entries *in the outcache* (not the max prompt counter). This is
6787 entries *in the outcache* (not the max prompt counter). This is
6783 much better, since many statements won't increase the cache
6788 much better, since many statements won't increase the cache
6784 count. It also eliminated some confusing options, now there's only
6789 count. It also eliminated some confusing options, now there's only
6785 one: cache_size.
6790 one: cache_size.
6786
6791
6787 * Added 'alias' magic function and magic_alias option in the
6792 * Added 'alias' magic function and magic_alias option in the
6788 ipythonrc file. Now the user can easily define whatever names he
6793 ipythonrc file. Now the user can easily define whatever names he
6789 wants for the magic functions without having to play weird
6794 wants for the magic functions without having to play weird
6790 namespace games. This gives IPython a real shell-like feel.
6795 namespace games. This gives IPython a real shell-like feel.
6791
6796
6792 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6797 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
6793 @ or not).
6798 @ or not).
6794
6799
6795 This was one of the last remaining 'visible' bugs (that I know
6800 This was one of the last remaining 'visible' bugs (that I know
6796 of). I think if I can clean up the session loading so it works
6801 of). I think if I can clean up the session loading so it works
6797 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6802 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
6798 about licensing).
6803 about licensing).
6799
6804
6800 2001-11-25 Fernando Perez <fperez@colorado.edu>
6805 2001-11-25 Fernando Perez <fperez@colorado.edu>
6801
6806
6802 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6807 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
6803 there's a cleaner distinction between what ? and ?? show.
6808 there's a cleaner distinction between what ? and ?? show.
6804
6809
6805 * Added screen_length option. Now the user can define his own
6810 * Added screen_length option. Now the user can define his own
6806 screen size for page() operations.
6811 screen size for page() operations.
6807
6812
6808 * Implemented magic shell-like functions with automatic code
6813 * Implemented magic shell-like functions with automatic code
6809 generation. Now adding another function is just a matter of adding
6814 generation. Now adding another function is just a matter of adding
6810 an entry to a dict, and the function is dynamically generated at
6815 an entry to a dict, and the function is dynamically generated at
6811 run-time. Python has some really cool features!
6816 run-time. Python has some really cool features!
6812
6817
6813 * Renamed many options to cleanup conventions a little. Now all
6818 * Renamed many options to cleanup conventions a little. Now all
6814 are lowercase, and only underscores where needed. Also in the code
6819 are lowercase, and only underscores where needed. Also in the code
6815 option name tables are clearer.
6820 option name tables are clearer.
6816
6821
6817 * Changed prompts a little. Now input is 'In [n]:' instead of
6822 * Changed prompts a little. Now input is 'In [n]:' instead of
6818 'In[n]:='. This allows it the numbers to be aligned with the
6823 'In[n]:='. This allows it the numbers to be aligned with the
6819 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6824 Out[n] numbers, and removes usage of ':=' which doesn't exist in
6820 Python (it was a Mathematica thing). The '...' continuation prompt
6825 Python (it was a Mathematica thing). The '...' continuation prompt
6821 was also changed a little to align better.
6826 was also changed a little to align better.
6822
6827
6823 * Fixed bug when flushing output cache. Not all _p<n> variables
6828 * Fixed bug when flushing output cache. Not all _p<n> variables
6824 exist, so their deletion needs to be wrapped in a try:
6829 exist, so their deletion needs to be wrapped in a try:
6825
6830
6826 * Figured out how to properly use inspect.formatargspec() (it
6831 * Figured out how to properly use inspect.formatargspec() (it
6827 requires the args preceded by *). So I removed all the code from
6832 requires the args preceded by *). So I removed all the code from
6828 _get_pdef in Magic, which was just replicating that.
6833 _get_pdef in Magic, which was just replicating that.
6829
6834
6830 * Added test to prefilter to allow redefining magic function names
6835 * Added test to prefilter to allow redefining magic function names
6831 as variables. This is ok, since the @ form is always available,
6836 as variables. This is ok, since the @ form is always available,
6832 but whe should allow the user to define a variable called 'ls' if
6837 but whe should allow the user to define a variable called 'ls' if
6833 he needs it.
6838 he needs it.
6834
6839
6835 * Moved the ToDo information from README into a separate ToDo.
6840 * Moved the ToDo information from README into a separate ToDo.
6836
6841
6837 * General code cleanup and small bugfixes. I think it's close to a
6842 * General code cleanup and small bugfixes. I think it's close to a
6838 state where it can be released, obviously with a big 'beta'
6843 state where it can be released, obviously with a big 'beta'
6839 warning on it.
6844 warning on it.
6840
6845
6841 * Got the magic function split to work. Now all magics are defined
6846 * Got the magic function split to work. Now all magics are defined
6842 in a separate class. It just organizes things a bit, and now
6847 in a separate class. It just organizes things a bit, and now
6843 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6848 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
6844 was too long).
6849 was too long).
6845
6850
6846 * Changed @clear to @reset to avoid potential confusions with
6851 * Changed @clear to @reset to avoid potential confusions with
6847 the shell command clear. Also renamed @cl to @clear, which does
6852 the shell command clear. Also renamed @cl to @clear, which does
6848 exactly what people expect it to from their shell experience.
6853 exactly what people expect it to from their shell experience.
6849
6854
6850 Added a check to the @reset command (since it's so
6855 Added a check to the @reset command (since it's so
6851 destructive, it's probably a good idea to ask for confirmation).
6856 destructive, it's probably a good idea to ask for confirmation).
6852 But now reset only works for full namespace resetting. Since the
6857 But now reset only works for full namespace resetting. Since the
6853 del keyword is already there for deleting a few specific
6858 del keyword is already there for deleting a few specific
6854 variables, I don't see the point of having a redundant magic
6859 variables, I don't see the point of having a redundant magic
6855 function for the same task.
6860 function for the same task.
6856
6861
6857 2001-11-24 Fernando Perez <fperez@colorado.edu>
6862 2001-11-24 Fernando Perez <fperez@colorado.edu>
6858
6863
6859 * Updated the builtin docs (esp. the ? ones).
6864 * Updated the builtin docs (esp. the ? ones).
6860
6865
6861 * Ran all the code through pychecker. Not terribly impressed with
6866 * Ran all the code through pychecker. Not terribly impressed with
6862 it: lots of spurious warnings and didn't really find anything of
6867 it: lots of spurious warnings and didn't really find anything of
6863 substance (just a few modules being imported and not used).
6868 substance (just a few modules being imported and not used).
6864
6869
6865 * Implemented the new ultraTB functionality into IPython. New
6870 * Implemented the new ultraTB functionality into IPython. New
6866 option: xcolors. This chooses color scheme. xmode now only selects
6871 option: xcolors. This chooses color scheme. xmode now only selects
6867 between Plain and Verbose. Better orthogonality.
6872 between Plain and Verbose. Better orthogonality.
6868
6873
6869 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6874 * Large rewrite of ultraTB. Much cleaner now, with a separation of
6870 mode and color scheme for the exception handlers. Now it's
6875 mode and color scheme for the exception handlers. Now it's
6871 possible to have the verbose traceback with no coloring.
6876 possible to have the verbose traceback with no coloring.
6872
6877
6873 2001-11-23 Fernando Perez <fperez@colorado.edu>
6878 2001-11-23 Fernando Perez <fperez@colorado.edu>
6874
6879
6875 * Version 0.1.12 released, 0.1.13 opened.
6880 * Version 0.1.12 released, 0.1.13 opened.
6876
6881
6877 * Removed option to set auto-quote and auto-paren escapes by
6882 * Removed option to set auto-quote and auto-paren escapes by
6878 user. The chances of breaking valid syntax are just too high. If
6883 user. The chances of breaking valid syntax are just too high. If
6879 someone *really* wants, they can always dig into the code.
6884 someone *really* wants, they can always dig into the code.
6880
6885
6881 * Made prompt separators configurable.
6886 * Made prompt separators configurable.
6882
6887
6883 2001-11-22 Fernando Perez <fperez@colorado.edu>
6888 2001-11-22 Fernando Perez <fperez@colorado.edu>
6884
6889
6885 * Small bugfixes in many places.
6890 * Small bugfixes in many places.
6886
6891
6887 * Removed the MyCompleter class from ipplib. It seemed redundant
6892 * Removed the MyCompleter class from ipplib. It seemed redundant
6888 with the C-p,C-n history search functionality. Less code to
6893 with the C-p,C-n history search functionality. Less code to
6889 maintain.
6894 maintain.
6890
6895
6891 * Moved all the original ipython.py code into ipythonlib.py. Right
6896 * Moved all the original ipython.py code into ipythonlib.py. Right
6892 now it's just one big dump into a function called make_IPython, so
6897 now it's just one big dump into a function called make_IPython, so
6893 no real modularity has been gained. But at least it makes the
6898 no real modularity has been gained. But at least it makes the
6894 wrapper script tiny, and since ipythonlib is a module, it gets
6899 wrapper script tiny, and since ipythonlib is a module, it gets
6895 compiled and startup is much faster.
6900 compiled and startup is much faster.
6896
6901
6897 This is a reasobably 'deep' change, so we should test it for a
6902 This is a reasobably 'deep' change, so we should test it for a
6898 while without messing too much more with the code.
6903 while without messing too much more with the code.
6899
6904
6900 2001-11-21 Fernando Perez <fperez@colorado.edu>
6905 2001-11-21 Fernando Perez <fperez@colorado.edu>
6901
6906
6902 * Version 0.1.11 released, 0.1.12 opened for further work.
6907 * Version 0.1.11 released, 0.1.12 opened for further work.
6903
6908
6904 * Removed dependency on Itpl. It was only needed in one place. It
6909 * Removed dependency on Itpl. It was only needed in one place. It
6905 would be nice if this became part of python, though. It makes life
6910 would be nice if this became part of python, though. It makes life
6906 *a lot* easier in some cases.
6911 *a lot* easier in some cases.
6907
6912
6908 * Simplified the prefilter code a bit. Now all handlers are
6913 * Simplified the prefilter code a bit. Now all handlers are
6909 expected to explicitly return a value (at least a blank string).
6914 expected to explicitly return a value (at least a blank string).
6910
6915
6911 * Heavy edits in ipplib. Removed the help system altogether. Now
6916 * Heavy edits in ipplib. Removed the help system altogether. Now
6912 obj?/?? is used for inspecting objects, a magic @doc prints
6917 obj?/?? is used for inspecting objects, a magic @doc prints
6913 docstrings, and full-blown Python help is accessed via the 'help'
6918 docstrings, and full-blown Python help is accessed via the 'help'
6914 keyword. This cleans up a lot of code (less to maintain) and does
6919 keyword. This cleans up a lot of code (less to maintain) and does
6915 the job. Since 'help' is now a standard Python component, might as
6920 the job. Since 'help' is now a standard Python component, might as
6916 well use it and remove duplicate functionality.
6921 well use it and remove duplicate functionality.
6917
6922
6918 Also removed the option to use ipplib as a standalone program. By
6923 Also removed the option to use ipplib as a standalone program. By
6919 now it's too dependent on other parts of IPython to function alone.
6924 now it's too dependent on other parts of IPython to function alone.
6920
6925
6921 * Fixed bug in genutils.pager. It would crash if the pager was
6926 * Fixed bug in genutils.pager. It would crash if the pager was
6922 exited immediately after opening (broken pipe).
6927 exited immediately after opening (broken pipe).
6923
6928
6924 * Trimmed down the VerboseTB reporting a little. The header is
6929 * Trimmed down the VerboseTB reporting a little. The header is
6925 much shorter now and the repeated exception arguments at the end
6930 much shorter now and the repeated exception arguments at the end
6926 have been removed. For interactive use the old header seemed a bit
6931 have been removed. For interactive use the old header seemed a bit
6927 excessive.
6932 excessive.
6928
6933
6929 * Fixed small bug in output of @whos for variables with multi-word
6934 * Fixed small bug in output of @whos for variables with multi-word
6930 types (only first word was displayed).
6935 types (only first word was displayed).
6931
6936
6932 2001-11-17 Fernando Perez <fperez@colorado.edu>
6937 2001-11-17 Fernando Perez <fperez@colorado.edu>
6933
6938
6934 * Version 0.1.10 released, 0.1.11 opened for further work.
6939 * Version 0.1.10 released, 0.1.11 opened for further work.
6935
6940
6936 * Modified dirs and friends. dirs now *returns* the stack (not
6941 * Modified dirs and friends. dirs now *returns* the stack (not
6937 prints), so one can manipulate it as a variable. Convenient to
6942 prints), so one can manipulate it as a variable. Convenient to
6938 travel along many directories.
6943 travel along many directories.
6939
6944
6940 * Fixed bug in magic_pdef: would only work with functions with
6945 * Fixed bug in magic_pdef: would only work with functions with
6941 arguments with default values.
6946 arguments with default values.
6942
6947
6943 2001-11-14 Fernando Perez <fperez@colorado.edu>
6948 2001-11-14 Fernando Perez <fperez@colorado.edu>
6944
6949
6945 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6950 * Added the PhysicsInput stuff to dot_ipython so it ships as an
6946 example with IPython. Various other minor fixes and cleanups.
6951 example with IPython. Various other minor fixes and cleanups.
6947
6952
6948 * Version 0.1.9 released, 0.1.10 opened for further work.
6953 * Version 0.1.9 released, 0.1.10 opened for further work.
6949
6954
6950 * Added sys.path to the list of directories searched in the
6955 * Added sys.path to the list of directories searched in the
6951 execfile= option. It used to be the current directory and the
6956 execfile= option. It used to be the current directory and the
6952 user's IPYTHONDIR only.
6957 user's IPYTHONDIR only.
6953
6958
6954 2001-11-13 Fernando Perez <fperez@colorado.edu>
6959 2001-11-13 Fernando Perez <fperez@colorado.edu>
6955
6960
6956 * Reinstated the raw_input/prefilter separation that Janko had
6961 * Reinstated the raw_input/prefilter separation that Janko had
6957 initially. This gives a more convenient setup for extending the
6962 initially. This gives a more convenient setup for extending the
6958 pre-processor from the outside: raw_input always gets a string,
6963 pre-processor from the outside: raw_input always gets a string,
6959 and prefilter has to process it. We can then redefine prefilter
6964 and prefilter has to process it. We can then redefine prefilter
6960 from the outside and implement extensions for special
6965 from the outside and implement extensions for special
6961 purposes.
6966 purposes.
6962
6967
6963 Today I got one for inputting PhysicalQuantity objects
6968 Today I got one for inputting PhysicalQuantity objects
6964 (from Scientific) without needing any function calls at
6969 (from Scientific) without needing any function calls at
6965 all. Extremely convenient, and it's all done as a user-level
6970 all. Extremely convenient, and it's all done as a user-level
6966 extension (no IPython code was touched). Now instead of:
6971 extension (no IPython code was touched). Now instead of:
6967 a = PhysicalQuantity(4.2,'m/s**2')
6972 a = PhysicalQuantity(4.2,'m/s**2')
6968 one can simply say
6973 one can simply say
6969 a = 4.2 m/s**2
6974 a = 4.2 m/s**2
6970 or even
6975 or even
6971 a = 4.2 m/s^2
6976 a = 4.2 m/s^2
6972
6977
6973 I use this, but it's also a proof of concept: IPython really is
6978 I use this, but it's also a proof of concept: IPython really is
6974 fully user-extensible, even at the level of the parsing of the
6979 fully user-extensible, even at the level of the parsing of the
6975 command line. It's not trivial, but it's perfectly doable.
6980 command line. It's not trivial, but it's perfectly doable.
6976
6981
6977 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6982 * Added 'add_flip' method to inclusion conflict resolver. Fixes
6978 the problem of modules being loaded in the inverse order in which
6983 the problem of modules being loaded in the inverse order in which
6979 they were defined in
6984 they were defined in
6980
6985
6981 * Version 0.1.8 released, 0.1.9 opened for further work.
6986 * Version 0.1.8 released, 0.1.9 opened for further work.
6982
6987
6983 * Added magics pdef, source and file. They respectively show the
6988 * Added magics pdef, source and file. They respectively show the
6984 definition line ('prototype' in C), source code and full python
6989 definition line ('prototype' in C), source code and full python
6985 file for any callable object. The object inspector oinfo uses
6990 file for any callable object. The object inspector oinfo uses
6986 these to show the same information.
6991 these to show the same information.
6987
6992
6988 * Version 0.1.7 released, 0.1.8 opened for further work.
6993 * Version 0.1.7 released, 0.1.8 opened for further work.
6989
6994
6990 * Separated all the magic functions into a class called Magic. The
6995 * Separated all the magic functions into a class called Magic. The
6991 InteractiveShell class was becoming too big for Xemacs to handle
6996 InteractiveShell class was becoming too big for Xemacs to handle
6992 (de-indenting a line would lock it up for 10 seconds while it
6997 (de-indenting a line would lock it up for 10 seconds while it
6993 backtracked on the whole class!)
6998 backtracked on the whole class!)
6994
6999
6995 FIXME: didn't work. It can be done, but right now namespaces are
7000 FIXME: didn't work. It can be done, but right now namespaces are
6996 all messed up. Do it later (reverted it for now, so at least
7001 all messed up. Do it later (reverted it for now, so at least
6997 everything works as before).
7002 everything works as before).
6998
7003
6999 * Got the object introspection system (magic_oinfo) working! I
7004 * Got the object introspection system (magic_oinfo) working! I
7000 think this is pretty much ready for release to Janko, so he can
7005 think this is pretty much ready for release to Janko, so he can
7001 test it for a while and then announce it. Pretty much 100% of what
7006 test it for a while and then announce it. Pretty much 100% of what
7002 I wanted for the 'phase 1' release is ready. Happy, tired.
7007 I wanted for the 'phase 1' release is ready. Happy, tired.
7003
7008
7004 2001-11-12 Fernando Perez <fperez@colorado.edu>
7009 2001-11-12 Fernando Perez <fperez@colorado.edu>
7005
7010
7006 * Version 0.1.6 released, 0.1.7 opened for further work.
7011 * Version 0.1.6 released, 0.1.7 opened for further work.
7007
7012
7008 * Fixed bug in printing: it used to test for truth before
7013 * Fixed bug in printing: it used to test for truth before
7009 printing, so 0 wouldn't print. Now checks for None.
7014 printing, so 0 wouldn't print. Now checks for None.
7010
7015
7011 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7016 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
7012 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7017 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
7013 reaches by hand into the outputcache. Think of a better way to do
7018 reaches by hand into the outputcache. Think of a better way to do
7014 this later.
7019 this later.
7015
7020
7016 * Various small fixes thanks to Nathan's comments.
7021 * Various small fixes thanks to Nathan's comments.
7017
7022
7018 * Changed magic_pprint to magic_Pprint. This way it doesn't
7023 * Changed magic_pprint to magic_Pprint. This way it doesn't
7019 collide with pprint() and the name is consistent with the command
7024 collide with pprint() and the name is consistent with the command
7020 line option.
7025 line option.
7021
7026
7022 * Changed prompt counter behavior to be fully like
7027 * Changed prompt counter behavior to be fully like
7023 Mathematica's. That is, even input that doesn't return a result
7028 Mathematica's. That is, even input that doesn't return a result
7024 raises the prompt counter. The old behavior was kind of confusing
7029 raises the prompt counter. The old behavior was kind of confusing
7025 (getting the same prompt number several times if the operation
7030 (getting the same prompt number several times if the operation
7026 didn't return a result).
7031 didn't return a result).
7027
7032
7028 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7033 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
7029
7034
7030 * Fixed -Classic mode (wasn't working anymore).
7035 * Fixed -Classic mode (wasn't working anymore).
7031
7036
7032 * Added colored prompts using Nathan's new code. Colors are
7037 * Added colored prompts using Nathan's new code. Colors are
7033 currently hardwired, they can be user-configurable. For
7038 currently hardwired, they can be user-configurable. For
7034 developers, they can be chosen in file ipythonlib.py, at the
7039 developers, they can be chosen in file ipythonlib.py, at the
7035 beginning of the CachedOutput class def.
7040 beginning of the CachedOutput class def.
7036
7041
7037 2001-11-11 Fernando Perez <fperez@colorado.edu>
7042 2001-11-11 Fernando Perez <fperez@colorado.edu>
7038
7043
7039 * Version 0.1.5 released, 0.1.6 opened for further work.
7044 * Version 0.1.5 released, 0.1.6 opened for further work.
7040
7045
7041 * Changed magic_env to *return* the environment as a dict (not to
7046 * Changed magic_env to *return* the environment as a dict (not to
7042 print it). This way it prints, but it can also be processed.
7047 print it). This way it prints, but it can also be processed.
7043
7048
7044 * Added Verbose exception reporting to interactive
7049 * Added Verbose exception reporting to interactive
7045 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7050 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
7046 traceback. Had to make some changes to the ultraTB file. This is
7051 traceback. Had to make some changes to the ultraTB file. This is
7047 probably the last 'big' thing in my mental todo list. This ties
7052 probably the last 'big' thing in my mental todo list. This ties
7048 in with the next entry:
7053 in with the next entry:
7049
7054
7050 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7055 * Changed -Xi and -Xf to a single -xmode option. Now all the user
7051 has to specify is Plain, Color or Verbose for all exception
7056 has to specify is Plain, Color or Verbose for all exception
7052 handling.
7057 handling.
7053
7058
7054 * Removed ShellServices option. All this can really be done via
7059 * Removed ShellServices option. All this can really be done via
7055 the magic system. It's easier to extend, cleaner and has automatic
7060 the magic system. It's easier to extend, cleaner and has automatic
7056 namespace protection and documentation.
7061 namespace protection and documentation.
7057
7062
7058 2001-11-09 Fernando Perez <fperez@colorado.edu>
7063 2001-11-09 Fernando Perez <fperez@colorado.edu>
7059
7064
7060 * Fixed bug in output cache flushing (missing parameter to
7065 * Fixed bug in output cache flushing (missing parameter to
7061 __init__). Other small bugs fixed (found using pychecker).
7066 __init__). Other small bugs fixed (found using pychecker).
7062
7067
7063 * Version 0.1.4 opened for bugfixing.
7068 * Version 0.1.4 opened for bugfixing.
7064
7069
7065 2001-11-07 Fernando Perez <fperez@colorado.edu>
7070 2001-11-07 Fernando Perez <fperez@colorado.edu>
7066
7071
7067 * Version 0.1.3 released, mainly because of the raw_input bug.
7072 * Version 0.1.3 released, mainly because of the raw_input bug.
7068
7073
7069 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7074 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
7070 and when testing for whether things were callable, a call could
7075 and when testing for whether things were callable, a call could
7071 actually be made to certain functions. They would get called again
7076 actually be made to certain functions. They would get called again
7072 once 'really' executed, with a resulting double call. A disaster
7077 once 'really' executed, with a resulting double call. A disaster
7073 in many cases (list.reverse() would never work!).
7078 in many cases (list.reverse() would never work!).
7074
7079
7075 * Removed prefilter() function, moved its code to raw_input (which
7080 * Removed prefilter() function, moved its code to raw_input (which
7076 after all was just a near-empty caller for prefilter). This saves
7081 after all was just a near-empty caller for prefilter). This saves
7077 a function call on every prompt, and simplifies the class a tiny bit.
7082 a function call on every prompt, and simplifies the class a tiny bit.
7078
7083
7079 * Fix _ip to __ip name in magic example file.
7084 * Fix _ip to __ip name in magic example file.
7080
7085
7081 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7086 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
7082 work with non-gnu versions of tar.
7087 work with non-gnu versions of tar.
7083
7088
7084 2001-11-06 Fernando Perez <fperez@colorado.edu>
7089 2001-11-06 Fernando Perez <fperez@colorado.edu>
7085
7090
7086 * Version 0.1.2. Just to keep track of the recent changes.
7091 * Version 0.1.2. Just to keep track of the recent changes.
7087
7092
7088 * Fixed nasty bug in output prompt routine. It used to check 'if
7093 * Fixed nasty bug in output prompt routine. It used to check 'if
7089 arg != None...'. Problem is, this fails if arg implements a
7094 arg != None...'. Problem is, this fails if arg implements a
7090 special comparison (__cmp__) which disallows comparing to
7095 special comparison (__cmp__) which disallows comparing to
7091 None. Found it when trying to use the PhysicalQuantity module from
7096 None. Found it when trying to use the PhysicalQuantity module from
7092 ScientificPython.
7097 ScientificPython.
7093
7098
7094 2001-11-05 Fernando Perez <fperez@colorado.edu>
7099 2001-11-05 Fernando Perez <fperez@colorado.edu>
7095
7100
7096 * Also added dirs. Now the pushd/popd/dirs family functions
7101 * Also added dirs. Now the pushd/popd/dirs family functions
7097 basically like the shell, with the added convenience of going home
7102 basically like the shell, with the added convenience of going home
7098 when called with no args.
7103 when called with no args.
7099
7104
7100 * pushd/popd slightly modified to mimic shell behavior more
7105 * pushd/popd slightly modified to mimic shell behavior more
7101 closely.
7106 closely.
7102
7107
7103 * Added env,pushd,popd from ShellServices as magic functions. I
7108 * Added env,pushd,popd from ShellServices as magic functions. I
7104 think the cleanest will be to port all desired functions from
7109 think the cleanest will be to port all desired functions from
7105 ShellServices as magics and remove ShellServices altogether. This
7110 ShellServices as magics and remove ShellServices altogether. This
7106 will provide a single, clean way of adding functionality
7111 will provide a single, clean way of adding functionality
7107 (shell-type or otherwise) to IP.
7112 (shell-type or otherwise) to IP.
7108
7113
7109 2001-11-04 Fernando Perez <fperez@colorado.edu>
7114 2001-11-04 Fernando Perez <fperez@colorado.edu>
7110
7115
7111 * Added .ipython/ directory to sys.path. This way users can keep
7116 * Added .ipython/ directory to sys.path. This way users can keep
7112 customizations there and access them via import.
7117 customizations there and access them via import.
7113
7118
7114 2001-11-03 Fernando Perez <fperez@colorado.edu>
7119 2001-11-03 Fernando Perez <fperez@colorado.edu>
7115
7120
7116 * Opened version 0.1.1 for new changes.
7121 * Opened version 0.1.1 for new changes.
7117
7122
7118 * Changed version number to 0.1.0: first 'public' release, sent to
7123 * Changed version number to 0.1.0: first 'public' release, sent to
7119 Nathan and Janko.
7124 Nathan and Janko.
7120
7125
7121 * Lots of small fixes and tweaks.
7126 * Lots of small fixes and tweaks.
7122
7127
7123 * Minor changes to whos format. Now strings are shown, snipped if
7128 * Minor changes to whos format. Now strings are shown, snipped if
7124 too long.
7129 too long.
7125
7130
7126 * Changed ShellServices to work on __main__ so they show up in @who
7131 * Changed ShellServices to work on __main__ so they show up in @who
7127
7132
7128 * Help also works with ? at the end of a line:
7133 * Help also works with ? at the end of a line:
7129 ?sin and sin?
7134 ?sin and sin?
7130 both produce the same effect. This is nice, as often I use the
7135 both produce the same effect. This is nice, as often I use the
7131 tab-complete to find the name of a method, but I used to then have
7136 tab-complete to find the name of a method, but I used to then have
7132 to go to the beginning of the line to put a ? if I wanted more
7137 to go to the beginning of the line to put a ? if I wanted more
7133 info. Now I can just add the ? and hit return. Convenient.
7138 info. Now I can just add the ? and hit return. Convenient.
7134
7139
7135 2001-11-02 Fernando Perez <fperez@colorado.edu>
7140 2001-11-02 Fernando Perez <fperez@colorado.edu>
7136
7141
7137 * Python version check (>=2.1) added.
7142 * Python version check (>=2.1) added.
7138
7143
7139 * Added LazyPython documentation. At this point the docs are quite
7144 * Added LazyPython documentation. At this point the docs are quite
7140 a mess. A cleanup is in order.
7145 a mess. A cleanup is in order.
7141
7146
7142 * Auto-installer created. For some bizarre reason, the zipfiles
7147 * Auto-installer created. For some bizarre reason, the zipfiles
7143 module isn't working on my system. So I made a tar version
7148 module isn't working on my system. So I made a tar version
7144 (hopefully the command line options in various systems won't kill
7149 (hopefully the command line options in various systems won't kill
7145 me).
7150 me).
7146
7151
7147 * Fixes to Struct in genutils. Now all dictionary-like methods are
7152 * Fixes to Struct in genutils. Now all dictionary-like methods are
7148 protected (reasonably).
7153 protected (reasonably).
7149
7154
7150 * Added pager function to genutils and changed ? to print usage
7155 * Added pager function to genutils and changed ? to print usage
7151 note through it (it was too long).
7156 note through it (it was too long).
7152
7157
7153 * Added the LazyPython functionality. Works great! I changed the
7158 * Added the LazyPython functionality. Works great! I changed the
7154 auto-quote escape to ';', it's on home row and next to '. But
7159 auto-quote escape to ';', it's on home row and next to '. But
7155 both auto-quote and auto-paren (still /) escapes are command-line
7160 both auto-quote and auto-paren (still /) escapes are command-line
7156 parameters.
7161 parameters.
7157
7162
7158
7163
7159 2001-11-01 Fernando Perez <fperez@colorado.edu>
7164 2001-11-01 Fernando Perez <fperez@colorado.edu>
7160
7165
7161 * Version changed to 0.0.7. Fairly large change: configuration now
7166 * Version changed to 0.0.7. Fairly large change: configuration now
7162 is all stored in a directory, by default .ipython. There, all
7167 is all stored in a directory, by default .ipython. There, all
7163 config files have normal looking names (not .names)
7168 config files have normal looking names (not .names)
7164
7169
7165 * Version 0.0.6 Released first to Lucas and Archie as a test
7170 * Version 0.0.6 Released first to Lucas and Archie as a test
7166 run. Since it's the first 'semi-public' release, change version to
7171 run. Since it's the first 'semi-public' release, change version to
7167 > 0.0.6 for any changes now.
7172 > 0.0.6 for any changes now.
7168
7173
7169 * Stuff I had put in the ipplib.py changelog:
7174 * Stuff I had put in the ipplib.py changelog:
7170
7175
7171 Changes to InteractiveShell:
7176 Changes to InteractiveShell:
7172
7177
7173 - Made the usage message a parameter.
7178 - Made the usage message a parameter.
7174
7179
7175 - Require the name of the shell variable to be given. It's a bit
7180 - Require the name of the shell variable to be given. It's a bit
7176 of a hack, but allows the name 'shell' not to be hardwired in the
7181 of a hack, but allows the name 'shell' not to be hardwired in the
7177 magic (@) handler, which is problematic b/c it requires
7182 magic (@) handler, which is problematic b/c it requires
7178 polluting the global namespace with 'shell'. This in turn is
7183 polluting the global namespace with 'shell'. This in turn is
7179 fragile: if a user redefines a variable called shell, things
7184 fragile: if a user redefines a variable called shell, things
7180 break.
7185 break.
7181
7186
7182 - magic @: all functions available through @ need to be defined
7187 - magic @: all functions available through @ need to be defined
7183 as magic_<name>, even though they can be called simply as
7188 as magic_<name>, even though they can be called simply as
7184 @<name>. This allows the special command @magic to gather
7189 @<name>. This allows the special command @magic to gather
7185 information automatically about all existing magic functions,
7190 information automatically about all existing magic functions,
7186 even if they are run-time user extensions, by parsing the shell
7191 even if they are run-time user extensions, by parsing the shell
7187 instance __dict__ looking for special magic_ names.
7192 instance __dict__ looking for special magic_ names.
7188
7193
7189 - mainloop: added *two* local namespace parameters. This allows
7194 - mainloop: added *two* local namespace parameters. This allows
7190 the class to differentiate between parameters which were there
7195 the class to differentiate between parameters which were there
7191 before and after command line initialization was processed. This
7196 before and after command line initialization was processed. This
7192 way, later @who can show things loaded at startup by the
7197 way, later @who can show things loaded at startup by the
7193 user. This trick was necessary to make session saving/reloading
7198 user. This trick was necessary to make session saving/reloading
7194 really work: ideally after saving/exiting/reloading a session,
7199 really work: ideally after saving/exiting/reloading a session,
7195 *everything* should look the same, including the output of @who. I
7200 *everything* should look the same, including the output of @who. I
7196 was only able to make this work with this double namespace
7201 was only able to make this work with this double namespace
7197 trick.
7202 trick.
7198
7203
7199 - added a header to the logfile which allows (almost) full
7204 - added a header to the logfile which allows (almost) full
7200 session restoring.
7205 session restoring.
7201
7206
7202 - prepend lines beginning with @ or !, with a and log
7207 - prepend lines beginning with @ or !, with a and log
7203 them. Why? !lines: may be useful to know what you did @lines:
7208 them. Why? !lines: may be useful to know what you did @lines:
7204 they may affect session state. So when restoring a session, at
7209 they may affect session state. So when restoring a session, at
7205 least inform the user of their presence. I couldn't quite get
7210 least inform the user of their presence. I couldn't quite get
7206 them to properly re-execute, but at least the user is warned.
7211 them to properly re-execute, but at least the user is warned.
7207
7212
7208 * Started ChangeLog.
7213 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now