##// END OF EJS Templates
Close #64, if W. Maier confirms this fix works.
fperez -
Show More
@@ -1,2299 +1,2314 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 1332 2006-05-30 01:41:28Z fperez $
9 $Id: iplib.py 1334 2006-05-30 03:36:04Z fperez $
10 """
10 """
11
11
12 #*****************************************************************************
12 #*****************************************************************************
13 # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and
13 # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and
14 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
14 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
15 #
15 #
16 # Distributed under the terms of the BSD License. The full license is in
16 # Distributed under the terms of the BSD License. The full license is in
17 # the file COPYING, distributed as part of this software.
17 # the file COPYING, distributed as part of this software.
18 #
18 #
19 # Note: this code originally subclassed code.InteractiveConsole from the
19 # Note: this code originally subclassed code.InteractiveConsole from the
20 # Python standard library. Over time, all of that class has been copied
20 # Python standard library. Over time, all of that class has been copied
21 # verbatim here for modifications which could not be accomplished by
21 # verbatim here for modifications which could not be accomplished by
22 # subclassing. At this point, there are no dependencies at all on the code
22 # subclassing. At this point, there are no dependencies at all on the code
23 # module anymore (it is not even imported). The Python License (sec. 2)
23 # module anymore (it is not even imported). The Python License (sec. 2)
24 # allows for this, but it's always nice to acknowledge credit where credit is
24 # allows for this, but it's always nice to acknowledge credit where credit is
25 # due.
25 # due.
26 #*****************************************************************************
26 #*****************************************************************************
27
27
28 #****************************************************************************
28 #****************************************************************************
29 # Modules and globals
29 # Modules and globals
30
30
31 from IPython import Release
31 from IPython import Release
32 __author__ = '%s <%s>\n%s <%s>' % \
32 __author__ = '%s <%s>\n%s <%s>' % \
33 ( Release.authors['Janko'] + Release.authors['Fernando'] )
33 ( Release.authors['Janko'] + Release.authors['Fernando'] )
34 __license__ = Release.license
34 __license__ = Release.license
35 __version__ = Release.version
35 __version__ = Release.version
36
36
37 # Python standard modules
37 # Python standard modules
38 import __main__
38 import __main__
39 import __builtin__
39 import __builtin__
40 import StringIO
40 import StringIO
41 import bdb
41 import bdb
42 import cPickle as pickle
42 import cPickle as pickle
43 import codeop
43 import codeop
44 import exceptions
44 import exceptions
45 import glob
45 import glob
46 import inspect
46 import inspect
47 import keyword
47 import keyword
48 import new
48 import new
49 import os
49 import os
50 import pdb
50 import pdb
51 import pydoc
51 import pydoc
52 import re
52 import re
53 import shutil
53 import shutil
54 import string
54 import string
55 import sys
55 import sys
56 import tempfile
56 import tempfile
57 import traceback
57 import traceback
58 import types
58 import types
59 import pickleshare
59 import pickleshare
60
60
61 from pprint import pprint, pformat
61 from pprint import pprint, pformat
62
62
63 # IPython's own modules
63 # IPython's own modules
64 import IPython
64 import IPython
65 from IPython import OInspect,PyColorize,ultraTB
65 from IPython import OInspect,PyColorize,ultraTB
66 from IPython.ColorANSI import ColorScheme,ColorSchemeTable # too long names
66 from IPython.ColorANSI import ColorScheme,ColorSchemeTable # too long names
67 from IPython.FakeModule import FakeModule
67 from IPython.FakeModule import FakeModule
68 from IPython.Itpl import Itpl,itpl,printpl,ItplNS,itplns
68 from IPython.Itpl import Itpl,itpl,printpl,ItplNS,itplns
69 from IPython.Logger import Logger
69 from IPython.Logger import Logger
70 from IPython.Magic import Magic
70 from IPython.Magic import Magic
71 from IPython.Prompts import CachedOutput
71 from IPython.Prompts import CachedOutput
72 from IPython.ipstruct import Struct
72 from IPython.ipstruct import Struct
73 from IPython.background_jobs import BackgroundJobManager
73 from IPython.background_jobs import BackgroundJobManager
74 from IPython.usage import cmd_line_usage,interactive_usage
74 from IPython.usage import cmd_line_usage,interactive_usage
75 from IPython.genutils import *
75 from IPython.genutils import *
76 import IPython.ipapi
76 import IPython.ipapi
77
77
78 # Globals
78 # Globals
79
79
80 # store the builtin raw_input globally, and use this always, in case user code
80 # store the builtin raw_input globally, and use this always, in case user code
81 # overwrites it (like wx.py.PyShell does)
81 # overwrites it (like wx.py.PyShell does)
82 raw_input_original = raw_input
82 raw_input_original = raw_input
83
83
84 # compiled regexps for autoindent management
84 # compiled regexps for autoindent management
85 dedent_re = re.compile(r'^\s+raise|^\s+return|^\s+pass')
85 dedent_re = re.compile(r'^\s+raise|^\s+return|^\s+pass')
86
86
87
87
88 #****************************************************************************
88 #****************************************************************************
89 # Some utility function definitions
89 # Some utility function definitions
90
90
91 ini_spaces_re = re.compile(r'^(\s+)')
91 ini_spaces_re = re.compile(r'^(\s+)')
92
92
93 def num_ini_spaces(strng):
93 def num_ini_spaces(strng):
94 """Return the number of initial spaces in a string"""
94 """Return the number of initial spaces in a string"""
95
95
96 ini_spaces = ini_spaces_re.match(strng)
96 ini_spaces = ini_spaces_re.match(strng)
97 if ini_spaces:
97 if ini_spaces:
98 return ini_spaces.end()
98 return ini_spaces.end()
99 else:
99 else:
100 return 0
100 return 0
101
101
102 def softspace(file, newvalue):
102 def softspace(file, newvalue):
103 """Copied from code.py, to remove the dependency"""
103 """Copied from code.py, to remove the dependency"""
104
104
105 oldvalue = 0
105 oldvalue = 0
106 try:
106 try:
107 oldvalue = file.softspace
107 oldvalue = file.softspace
108 except AttributeError:
108 except AttributeError:
109 pass
109 pass
110 try:
110 try:
111 file.softspace = newvalue
111 file.softspace = newvalue
112 except (AttributeError, TypeError):
112 except (AttributeError, TypeError):
113 # "attribute-less object" or "read-only attributes"
113 # "attribute-less object" or "read-only attributes"
114 pass
114 pass
115 return oldvalue
115 return oldvalue
116
116
117
117
118 #****************************************************************************
118 #****************************************************************************
119 # Local use exceptions
119 # Local use exceptions
120 class SpaceInInput(exceptions.Exception): pass
120 class SpaceInInput(exceptions.Exception): pass
121
121
122
122
123 #****************************************************************************
123 #****************************************************************************
124 # Local use classes
124 # Local use classes
125 class Bunch: pass
125 class Bunch: pass
126
126
127 class Undefined: pass
127 class Undefined: pass
128
128
129 class InputList(list):
129 class InputList(list):
130 """Class to store user input.
130 """Class to store user input.
131
131
132 It's basically a list, but slices return a string instead of a list, thus
132 It's basically a list, but slices return a string instead of a list, thus
133 allowing things like (assuming 'In' is an instance):
133 allowing things like (assuming 'In' is an instance):
134
134
135 exec In[4:7]
135 exec In[4:7]
136
136
137 or
137 or
138
138
139 exec In[5:9] + In[14] + In[21:25]"""
139 exec In[5:9] + In[14] + In[21:25]"""
140
140
141 def __getslice__(self,i,j):
141 def __getslice__(self,i,j):
142 return ''.join(list.__getslice__(self,i,j))
142 return ''.join(list.__getslice__(self,i,j))
143
143
144 class SyntaxTB(ultraTB.ListTB):
144 class SyntaxTB(ultraTB.ListTB):
145 """Extension which holds some state: the last exception value"""
145 """Extension which holds some state: the last exception value"""
146
146
147 def __init__(self,color_scheme = 'NoColor'):
147 def __init__(self,color_scheme = 'NoColor'):
148 ultraTB.ListTB.__init__(self,color_scheme)
148 ultraTB.ListTB.__init__(self,color_scheme)
149 self.last_syntax_error = None
149 self.last_syntax_error = None
150
150
151 def __call__(self, etype, value, elist):
151 def __call__(self, etype, value, elist):
152 self.last_syntax_error = value
152 self.last_syntax_error = value
153 ultraTB.ListTB.__call__(self,etype,value,elist)
153 ultraTB.ListTB.__call__(self,etype,value,elist)
154
154
155 def clear_err_state(self):
155 def clear_err_state(self):
156 """Return the current error state and clear it"""
156 """Return the current error state and clear it"""
157 e = self.last_syntax_error
157 e = self.last_syntax_error
158 self.last_syntax_error = None
158 self.last_syntax_error = None
159 return e
159 return e
160
160
161 #****************************************************************************
161 #****************************************************************************
162 # Main IPython class
162 # Main IPython class
163
163
164 # FIXME: the Magic class is a mixin for now, and will unfortunately remain so
164 # FIXME: the Magic class is a mixin for now, and will unfortunately remain so
165 # until a full rewrite is made. I've cleaned all cross-class uses of
165 # until a full rewrite is made. I've cleaned all cross-class uses of
166 # attributes and methods, but too much user code out there relies on the
166 # attributes and methods, but too much user code out there relies on the
167 # equlity %foo == __IP.magic_foo, so I can't actually remove the mixin usage.
167 # equlity %foo == __IP.magic_foo, so I can't actually remove the mixin usage.
168 #
168 #
169 # But at least now, all the pieces have been separated and we could, in
169 # But at least now, all the pieces have been separated and we could, in
170 # principle, stop using the mixin. This will ease the transition to the
170 # principle, stop using the mixin. This will ease the transition to the
171 # chainsaw branch.
171 # chainsaw branch.
172
172
173 # For reference, the following is the list of 'self.foo' uses in the Magic
173 # For reference, the following is the list of 'self.foo' uses in the Magic
174 # class as of 2005-12-28. These are names we CAN'T use in the main ipython
174 # class as of 2005-12-28. These are names we CAN'T use in the main ipython
175 # class, to prevent clashes.
175 # class, to prevent clashes.
176
176
177 # ['self.__class__', 'self.__dict__', 'self._inspect', 'self._ofind',
177 # ['self.__class__', 'self.__dict__', 'self._inspect', 'self._ofind',
178 # 'self.arg_err', 'self.extract_input', 'self.format_', 'self.lsmagic',
178 # 'self.arg_err', 'self.extract_input', 'self.format_', 'self.lsmagic',
179 # 'self.magic_', 'self.options_table', 'self.parse', 'self.shell',
179 # 'self.magic_', 'self.options_table', 'self.parse', 'self.shell',
180 # 'self.value']
180 # 'self.value']
181
181
182 class InteractiveShell(object,Magic):
182 class InteractiveShell(object,Magic):
183 """An enhanced console for Python."""
183 """An enhanced console for Python."""
184
184
185 # class attribute to indicate whether the class supports threads or not.
185 # class attribute to indicate whether the class supports threads or not.
186 # Subclasses with thread support should override this as needed.
186 # Subclasses with thread support should override this as needed.
187 isthreaded = False
187 isthreaded = False
188
188
189 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
189 def __init__(self,name,usage=None,rc=Struct(opts=None,args=None),
190 user_ns = None,user_global_ns=None,banner2='',
190 user_ns = None,user_global_ns=None,banner2='',
191 custom_exceptions=((),None),embedded=False):
191 custom_exceptions=((),None),embedded=False):
192
192
193 # log system
193 # log system
194 self.logger = Logger(self,logfname='ipython_log.py',logmode='rotate')
194 self.logger = Logger(self,logfname='ipython_log.py',logmode='rotate')
195
195
196 # some minimal strict typechecks. For some core data structures, I
196 # some minimal strict typechecks. For some core data structures, I
197 # want actual basic python types, not just anything that looks like
197 # want actual basic python types, not just anything that looks like
198 # one. This is especially true for namespaces.
198 # one. This is especially true for namespaces.
199 for ns in (user_ns,user_global_ns):
199 for ns in (user_ns,user_global_ns):
200 if ns is not None and type(ns) != types.DictType:
200 if ns is not None and type(ns) != types.DictType:
201 raise TypeError,'namespace must be a dictionary'
201 raise TypeError,'namespace must be a dictionary'
202
202
203 # Job manager (for jobs run as background threads)
203 # Job manager (for jobs run as background threads)
204 self.jobs = BackgroundJobManager()
204 self.jobs = BackgroundJobManager()
205
205
206 # Store the actual shell's name
206 # Store the actual shell's name
207 self.name = name
207 self.name = name
208
208
209 # We need to know whether the instance is meant for embedding, since
209 # We need to know whether the instance is meant for embedding, since
210 # global/local namespaces need to be handled differently in that case
210 # global/local namespaces need to be handled differently in that case
211 self.embedded = embedded
211 self.embedded = embedded
212
212
213 # command compiler
213 # command compiler
214 self.compile = codeop.CommandCompiler()
214 self.compile = codeop.CommandCompiler()
215
215
216 # User input buffer
216 # User input buffer
217 self.buffer = []
217 self.buffer = []
218
218
219 # Default name given in compilation of code
219 # Default name given in compilation of code
220 self.filename = '<ipython console>'
220 self.filename = '<ipython console>'
221
221
222 # Make an empty namespace, which extension writers can rely on both
222 # Make an empty namespace, which extension writers can rely on both
223 # existing and NEVER being used by ipython itself. This gives them a
223 # existing and NEVER being used by ipython itself. This gives them a
224 # convenient location for storing additional information and state
224 # convenient location for storing additional information and state
225 # their extensions may require, without fear of collisions with other
225 # their extensions may require, without fear of collisions with other
226 # ipython names that may develop later.
226 # ipython names that may develop later.
227 self.meta = Struct()
227 self.meta = Struct()
228
228
229 # Create the namespace where the user will operate. user_ns is
229 # Create the namespace where the user will operate. user_ns is
230 # normally the only one used, and it is passed to the exec calls as
230 # normally the only one used, and it is passed to the exec calls as
231 # the locals argument. But we do carry a user_global_ns namespace
231 # the locals argument. But we do carry a user_global_ns namespace
232 # given as the exec 'globals' argument, This is useful in embedding
232 # given as the exec 'globals' argument, This is useful in embedding
233 # situations where the ipython shell opens in a context where the
233 # situations where the ipython shell opens in a context where the
234 # distinction between locals and globals is meaningful.
234 # distinction between locals and globals is meaningful.
235
235
236 # FIXME. For some strange reason, __builtins__ is showing up at user
236 # FIXME. For some strange reason, __builtins__ is showing up at user
237 # level as a dict instead of a module. This is a manual fix, but I
237 # level as a dict instead of a module. This is a manual fix, but I
238 # should really track down where the problem is coming from. Alex
238 # should really track down where the problem is coming from. Alex
239 # Schmolck reported this problem first.
239 # Schmolck reported this problem first.
240
240
241 # A useful post by Alex Martelli on this topic:
241 # A useful post by Alex Martelli on this topic:
242 # Re: inconsistent value from __builtins__
242 # Re: inconsistent value from __builtins__
243 # Von: Alex Martelli <aleaxit@yahoo.com>
243 # Von: Alex Martelli <aleaxit@yahoo.com>
244 # Datum: Freitag 01 Oktober 2004 04:45:34 nachmittags/abends
244 # Datum: Freitag 01 Oktober 2004 04:45:34 nachmittags/abends
245 # Gruppen: comp.lang.python
245 # Gruppen: comp.lang.python
246
246
247 # Michael Hohn <hohn@hooknose.lbl.gov> wrote:
247 # Michael Hohn <hohn@hooknose.lbl.gov> wrote:
248 # > >>> print type(builtin_check.get_global_binding('__builtins__'))
248 # > >>> print type(builtin_check.get_global_binding('__builtins__'))
249 # > <type 'dict'>
249 # > <type 'dict'>
250 # > >>> print type(__builtins__)
250 # > >>> print type(__builtins__)
251 # > <type 'module'>
251 # > <type 'module'>
252 # > Is this difference in return value intentional?
252 # > Is this difference in return value intentional?
253
253
254 # Well, it's documented that '__builtins__' can be either a dictionary
254 # Well, it's documented that '__builtins__' can be either a dictionary
255 # or a module, and it's been that way for a long time. Whether it's
255 # or a module, and it's been that way for a long time. Whether it's
256 # intentional (or sensible), I don't know. In any case, the idea is
256 # intentional (or sensible), I don't know. In any case, the idea is
257 # that if you need to access the built-in namespace directly, you
257 # that if you need to access the built-in namespace directly, you
258 # should start with "import __builtin__" (note, no 's') which will
258 # should start with "import __builtin__" (note, no 's') which will
259 # definitely give you a module. Yeah, it's somewhat confusing:-(.
259 # definitely give you a module. Yeah, it's somewhat confusing:-(.
260
260
261 # These routines return properly built dicts as needed by the rest of
261 # These routines return properly built dicts as needed by the rest of
262 # the code, and can also be used by extension writers to generate
262 # the code, and can also be used by extension writers to generate
263 # properly initialized namespaces.
263 # properly initialized namespaces.
264 user_ns = IPython.ipapi.make_user_ns(user_ns)
264 user_ns = IPython.ipapi.make_user_ns(user_ns)
265 user_global_ns = IPython.ipapi.make_user_global_ns(user_global_ns)
265 user_global_ns = IPython.ipapi.make_user_global_ns(user_global_ns)
266
266
267 # Assign namespaces
267 # Assign namespaces
268 # This is the namespace where all normal user variables live
268 # This is the namespace where all normal user variables live
269 self.user_ns = user_ns
269 self.user_ns = user_ns
270 # Embedded instances require a separate namespace for globals.
270 # Embedded instances require a separate namespace for globals.
271 # Normally this one is unused by non-embedded instances.
271 # Normally this one is unused by non-embedded instances.
272 self.user_global_ns = user_global_ns
272 self.user_global_ns = user_global_ns
273 # A namespace to keep track of internal data structures to prevent
273 # A namespace to keep track of internal data structures to prevent
274 # them from cluttering user-visible stuff. Will be updated later
274 # them from cluttering user-visible stuff. Will be updated later
275 self.internal_ns = {}
275 self.internal_ns = {}
276
276
277 # Namespace of system aliases. Each entry in the alias
277 # Namespace of system aliases. Each entry in the alias
278 # table must be a 2-tuple of the form (N,name), where N is the number
278 # table must be a 2-tuple of the form (N,name), where N is the number
279 # of positional arguments of the alias.
279 # of positional arguments of the alias.
280 self.alias_table = {}
280 self.alias_table = {}
281
281
282 # A table holding all the namespaces IPython deals with, so that
282 # A table holding all the namespaces IPython deals with, so that
283 # introspection facilities can search easily.
283 # introspection facilities can search easily.
284 self.ns_table = {'user':user_ns,
284 self.ns_table = {'user':user_ns,
285 'user_global':user_global_ns,
285 'user_global':user_global_ns,
286 'alias':self.alias_table,
286 'alias':self.alias_table,
287 'internal':self.internal_ns,
287 'internal':self.internal_ns,
288 'builtin':__builtin__.__dict__
288 'builtin':__builtin__.__dict__
289 }
289 }
290
290
291 # The user namespace MUST have a pointer to the shell itself.
291 # The user namespace MUST have a pointer to the shell itself.
292 self.user_ns[name] = self
292 self.user_ns[name] = self
293
293
294 # We need to insert into sys.modules something that looks like a
294 # We need to insert into sys.modules something that looks like a
295 # module but which accesses the IPython namespace, for shelve and
295 # module but which accesses the IPython namespace, for shelve and
296 # pickle to work interactively. Normally they rely on getting
296 # pickle to work interactively. Normally they rely on getting
297 # everything out of __main__, but for embedding purposes each IPython
297 # everything out of __main__, but for embedding purposes each IPython
298 # instance has its own private namespace, so we can't go shoving
298 # instance has its own private namespace, so we can't go shoving
299 # everything into __main__.
299 # everything into __main__.
300
300
301 # note, however, that we should only do this for non-embedded
301 # note, however, that we should only do this for non-embedded
302 # ipythons, which really mimic the __main__.__dict__ with their own
302 # ipythons, which really mimic the __main__.__dict__ with their own
303 # namespace. Embedded instances, on the other hand, should not do
303 # namespace. Embedded instances, on the other hand, should not do
304 # this because they need to manage the user local/global namespaces
304 # this because they need to manage the user local/global namespaces
305 # only, but they live within a 'normal' __main__ (meaning, they
305 # only, but they live within a 'normal' __main__ (meaning, they
306 # shouldn't overtake the execution environment of the script they're
306 # shouldn't overtake the execution environment of the script they're
307 # embedded in).
307 # embedded in).
308
308
309 if not embedded:
309 if not embedded:
310 try:
310 try:
311 main_name = self.user_ns['__name__']
311 main_name = self.user_ns['__name__']
312 except KeyError:
312 except KeyError:
313 raise KeyError,'user_ns dictionary MUST have a "__name__" key'
313 raise KeyError,'user_ns dictionary MUST have a "__name__" key'
314 else:
314 else:
315 #print "pickle hack in place" # dbg
315 #print "pickle hack in place" # dbg
316 #print 'main_name:',main_name # dbg
316 #print 'main_name:',main_name # dbg
317 sys.modules[main_name] = FakeModule(self.user_ns)
317 sys.modules[main_name] = FakeModule(self.user_ns)
318
318
319 # List of input with multi-line handling.
319 # List of input with multi-line handling.
320 # Fill its zero entry, user counter starts at 1
320 # Fill its zero entry, user counter starts at 1
321 self.input_hist = InputList(['\n'])
321 self.input_hist = InputList(['\n'])
322 # This one will hold the 'raw' input history, without any
322 # This one will hold the 'raw' input history, without any
323 # pre-processing. This will allow users to retrieve the input just as
323 # pre-processing. This will allow users to retrieve the input just as
324 # it was exactly typed in by the user, with %hist -r.
324 # it was exactly typed in by the user, with %hist -r.
325 self.input_hist_raw = InputList(['\n'])
325 self.input_hist_raw = InputList(['\n'])
326
326
327 # list of visited directories
327 # list of visited directories
328 try:
328 try:
329 self.dir_hist = [os.getcwd()]
329 self.dir_hist = [os.getcwd()]
330 except IOError, e:
330 except IOError, e:
331 self.dir_hist = []
331 self.dir_hist = []
332
332
333 # dict of output history
333 # dict of output history
334 self.output_hist = {}
334 self.output_hist = {}
335
335
336 # dict of things NOT to alias (keywords, builtins and some magics)
336 # dict of things NOT to alias (keywords, builtins and some magics)
337 no_alias = {}
337 no_alias = {}
338 no_alias_magics = ['cd','popd','pushd','dhist','alias','unalias']
338 no_alias_magics = ['cd','popd','pushd','dhist','alias','unalias']
339 for key in keyword.kwlist + no_alias_magics:
339 for key in keyword.kwlist + no_alias_magics:
340 no_alias[key] = 1
340 no_alias[key] = 1
341 no_alias.update(__builtin__.__dict__)
341 no_alias.update(__builtin__.__dict__)
342 self.no_alias = no_alias
342 self.no_alias = no_alias
343
343
344 # make global variables for user access to these
344 # make global variables for user access to these
345 self.user_ns['_ih'] = self.input_hist
345 self.user_ns['_ih'] = self.input_hist
346 self.user_ns['_oh'] = self.output_hist
346 self.user_ns['_oh'] = self.output_hist
347 self.user_ns['_dh'] = self.dir_hist
347 self.user_ns['_dh'] = self.dir_hist
348
348
349 # user aliases to input and output histories
349 # user aliases to input and output histories
350 self.user_ns['In'] = self.input_hist
350 self.user_ns['In'] = self.input_hist
351 self.user_ns['Out'] = self.output_hist
351 self.user_ns['Out'] = self.output_hist
352
352
353 # Object variable to store code object waiting execution. This is
353 # Object variable to store code object waiting execution. This is
354 # used mainly by the multithreaded shells, but it can come in handy in
354 # used mainly by the multithreaded shells, but it can come in handy in
355 # other situations. No need to use a Queue here, since it's a single
355 # other situations. No need to use a Queue here, since it's a single
356 # item which gets cleared once run.
356 # item which gets cleared once run.
357 self.code_to_run = None
357 self.code_to_run = None
358
358
359 # escapes for automatic behavior on the command line
359 # escapes for automatic behavior on the command line
360 self.ESC_SHELL = '!'
360 self.ESC_SHELL = '!'
361 self.ESC_HELP = '?'
361 self.ESC_HELP = '?'
362 self.ESC_MAGIC = '%'
362 self.ESC_MAGIC = '%'
363 self.ESC_QUOTE = ','
363 self.ESC_QUOTE = ','
364 self.ESC_QUOTE2 = ';'
364 self.ESC_QUOTE2 = ';'
365 self.ESC_PAREN = '/'
365 self.ESC_PAREN = '/'
366
366
367 # And their associated handlers
367 # And their associated handlers
368 self.esc_handlers = {self.ESC_PAREN : self.handle_auto,
368 self.esc_handlers = {self.ESC_PAREN : self.handle_auto,
369 self.ESC_QUOTE : self.handle_auto,
369 self.ESC_QUOTE : self.handle_auto,
370 self.ESC_QUOTE2 : self.handle_auto,
370 self.ESC_QUOTE2 : self.handle_auto,
371 self.ESC_MAGIC : self.handle_magic,
371 self.ESC_MAGIC : self.handle_magic,
372 self.ESC_HELP : self.handle_help,
372 self.ESC_HELP : self.handle_help,
373 self.ESC_SHELL : self.handle_shell_escape,
373 self.ESC_SHELL : self.handle_shell_escape,
374 }
374 }
375
375
376 # class initializations
376 # class initializations
377 Magic.__init__(self,self)
377 Magic.__init__(self,self)
378
378
379 # Python source parser/formatter for syntax highlighting
379 # Python source parser/formatter for syntax highlighting
380 pyformat = PyColorize.Parser().format
380 pyformat = PyColorize.Parser().format
381 self.pycolorize = lambda src: pyformat(src,'str',self.rc['colors'])
381 self.pycolorize = lambda src: pyformat(src,'str',self.rc['colors'])
382
382
383 # hooks holds pointers used for user-side customizations
383 # hooks holds pointers used for user-side customizations
384 self.hooks = Struct()
384 self.hooks = Struct()
385
385
386 # Set all default hooks, defined in the IPython.hooks module.
386 # Set all default hooks, defined in the IPython.hooks module.
387 hooks = IPython.hooks
387 hooks = IPython.hooks
388 for hook_name in hooks.__all__:
388 for hook_name in hooks.__all__:
389 # default hooks have priority 100, i.e. low; user hooks should have 0-100 priority
389 # default hooks have priority 100, i.e. low; user hooks should have 0-100 priority
390 self.set_hook(hook_name,getattr(hooks,hook_name), 100)
390 self.set_hook(hook_name,getattr(hooks,hook_name), 100)
391 #print "bound hook",hook_name
391 #print "bound hook",hook_name
392
392
393 # Flag to mark unconditional exit
393 # Flag to mark unconditional exit
394 self.exit_now = False
394 self.exit_now = False
395
395
396 self.usage_min = """\
396 self.usage_min = """\
397 An enhanced console for Python.
397 An enhanced console for Python.
398 Some of its features are:
398 Some of its features are:
399 - Readline support if the readline library is present.
399 - Readline support if the readline library is present.
400 - Tab completion in the local namespace.
400 - Tab completion in the local namespace.
401 - Logging of input, see command-line options.
401 - Logging of input, see command-line options.
402 - System shell escape via ! , eg !ls.
402 - System shell escape via ! , eg !ls.
403 - Magic commands, starting with a % (like %ls, %pwd, %cd, etc.)
403 - Magic commands, starting with a % (like %ls, %pwd, %cd, etc.)
404 - Keeps track of locally defined variables via %who, %whos.
404 - Keeps track of locally defined variables via %who, %whos.
405 - Show object information with a ? eg ?x or x? (use ?? for more info).
405 - Show object information with a ? eg ?x or x? (use ?? for more info).
406 """
406 """
407 if usage: self.usage = usage
407 if usage: self.usage = usage
408 else: self.usage = self.usage_min
408 else: self.usage = self.usage_min
409
409
410 # Storage
410 # Storage
411 self.rc = rc # This will hold all configuration information
411 self.rc = rc # This will hold all configuration information
412 self.pager = 'less'
412 self.pager = 'less'
413 # temporary files used for various purposes. Deleted at exit.
413 # temporary files used for various purposes. Deleted at exit.
414 self.tempfiles = []
414 self.tempfiles = []
415
415
416 # Keep track of readline usage (later set by init_readline)
416 # Keep track of readline usage (later set by init_readline)
417 self.has_readline = False
417 self.has_readline = False
418
418
419 # template for logfile headers. It gets resolved at runtime by the
419 # template for logfile headers. It gets resolved at runtime by the
420 # logstart method.
420 # logstart method.
421 self.loghead_tpl = \
421 self.loghead_tpl = \
422 """#log# Automatic Logger file. *** THIS MUST BE THE FIRST LINE ***
422 """#log# Automatic Logger file. *** THIS MUST BE THE FIRST LINE ***
423 #log# DO NOT CHANGE THIS LINE OR THE TWO BELOW
423 #log# DO NOT CHANGE THIS LINE OR THE TWO BELOW
424 #log# opts = %s
424 #log# opts = %s
425 #log# args = %s
425 #log# args = %s
426 #log# It is safe to make manual edits below here.
426 #log# It is safe to make manual edits below here.
427 #log#-----------------------------------------------------------------------
427 #log#-----------------------------------------------------------------------
428 """
428 """
429 # for pushd/popd management
429 # for pushd/popd management
430 try:
430 try:
431 self.home_dir = get_home_dir()
431 self.home_dir = get_home_dir()
432 except HomeDirError,msg:
432 except HomeDirError,msg:
433 fatal(msg)
433 fatal(msg)
434
434
435 self.dir_stack = [os.getcwd().replace(self.home_dir,'~')]
435 self.dir_stack = [os.getcwd().replace(self.home_dir,'~')]
436
436
437 # Functions to call the underlying shell.
437 # Functions to call the underlying shell.
438
438
439 # utility to expand user variables via Itpl
439 # utility to expand user variables via Itpl
440 self.var_expand = lambda cmd: str(ItplNS(cmd.replace('#','\#'),
440 self.var_expand = lambda cmd: str(ItplNS(cmd.replace('#','\#'),
441 self.user_ns))
441 self.user_ns))
442 # The first is similar to os.system, but it doesn't return a value,
442 # The first is similar to os.system, but it doesn't return a value,
443 # and it allows interpolation of variables in the user's namespace.
443 # and it allows interpolation of variables in the user's namespace.
444 self.system = lambda cmd: shell(self.var_expand(cmd),
444 self.system = lambda cmd: shell(self.var_expand(cmd),
445 header='IPython system call: ',
445 header='IPython system call: ',
446 verbose=self.rc.system_verbose)
446 verbose=self.rc.system_verbose)
447 # These are for getoutput and getoutputerror:
447 # These are for getoutput and getoutputerror:
448 self.getoutput = lambda cmd: \
448 self.getoutput = lambda cmd: \
449 getoutput(self.var_expand(cmd),
449 getoutput(self.var_expand(cmd),
450 header='IPython system call: ',
450 header='IPython system call: ',
451 verbose=self.rc.system_verbose)
451 verbose=self.rc.system_verbose)
452 self.getoutputerror = lambda cmd: \
452 self.getoutputerror = lambda cmd: \
453 getoutputerror(str(ItplNS(cmd.replace('#','\#'),
453 getoutputerror(str(ItplNS(cmd.replace('#','\#'),
454 self.user_ns)),
454 self.user_ns)),
455 header='IPython system call: ',
455 header='IPython system call: ',
456 verbose=self.rc.system_verbose)
456 verbose=self.rc.system_verbose)
457
457
458 # RegExp for splitting line contents into pre-char//first
458 # RegExp for splitting line contents into pre-char//first
459 # word-method//rest. For clarity, each group in on one line.
459 # word-method//rest. For clarity, each group in on one line.
460
460
461 # WARNING: update the regexp if the above escapes are changed, as they
461 # WARNING: update the regexp if the above escapes are changed, as they
462 # are hardwired in.
462 # are hardwired in.
463
463
464 # Don't get carried away with trying to make the autocalling catch too
464 # Don't get carried away with trying to make the autocalling catch too
465 # much: it's better to be conservative rather than to trigger hidden
465 # much: it's better to be conservative rather than to trigger hidden
466 # evals() somewhere and end up causing side effects.
466 # evals() somewhere and end up causing side effects.
467
467
468 self.line_split = re.compile(r'^([\s*,;/])'
468 self.line_split = re.compile(r'^([\s*,;/])'
469 r'([\?\w\.]+\w*\s*)'
469 r'([\?\w\.]+\w*\s*)'
470 r'(\(?.*$)')
470 r'(\(?.*$)')
471
471
472 # Original re, keep around for a while in case changes break something
472 # Original re, keep around for a while in case changes break something
473 #self.line_split = re.compile(r'(^[\s*!\?%,/]?)'
473 #self.line_split = re.compile(r'(^[\s*!\?%,/]?)'
474 # r'(\s*[\?\w\.]+\w*\s*)'
474 # r'(\s*[\?\w\.]+\w*\s*)'
475 # r'(\(?.*$)')
475 # r'(\(?.*$)')
476
476
477 # RegExp to identify potential function names
477 # RegExp to identify potential function names
478 self.re_fun_name = re.compile(r'[a-zA-Z_]([a-zA-Z0-9_.]*) *$')
478 self.re_fun_name = re.compile(r'[a-zA-Z_]([a-zA-Z0-9_.]*) *$')
479
479
480 # RegExp to exclude strings with this start from autocalling. In
480 # RegExp to exclude strings with this start from autocalling. In
481 # particular, all binary operators should be excluded, so that if foo
481 # particular, all binary operators should be excluded, so that if foo
482 # is callable, foo OP bar doesn't become foo(OP bar), which is
482 # is callable, foo OP bar doesn't become foo(OP bar), which is
483 # invalid. The characters '!=()' don't need to be checked for, as the
483 # invalid. The characters '!=()' don't need to be checked for, as the
484 # _prefilter routine explicitely does so, to catch direct calls and
484 # _prefilter routine explicitely does so, to catch direct calls and
485 # rebindings of existing names.
485 # rebindings of existing names.
486
486
487 # Warning: the '-' HAS TO BE AT THE END of the first group, otherwise
487 # Warning: the '-' HAS TO BE AT THE END of the first group, otherwise
488 # it affects the rest of the group in square brackets.
488 # it affects the rest of the group in square brackets.
489 self.re_exclude_auto = re.compile(r'^[<>,&^\|\*/\+-]'
489 self.re_exclude_auto = re.compile(r'^[<>,&^\|\*/\+-]'
490 '|^is |^not |^in |^and |^or ')
490 '|^is |^not |^in |^and |^or ')
491
491
492 # try to catch also methods for stuff in lists/tuples/dicts: off
492 # try to catch also methods for stuff in lists/tuples/dicts: off
493 # (experimental). For this to work, the line_split regexp would need
493 # (experimental). For this to work, the line_split regexp would need
494 # to be modified so it wouldn't break things at '['. That line is
494 # to be modified so it wouldn't break things at '['. That line is
495 # nasty enough that I shouldn't change it until I can test it _well_.
495 # nasty enough that I shouldn't change it until I can test it _well_.
496 #self.re_fun_name = re.compile (r'[a-zA-Z_]([a-zA-Z0-9_.\[\]]*) ?$')
496 #self.re_fun_name = re.compile (r'[a-zA-Z_]([a-zA-Z0-9_.\[\]]*) ?$')
497
497
498 # keep track of where we started running (mainly for crash post-mortem)
498 # keep track of where we started running (mainly for crash post-mortem)
499 self.starting_dir = os.getcwd()
499 self.starting_dir = os.getcwd()
500
500
501 # Various switches which can be set
501 # Various switches which can be set
502 self.CACHELENGTH = 5000 # this is cheap, it's just text
502 self.CACHELENGTH = 5000 # this is cheap, it's just text
503 self.BANNER = "Python %(version)s on %(platform)s\n" % sys.__dict__
503 self.BANNER = "Python %(version)s on %(platform)s\n" % sys.__dict__
504 self.banner2 = banner2
504 self.banner2 = banner2
505
505
506 # TraceBack handlers:
506 # TraceBack handlers:
507
507
508 # Syntax error handler.
508 # Syntax error handler.
509 self.SyntaxTB = SyntaxTB(color_scheme='NoColor')
509 self.SyntaxTB = SyntaxTB(color_scheme='NoColor')
510
510
511 # The interactive one is initialized with an offset, meaning we always
511 # The interactive one is initialized with an offset, meaning we always
512 # want to remove the topmost item in the traceback, which is our own
512 # want to remove the topmost item in the traceback, which is our own
513 # internal code. Valid modes: ['Plain','Context','Verbose']
513 # internal code. Valid modes: ['Plain','Context','Verbose']
514 self.InteractiveTB = ultraTB.AutoFormattedTB(mode = 'Plain',
514 self.InteractiveTB = ultraTB.AutoFormattedTB(mode = 'Plain',
515 color_scheme='NoColor',
515 color_scheme='NoColor',
516 tb_offset = 1)
516 tb_offset = 1)
517
517
518 # IPython itself shouldn't crash. This will produce a detailed
518 # IPython itself shouldn't crash. This will produce a detailed
519 # post-mortem if it does. But we only install the crash handler for
519 # post-mortem if it does. But we only install the crash handler for
520 # non-threaded shells, the threaded ones use a normal verbose reporter
520 # non-threaded shells, the threaded ones use a normal verbose reporter
521 # and lose the crash handler. This is because exceptions in the main
521 # and lose the crash handler. This is because exceptions in the main
522 # thread (such as in GUI code) propagate directly to sys.excepthook,
522 # thread (such as in GUI code) propagate directly to sys.excepthook,
523 # and there's no point in printing crash dumps for every user exception.
523 # and there's no point in printing crash dumps for every user exception.
524 if self.isthreaded:
524 if self.isthreaded:
525 sys.excepthook = ultraTB.FormattedTB()
525 sys.excepthook = ultraTB.FormattedTB()
526 else:
526 else:
527 from IPython import CrashHandler
527 from IPython import CrashHandler
528 sys.excepthook = CrashHandler.CrashHandler(self)
528 sys.excepthook = CrashHandler.CrashHandler(self)
529
529
530 # The instance will store a pointer to this, so that runtime code
530 # The instance will store a pointer to this, so that runtime code
531 # (such as magics) can access it. This is because during the
531 # (such as magics) can access it. This is because during the
532 # read-eval loop, it gets temporarily overwritten (to deal with GUI
532 # read-eval loop, it gets temporarily overwritten (to deal with GUI
533 # frameworks).
533 # frameworks).
534 self.sys_excepthook = sys.excepthook
534 self.sys_excepthook = sys.excepthook
535
535
536 # and add any custom exception handlers the user may have specified
536 # and add any custom exception handlers the user may have specified
537 self.set_custom_exc(*custom_exceptions)
537 self.set_custom_exc(*custom_exceptions)
538
538
539 # indentation management
539 # indentation management
540 self.autoindent = False
540 self.autoindent = False
541 self.indent_current_nsp = 0
541 self.indent_current_nsp = 0
542
542
543 # Make some aliases automatically
543 # Make some aliases automatically
544 # Prepare list of shell aliases to auto-define
544 # Prepare list of shell aliases to auto-define
545 if os.name == 'posix':
545 if os.name == 'posix':
546 auto_alias = ('mkdir mkdir', 'rmdir rmdir',
546 auto_alias = ('mkdir mkdir', 'rmdir rmdir',
547 'mv mv -i','rm rm -i','cp cp -i',
547 'mv mv -i','rm rm -i','cp cp -i',
548 'cat cat','less less','clear clear',
548 'cat cat','less less','clear clear',
549 # a better ls
549 # a better ls
550 'ls ls -F',
550 'ls ls -F',
551 # long ls
551 # long ls
552 'll ls -lF',
552 'll ls -lF')
553 # color ls
553 # Extra ls aliases with color, which need special treatment on BSD
554 'lc ls -F -o --color',
554 # variants
555 # ls normal files only
555 ls_extra = ( # color ls
556 'lf ls -F -o --color %l | grep ^-',
556 'lc ls -F -o --color',
557 # ls symbolic links
557 # ls normal files only
558 'lk ls -F -o --color %l | grep ^l',
558 'lf ls -F -o --color %l | grep ^-',
559 # directories or links to directories,
559 # ls symbolic links
560 'ldir ls -F -o --color %l | grep /$',
560 'lk ls -F -o --color %l | grep ^l',
561 # things which are executable
561 # directories or links to directories,
562 'lx ls -F -o --color %l | grep ^-..x',
562 'ldir ls -F -o --color %l | grep /$',
563 )
563 # things which are executable
564 'lx ls -F -o --color %l | grep ^-..x',
565 )
566 # The BSDs don't ship GNU ls, so they don't understand the
567 # --color switch out of the box
568 if 'bsd' in sys.platform:
569 ls_extra = ( # ls normal files only
570 'lf ls -F -o %l | grep ^-',
571 # ls symbolic links
572 'lk ls -F -o %l | grep ^l',
573 # directories or links to directories,
574 'ldir ls -F -o %l | grep /$',
575 # things which are executable
576 'lx ls -F -o %l | grep ^-..x',
577 )
578 auto_alias = auto_alias + ls_extra
564 elif os.name in ['nt','dos']:
579 elif os.name in ['nt','dos']:
565 auto_alias = ('dir dir /on', 'ls dir /on',
580 auto_alias = ('dir dir /on', 'ls dir /on',
566 'ddir dir /ad /on', 'ldir dir /ad /on',
581 'ddir dir /ad /on', 'ldir dir /ad /on',
567 'mkdir mkdir','rmdir rmdir','echo echo',
582 'mkdir mkdir','rmdir rmdir','echo echo',
568 'ren ren','cls cls','copy copy')
583 'ren ren','cls cls','copy copy')
569 else:
584 else:
570 auto_alias = ()
585 auto_alias = ()
571 self.auto_alias = map(lambda s:s.split(None,1),auto_alias)
586 self.auto_alias = [s.split(None,1) for s in auto_alias]
572 # Call the actual (public) initializer
587 # Call the actual (public) initializer
573 self.init_auto_alias()
588 self.init_auto_alias()
574
589
575 # Produce a public API instance
590 # Produce a public API instance
576 self.api = IPython.ipapi.IPApi(self)
591 self.api = IPython.ipapi.IPApi(self)
577
592
578 # track which builtins we add, so we can clean up later
593 # track which builtins we add, so we can clean up later
579 self.builtins_added = {}
594 self.builtins_added = {}
580 # This method will add the necessary builtins for operation, but
595 # This method will add the necessary builtins for operation, but
581 # tracking what it did via the builtins_added dict.
596 # tracking what it did via the builtins_added dict.
582 self.add_builtins()
597 self.add_builtins()
583
598
584 # end __init__
599 # end __init__
585
600
586 def pre_config_initialization(self):
601 def pre_config_initialization(self):
587 """Pre-configuration init method
602 """Pre-configuration init method
588
603
589 This is called before the configuration files are processed to
604 This is called before the configuration files are processed to
590 prepare the services the config files might need.
605 prepare the services the config files might need.
591
606
592 self.rc already has reasonable default values at this point.
607 self.rc already has reasonable default values at this point.
593 """
608 """
594 rc = self.rc
609 rc = self.rc
595
610
596 self.db = pickleshare.PickleShareDB(rc.ipythondir + "/db")
611 self.db = pickleshare.PickleShareDB(rc.ipythondir + "/db")
597
612
598 def post_config_initialization(self):
613 def post_config_initialization(self):
599 """Post configuration init method
614 """Post configuration init method
600
615
601 This is called after the configuration files have been processed to
616 This is called after the configuration files have been processed to
602 'finalize' the initialization."""
617 'finalize' the initialization."""
603
618
604 rc = self.rc
619 rc = self.rc
605
620
606 # Object inspector
621 # Object inspector
607 self.inspector = OInspect.Inspector(OInspect.InspectColors,
622 self.inspector = OInspect.Inspector(OInspect.InspectColors,
608 PyColorize.ANSICodeColors,
623 PyColorize.ANSICodeColors,
609 'NoColor',
624 'NoColor',
610 rc.object_info_string_level)
625 rc.object_info_string_level)
611
626
612 # Load readline proper
627 # Load readline proper
613 if rc.readline:
628 if rc.readline:
614 self.init_readline()
629 self.init_readline()
615
630
616 # local shortcut, this is used a LOT
631 # local shortcut, this is used a LOT
617 self.log = self.logger.log
632 self.log = self.logger.log
618
633
619 # Initialize cache, set in/out prompts and printing system
634 # Initialize cache, set in/out prompts and printing system
620 self.outputcache = CachedOutput(self,
635 self.outputcache = CachedOutput(self,
621 rc.cache_size,
636 rc.cache_size,
622 rc.pprint,
637 rc.pprint,
623 input_sep = rc.separate_in,
638 input_sep = rc.separate_in,
624 output_sep = rc.separate_out,
639 output_sep = rc.separate_out,
625 output_sep2 = rc.separate_out2,
640 output_sep2 = rc.separate_out2,
626 ps1 = rc.prompt_in1,
641 ps1 = rc.prompt_in1,
627 ps2 = rc.prompt_in2,
642 ps2 = rc.prompt_in2,
628 ps_out = rc.prompt_out,
643 ps_out = rc.prompt_out,
629 pad_left = rc.prompts_pad_left)
644 pad_left = rc.prompts_pad_left)
630
645
631 # user may have over-ridden the default print hook:
646 # user may have over-ridden the default print hook:
632 try:
647 try:
633 self.outputcache.__class__.display = self.hooks.display
648 self.outputcache.__class__.display = self.hooks.display
634 except AttributeError:
649 except AttributeError:
635 pass
650 pass
636
651
637 # I don't like assigning globally to sys, because it means when embedding
652 # I don't like assigning globally to sys, because it means when embedding
638 # instances, each embedded instance overrides the previous choice. But
653 # instances, each embedded instance overrides the previous choice. But
639 # sys.displayhook seems to be called internally by exec, so I don't see a
654 # sys.displayhook seems to be called internally by exec, so I don't see a
640 # way around it.
655 # way around it.
641 sys.displayhook = self.outputcache
656 sys.displayhook = self.outputcache
642
657
643 # Set user colors (don't do it in the constructor above so that it
658 # Set user colors (don't do it in the constructor above so that it
644 # doesn't crash if colors option is invalid)
659 # doesn't crash if colors option is invalid)
645 self.magic_colors(rc.colors)
660 self.magic_colors(rc.colors)
646
661
647 # Set calling of pdb on exceptions
662 # Set calling of pdb on exceptions
648 self.call_pdb = rc.pdb
663 self.call_pdb = rc.pdb
649
664
650 # Load user aliases
665 # Load user aliases
651 for alias in rc.alias:
666 for alias in rc.alias:
652 self.magic_alias(alias)
667 self.magic_alias(alias)
653 self.hooks.late_startup_hook()
668 self.hooks.late_startup_hook()
654
669
655 for batchfile in [path(arg) for arg in self.rc.args
670 for batchfile in [path(arg) for arg in self.rc.args
656 if arg.lower().endswith('.ipy')]:
671 if arg.lower().endswith('.ipy')]:
657 if not batchfile.isfile():
672 if not batchfile.isfile():
658 print "No such batch file:", batchfile
673 print "No such batch file:", batchfile
659 continue
674 continue
660 self.api.runlines(batchfile.text())
675 self.api.runlines(batchfile.text())
661
676
662 def add_builtins(self):
677 def add_builtins(self):
663 """Store ipython references into the builtin namespace.
678 """Store ipython references into the builtin namespace.
664
679
665 Some parts of ipython operate via builtins injected here, which hold a
680 Some parts of ipython operate via builtins injected here, which hold a
666 reference to IPython itself."""
681 reference to IPython itself."""
667
682
668 # TODO: deprecate all except _ip; 'jobs' should be installed
683 # TODO: deprecate all except _ip; 'jobs' should be installed
669 # by an extension and the rest are under _ip, ipalias is redundant
684 # by an extension and the rest are under _ip, ipalias is redundant
670 builtins_new = dict(__IPYTHON__ = self,
685 builtins_new = dict(__IPYTHON__ = self,
671 ip_set_hook = self.set_hook,
686 ip_set_hook = self.set_hook,
672 jobs = self.jobs,
687 jobs = self.jobs,
673 ipmagic = self.ipmagic,
688 ipmagic = self.ipmagic,
674 ipalias = self.ipalias,
689 ipalias = self.ipalias,
675 ipsystem = self.ipsystem,
690 ipsystem = self.ipsystem,
676 _ip = self.api
691 _ip = self.api
677 )
692 )
678 for biname,bival in builtins_new.items():
693 for biname,bival in builtins_new.items():
679 try:
694 try:
680 # store the orignal value so we can restore it
695 # store the orignal value so we can restore it
681 self.builtins_added[biname] = __builtin__.__dict__[biname]
696 self.builtins_added[biname] = __builtin__.__dict__[biname]
682 except KeyError:
697 except KeyError:
683 # or mark that it wasn't defined, and we'll just delete it at
698 # or mark that it wasn't defined, and we'll just delete it at
684 # cleanup
699 # cleanup
685 self.builtins_added[biname] = Undefined
700 self.builtins_added[biname] = Undefined
686 __builtin__.__dict__[biname] = bival
701 __builtin__.__dict__[biname] = bival
687
702
688 # Keep in the builtins a flag for when IPython is active. We set it
703 # Keep in the builtins a flag for when IPython is active. We set it
689 # with setdefault so that multiple nested IPythons don't clobber one
704 # with setdefault so that multiple nested IPythons don't clobber one
690 # another. Each will increase its value by one upon being activated,
705 # another. Each will increase its value by one upon being activated,
691 # which also gives us a way to determine the nesting level.
706 # which also gives us a way to determine the nesting level.
692 __builtin__.__dict__.setdefault('__IPYTHON__active',0)
707 __builtin__.__dict__.setdefault('__IPYTHON__active',0)
693
708
694 def clean_builtins(self):
709 def clean_builtins(self):
695 """Remove any builtins which might have been added by add_builtins, or
710 """Remove any builtins which might have been added by add_builtins, or
696 restore overwritten ones to their previous values."""
711 restore overwritten ones to their previous values."""
697 for biname,bival in self.builtins_added.items():
712 for biname,bival in self.builtins_added.items():
698 if bival is Undefined:
713 if bival is Undefined:
699 del __builtin__.__dict__[biname]
714 del __builtin__.__dict__[biname]
700 else:
715 else:
701 __builtin__.__dict__[biname] = bival
716 __builtin__.__dict__[biname] = bival
702 self.builtins_added.clear()
717 self.builtins_added.clear()
703
718
704 def set_hook(self,name,hook, priority = 50):
719 def set_hook(self,name,hook, priority = 50):
705 """set_hook(name,hook) -> sets an internal IPython hook.
720 """set_hook(name,hook) -> sets an internal IPython hook.
706
721
707 IPython exposes some of its internal API as user-modifiable hooks. By
722 IPython exposes some of its internal API as user-modifiable hooks. By
708 adding your function to one of these hooks, you can modify IPython's
723 adding your function to one of these hooks, you can modify IPython's
709 behavior to call at runtime your own routines."""
724 behavior to call at runtime your own routines."""
710
725
711 # At some point in the future, this should validate the hook before it
726 # At some point in the future, this should validate the hook before it
712 # accepts it. Probably at least check that the hook takes the number
727 # accepts it. Probably at least check that the hook takes the number
713 # of args it's supposed to.
728 # of args it's supposed to.
714 dp = getattr(self.hooks, name, None)
729 dp = getattr(self.hooks, name, None)
715 if name not in IPython.hooks.__all__:
730 if name not in IPython.hooks.__all__:
716 print "Warning! Hook '%s' is not one of %s" % (name, IPython.hooks.__all__ )
731 print "Warning! Hook '%s' is not one of %s" % (name, IPython.hooks.__all__ )
717 if not dp:
732 if not dp:
718 dp = IPython.hooks.CommandChainDispatcher()
733 dp = IPython.hooks.CommandChainDispatcher()
719
734
720 f = new.instancemethod(hook,self,self.__class__)
735 f = new.instancemethod(hook,self,self.__class__)
721 try:
736 try:
722 dp.add(f,priority)
737 dp.add(f,priority)
723 except AttributeError:
738 except AttributeError:
724 # it was not commandchain, plain old func - replace
739 # it was not commandchain, plain old func - replace
725 dp = f
740 dp = f
726
741
727 setattr(self.hooks,name, dp)
742 setattr(self.hooks,name, dp)
728
743
729
744
730 #setattr(self.hooks,name,new.instancemethod(hook,self,self.__class__))
745 #setattr(self.hooks,name,new.instancemethod(hook,self,self.__class__))
731
746
732 def set_custom_exc(self,exc_tuple,handler):
747 def set_custom_exc(self,exc_tuple,handler):
733 """set_custom_exc(exc_tuple,handler)
748 """set_custom_exc(exc_tuple,handler)
734
749
735 Set a custom exception handler, which will be called if any of the
750 Set a custom exception handler, which will be called if any of the
736 exceptions in exc_tuple occur in the mainloop (specifically, in the
751 exceptions in exc_tuple occur in the mainloop (specifically, in the
737 runcode() method.
752 runcode() method.
738
753
739 Inputs:
754 Inputs:
740
755
741 - exc_tuple: a *tuple* of valid exceptions to call the defined
756 - exc_tuple: a *tuple* of valid exceptions to call the defined
742 handler for. It is very important that you use a tuple, and NOT A
757 handler for. It is very important that you use a tuple, and NOT A
743 LIST here, because of the way Python's except statement works. If
758 LIST here, because of the way Python's except statement works. If
744 you only want to trap a single exception, use a singleton tuple:
759 you only want to trap a single exception, use a singleton tuple:
745
760
746 exc_tuple == (MyCustomException,)
761 exc_tuple == (MyCustomException,)
747
762
748 - handler: this must be defined as a function with the following
763 - handler: this must be defined as a function with the following
749 basic interface: def my_handler(self,etype,value,tb).
764 basic interface: def my_handler(self,etype,value,tb).
750
765
751 This will be made into an instance method (via new.instancemethod)
766 This will be made into an instance method (via new.instancemethod)
752 of IPython itself, and it will be called if any of the exceptions
767 of IPython itself, and it will be called if any of the exceptions
753 listed in the exc_tuple are caught. If the handler is None, an
768 listed in the exc_tuple are caught. If the handler is None, an
754 internal basic one is used, which just prints basic info.
769 internal basic one is used, which just prints basic info.
755
770
756 WARNING: by putting in your own exception handler into IPython's main
771 WARNING: by putting in your own exception handler into IPython's main
757 execution loop, you run a very good chance of nasty crashes. This
772 execution loop, you run a very good chance of nasty crashes. This
758 facility should only be used if you really know what you are doing."""
773 facility should only be used if you really know what you are doing."""
759
774
760 assert type(exc_tuple)==type(()) , \
775 assert type(exc_tuple)==type(()) , \
761 "The custom exceptions must be given AS A TUPLE."
776 "The custom exceptions must be given AS A TUPLE."
762
777
763 def dummy_handler(self,etype,value,tb):
778 def dummy_handler(self,etype,value,tb):
764 print '*** Simple custom exception handler ***'
779 print '*** Simple custom exception handler ***'
765 print 'Exception type :',etype
780 print 'Exception type :',etype
766 print 'Exception value:',value
781 print 'Exception value:',value
767 print 'Traceback :',tb
782 print 'Traceback :',tb
768 print 'Source code :','\n'.join(self.buffer)
783 print 'Source code :','\n'.join(self.buffer)
769
784
770 if handler is None: handler = dummy_handler
785 if handler is None: handler = dummy_handler
771
786
772 self.CustomTB = new.instancemethod(handler,self,self.__class__)
787 self.CustomTB = new.instancemethod(handler,self,self.__class__)
773 self.custom_exceptions = exc_tuple
788 self.custom_exceptions = exc_tuple
774
789
775 def set_custom_completer(self,completer,pos=0):
790 def set_custom_completer(self,completer,pos=0):
776 """set_custom_completer(completer,pos=0)
791 """set_custom_completer(completer,pos=0)
777
792
778 Adds a new custom completer function.
793 Adds a new custom completer function.
779
794
780 The position argument (defaults to 0) is the index in the completers
795 The position argument (defaults to 0) is the index in the completers
781 list where you want the completer to be inserted."""
796 list where you want the completer to be inserted."""
782
797
783 newcomp = new.instancemethod(completer,self.Completer,
798 newcomp = new.instancemethod(completer,self.Completer,
784 self.Completer.__class__)
799 self.Completer.__class__)
785 self.Completer.matchers.insert(pos,newcomp)
800 self.Completer.matchers.insert(pos,newcomp)
786
801
787 def _get_call_pdb(self):
802 def _get_call_pdb(self):
788 return self._call_pdb
803 return self._call_pdb
789
804
790 def _set_call_pdb(self,val):
805 def _set_call_pdb(self,val):
791
806
792 if val not in (0,1,False,True):
807 if val not in (0,1,False,True):
793 raise ValueError,'new call_pdb value must be boolean'
808 raise ValueError,'new call_pdb value must be boolean'
794
809
795 # store value in instance
810 # store value in instance
796 self._call_pdb = val
811 self._call_pdb = val
797
812
798 # notify the actual exception handlers
813 # notify the actual exception handlers
799 self.InteractiveTB.call_pdb = val
814 self.InteractiveTB.call_pdb = val
800 if self.isthreaded:
815 if self.isthreaded:
801 try:
816 try:
802 self.sys_excepthook.call_pdb = val
817 self.sys_excepthook.call_pdb = val
803 except:
818 except:
804 warn('Failed to activate pdb for threaded exception handler')
819 warn('Failed to activate pdb for threaded exception handler')
805
820
806 call_pdb = property(_get_call_pdb,_set_call_pdb,None,
821 call_pdb = property(_get_call_pdb,_set_call_pdb,None,
807 'Control auto-activation of pdb at exceptions')
822 'Control auto-activation of pdb at exceptions')
808
823
809
824
810 # These special functions get installed in the builtin namespace, to
825 # These special functions get installed in the builtin namespace, to
811 # provide programmatic (pure python) access to magics, aliases and system
826 # provide programmatic (pure python) access to magics, aliases and system
812 # calls. This is important for logging, user scripting, and more.
827 # calls. This is important for logging, user scripting, and more.
813
828
814 # We are basically exposing, via normal python functions, the three
829 # We are basically exposing, via normal python functions, the three
815 # mechanisms in which ipython offers special call modes (magics for
830 # mechanisms in which ipython offers special call modes (magics for
816 # internal control, aliases for direct system access via pre-selected
831 # internal control, aliases for direct system access via pre-selected
817 # names, and !cmd for calling arbitrary system commands).
832 # names, and !cmd for calling arbitrary system commands).
818
833
819 def ipmagic(self,arg_s):
834 def ipmagic(self,arg_s):
820 """Call a magic function by name.
835 """Call a magic function by name.
821
836
822 Input: a string containing the name of the magic function to call and any
837 Input: a string containing the name of the magic function to call and any
823 additional arguments to be passed to the magic.
838 additional arguments to be passed to the magic.
824
839
825 ipmagic('name -opt foo bar') is equivalent to typing at the ipython
840 ipmagic('name -opt foo bar') is equivalent to typing at the ipython
826 prompt:
841 prompt:
827
842
828 In[1]: %name -opt foo bar
843 In[1]: %name -opt foo bar
829
844
830 To call a magic without arguments, simply use ipmagic('name').
845 To call a magic without arguments, simply use ipmagic('name').
831
846
832 This provides a proper Python function to call IPython's magics in any
847 This provides a proper Python function to call IPython's magics in any
833 valid Python code you can type at the interpreter, including loops and
848 valid Python code you can type at the interpreter, including loops and
834 compound statements. It is added by IPython to the Python builtin
849 compound statements. It is added by IPython to the Python builtin
835 namespace upon initialization."""
850 namespace upon initialization."""
836
851
837 args = arg_s.split(' ',1)
852 args = arg_s.split(' ',1)
838 magic_name = args[0]
853 magic_name = args[0]
839 magic_name = magic_name.lstrip(self.ESC_MAGIC)
854 magic_name = magic_name.lstrip(self.ESC_MAGIC)
840
855
841 try:
856 try:
842 magic_args = args[1]
857 magic_args = args[1]
843 except IndexError:
858 except IndexError:
844 magic_args = ''
859 magic_args = ''
845 fn = getattr(self,'magic_'+magic_name,None)
860 fn = getattr(self,'magic_'+magic_name,None)
846 if fn is None:
861 if fn is None:
847 error("Magic function `%s` not found." % magic_name)
862 error("Magic function `%s` not found." % magic_name)
848 else:
863 else:
849 magic_args = self.var_expand(magic_args)
864 magic_args = self.var_expand(magic_args)
850 return fn(magic_args)
865 return fn(magic_args)
851
866
852 def ipalias(self,arg_s):
867 def ipalias(self,arg_s):
853 """Call an alias by name.
868 """Call an alias by name.
854
869
855 Input: a string containing the name of the alias to call and any
870 Input: a string containing the name of the alias to call and any
856 additional arguments to be passed to the magic.
871 additional arguments to be passed to the magic.
857
872
858 ipalias('name -opt foo bar') is equivalent to typing at the ipython
873 ipalias('name -opt foo bar') is equivalent to typing at the ipython
859 prompt:
874 prompt:
860
875
861 In[1]: name -opt foo bar
876 In[1]: name -opt foo bar
862
877
863 To call an alias without arguments, simply use ipalias('name').
878 To call an alias without arguments, simply use ipalias('name').
864
879
865 This provides a proper Python function to call IPython's aliases in any
880 This provides a proper Python function to call IPython's aliases in any
866 valid Python code you can type at the interpreter, including loops and
881 valid Python code you can type at the interpreter, including loops and
867 compound statements. It is added by IPython to the Python builtin
882 compound statements. It is added by IPython to the Python builtin
868 namespace upon initialization."""
883 namespace upon initialization."""
869
884
870 args = arg_s.split(' ',1)
885 args = arg_s.split(' ',1)
871 alias_name = args[0]
886 alias_name = args[0]
872 try:
887 try:
873 alias_args = args[1]
888 alias_args = args[1]
874 except IndexError:
889 except IndexError:
875 alias_args = ''
890 alias_args = ''
876 if alias_name in self.alias_table:
891 if alias_name in self.alias_table:
877 self.call_alias(alias_name,alias_args)
892 self.call_alias(alias_name,alias_args)
878 else:
893 else:
879 error("Alias `%s` not found." % alias_name)
894 error("Alias `%s` not found." % alias_name)
880
895
881 def ipsystem(self,arg_s):
896 def ipsystem(self,arg_s):
882 """Make a system call, using IPython."""
897 """Make a system call, using IPython."""
883
898
884 self.system(arg_s)
899 self.system(arg_s)
885
900
886 def complete(self,text):
901 def complete(self,text):
887 """Return a sorted list of all possible completions on text.
902 """Return a sorted list of all possible completions on text.
888
903
889 Inputs:
904 Inputs:
890
905
891 - text: a string of text to be completed on.
906 - text: a string of text to be completed on.
892
907
893 This is a wrapper around the completion mechanism, similar to what
908 This is a wrapper around the completion mechanism, similar to what
894 readline does at the command line when the TAB key is hit. By
909 readline does at the command line when the TAB key is hit. By
895 exposing it as a method, it can be used by other non-readline
910 exposing it as a method, it can be used by other non-readline
896 environments (such as GUIs) for text completion.
911 environments (such as GUIs) for text completion.
897
912
898 Simple usage example:
913 Simple usage example:
899
914
900 In [1]: x = 'hello'
915 In [1]: x = 'hello'
901
916
902 In [2]: __IP.complete('x.l')
917 In [2]: __IP.complete('x.l')
903 Out[2]: ['x.ljust', 'x.lower', 'x.lstrip']"""
918 Out[2]: ['x.ljust', 'x.lower', 'x.lstrip']"""
904
919
905 complete = self.Completer.complete
920 complete = self.Completer.complete
906 state = 0
921 state = 0
907 # use a dict so we get unique keys, since ipyhton's multiple
922 # use a dict so we get unique keys, since ipyhton's multiple
908 # completers can return duplicates.
923 # completers can return duplicates.
909 comps = {}
924 comps = {}
910 while True:
925 while True:
911 newcomp = complete(text,state)
926 newcomp = complete(text,state)
912 if newcomp is None:
927 if newcomp is None:
913 break
928 break
914 comps[newcomp] = 1
929 comps[newcomp] = 1
915 state += 1
930 state += 1
916 outcomps = comps.keys()
931 outcomps = comps.keys()
917 outcomps.sort()
932 outcomps.sort()
918 return outcomps
933 return outcomps
919
934
920 def set_completer_frame(self, frame=None):
935 def set_completer_frame(self, frame=None):
921 if frame:
936 if frame:
922 self.Completer.namespace = frame.f_locals
937 self.Completer.namespace = frame.f_locals
923 self.Completer.global_namespace = frame.f_globals
938 self.Completer.global_namespace = frame.f_globals
924 else:
939 else:
925 self.Completer.namespace = self.user_ns
940 self.Completer.namespace = self.user_ns
926 self.Completer.global_namespace = self.user_global_ns
941 self.Completer.global_namespace = self.user_global_ns
927
942
928 def init_auto_alias(self):
943 def init_auto_alias(self):
929 """Define some aliases automatically.
944 """Define some aliases automatically.
930
945
931 These are ALL parameter-less aliases"""
946 These are ALL parameter-less aliases"""
932
947
933 for alias,cmd in self.auto_alias:
948 for alias,cmd in self.auto_alias:
934 self.alias_table[alias] = (0,cmd)
949 self.alias_table[alias] = (0,cmd)
935
950
936 def alias_table_validate(self,verbose=0):
951 def alias_table_validate(self,verbose=0):
937 """Update information about the alias table.
952 """Update information about the alias table.
938
953
939 In particular, make sure no Python keywords/builtins are in it."""
954 In particular, make sure no Python keywords/builtins are in it."""
940
955
941 no_alias = self.no_alias
956 no_alias = self.no_alias
942 for k in self.alias_table.keys():
957 for k in self.alias_table.keys():
943 if k in no_alias:
958 if k in no_alias:
944 del self.alias_table[k]
959 del self.alias_table[k]
945 if verbose:
960 if verbose:
946 print ("Deleting alias <%s>, it's a Python "
961 print ("Deleting alias <%s>, it's a Python "
947 "keyword or builtin." % k)
962 "keyword or builtin." % k)
948
963
949 def set_autoindent(self,value=None):
964 def set_autoindent(self,value=None):
950 """Set the autoindent flag, checking for readline support.
965 """Set the autoindent flag, checking for readline support.
951
966
952 If called with no arguments, it acts as a toggle."""
967 If called with no arguments, it acts as a toggle."""
953
968
954 if not self.has_readline:
969 if not self.has_readline:
955 if os.name == 'posix':
970 if os.name == 'posix':
956 warn("The auto-indent feature requires the readline library")
971 warn("The auto-indent feature requires the readline library")
957 self.autoindent = 0
972 self.autoindent = 0
958 return
973 return
959 if value is None:
974 if value is None:
960 self.autoindent = not self.autoindent
975 self.autoindent = not self.autoindent
961 else:
976 else:
962 self.autoindent = value
977 self.autoindent = value
963
978
964 def rc_set_toggle(self,rc_field,value=None):
979 def rc_set_toggle(self,rc_field,value=None):
965 """Set or toggle a field in IPython's rc config. structure.
980 """Set or toggle a field in IPython's rc config. structure.
966
981
967 If called with no arguments, it acts as a toggle.
982 If called with no arguments, it acts as a toggle.
968
983
969 If called with a non-existent field, the resulting AttributeError
984 If called with a non-existent field, the resulting AttributeError
970 exception will propagate out."""
985 exception will propagate out."""
971
986
972 rc_val = getattr(self.rc,rc_field)
987 rc_val = getattr(self.rc,rc_field)
973 if value is None:
988 if value is None:
974 value = not rc_val
989 value = not rc_val
975 setattr(self.rc,rc_field,value)
990 setattr(self.rc,rc_field,value)
976
991
977 def user_setup(self,ipythondir,rc_suffix,mode='install'):
992 def user_setup(self,ipythondir,rc_suffix,mode='install'):
978 """Install the user configuration directory.
993 """Install the user configuration directory.
979
994
980 Can be called when running for the first time or to upgrade the user's
995 Can be called when running for the first time or to upgrade the user's
981 .ipython/ directory with the mode parameter. Valid modes are 'install'
996 .ipython/ directory with the mode parameter. Valid modes are 'install'
982 and 'upgrade'."""
997 and 'upgrade'."""
983
998
984 def wait():
999 def wait():
985 try:
1000 try:
986 raw_input("Please press <RETURN> to start IPython.")
1001 raw_input("Please press <RETURN> to start IPython.")
987 except EOFError:
1002 except EOFError:
988 print >> Term.cout
1003 print >> Term.cout
989 print '*'*70
1004 print '*'*70
990
1005
991 cwd = os.getcwd() # remember where we started
1006 cwd = os.getcwd() # remember where we started
992 glb = glob.glob
1007 glb = glob.glob
993 print '*'*70
1008 print '*'*70
994 if mode == 'install':
1009 if mode == 'install':
995 print \
1010 print \
996 """Welcome to IPython. I will try to create a personal configuration directory
1011 """Welcome to IPython. I will try to create a personal configuration directory
997 where you can customize many aspects of IPython's functionality in:\n"""
1012 where you can customize many aspects of IPython's functionality in:\n"""
998 else:
1013 else:
999 print 'I am going to upgrade your configuration in:'
1014 print 'I am going to upgrade your configuration in:'
1000
1015
1001 print ipythondir
1016 print ipythondir
1002
1017
1003 rcdirend = os.path.join('IPython','UserConfig')
1018 rcdirend = os.path.join('IPython','UserConfig')
1004 cfg = lambda d: os.path.join(d,rcdirend)
1019 cfg = lambda d: os.path.join(d,rcdirend)
1005 try:
1020 try:
1006 rcdir = filter(os.path.isdir,map(cfg,sys.path))[0]
1021 rcdir = filter(os.path.isdir,map(cfg,sys.path))[0]
1007 except IOError:
1022 except IOError:
1008 warning = """
1023 warning = """
1009 Installation error. IPython's directory was not found.
1024 Installation error. IPython's directory was not found.
1010
1025
1011 Check the following:
1026 Check the following:
1012
1027
1013 The ipython/IPython directory should be in a directory belonging to your
1028 The ipython/IPython directory should be in a directory belonging to your
1014 PYTHONPATH environment variable (that is, it should be in a directory
1029 PYTHONPATH environment variable (that is, it should be in a directory
1015 belonging to sys.path). You can copy it explicitly there or just link to it.
1030 belonging to sys.path). You can copy it explicitly there or just link to it.
1016
1031
1017 IPython will proceed with builtin defaults.
1032 IPython will proceed with builtin defaults.
1018 """
1033 """
1019 warn(warning)
1034 warn(warning)
1020 wait()
1035 wait()
1021 return
1036 return
1022
1037
1023 if mode == 'install':
1038 if mode == 'install':
1024 try:
1039 try:
1025 shutil.copytree(rcdir,ipythondir)
1040 shutil.copytree(rcdir,ipythondir)
1026 os.chdir(ipythondir)
1041 os.chdir(ipythondir)
1027 rc_files = glb("ipythonrc*")
1042 rc_files = glb("ipythonrc*")
1028 for rc_file in rc_files:
1043 for rc_file in rc_files:
1029 os.rename(rc_file,rc_file+rc_suffix)
1044 os.rename(rc_file,rc_file+rc_suffix)
1030 except:
1045 except:
1031 warning = """
1046 warning = """
1032
1047
1033 There was a problem with the installation:
1048 There was a problem with the installation:
1034 %s
1049 %s
1035 Try to correct it or contact the developers if you think it's a bug.
1050 Try to correct it or contact the developers if you think it's a bug.
1036 IPython will proceed with builtin defaults.""" % sys.exc_info()[1]
1051 IPython will proceed with builtin defaults.""" % sys.exc_info()[1]
1037 warn(warning)
1052 warn(warning)
1038 wait()
1053 wait()
1039 return
1054 return
1040
1055
1041 elif mode == 'upgrade':
1056 elif mode == 'upgrade':
1042 try:
1057 try:
1043 os.chdir(ipythondir)
1058 os.chdir(ipythondir)
1044 except:
1059 except:
1045 print """
1060 print """
1046 Can not upgrade: changing to directory %s failed. Details:
1061 Can not upgrade: changing to directory %s failed. Details:
1047 %s
1062 %s
1048 """ % (ipythondir,sys.exc_info()[1])
1063 """ % (ipythondir,sys.exc_info()[1])
1049 wait()
1064 wait()
1050 return
1065 return
1051 else:
1066 else:
1052 sources = glb(os.path.join(rcdir,'[A-Za-z]*'))
1067 sources = glb(os.path.join(rcdir,'[A-Za-z]*'))
1053 for new_full_path in sources:
1068 for new_full_path in sources:
1054 new_filename = os.path.basename(new_full_path)
1069 new_filename = os.path.basename(new_full_path)
1055 if new_filename.startswith('ipythonrc'):
1070 if new_filename.startswith('ipythonrc'):
1056 new_filename = new_filename + rc_suffix
1071 new_filename = new_filename + rc_suffix
1057 # The config directory should only contain files, skip any
1072 # The config directory should only contain files, skip any
1058 # directories which may be there (like CVS)
1073 # directories which may be there (like CVS)
1059 if os.path.isdir(new_full_path):
1074 if os.path.isdir(new_full_path):
1060 continue
1075 continue
1061 if os.path.exists(new_filename):
1076 if os.path.exists(new_filename):
1062 old_file = new_filename+'.old'
1077 old_file = new_filename+'.old'
1063 if os.path.exists(old_file):
1078 if os.path.exists(old_file):
1064 os.remove(old_file)
1079 os.remove(old_file)
1065 os.rename(new_filename,old_file)
1080 os.rename(new_filename,old_file)
1066 shutil.copy(new_full_path,new_filename)
1081 shutil.copy(new_full_path,new_filename)
1067 else:
1082 else:
1068 raise ValueError,'unrecognized mode for install:',`mode`
1083 raise ValueError,'unrecognized mode for install:',`mode`
1069
1084
1070 # Fix line-endings to those native to each platform in the config
1085 # Fix line-endings to those native to each platform in the config
1071 # directory.
1086 # directory.
1072 try:
1087 try:
1073 os.chdir(ipythondir)
1088 os.chdir(ipythondir)
1074 except:
1089 except:
1075 print """
1090 print """
1076 Problem: changing to directory %s failed.
1091 Problem: changing to directory %s failed.
1077 Details:
1092 Details:
1078 %s
1093 %s
1079
1094
1080 Some configuration files may have incorrect line endings. This should not
1095 Some configuration files may have incorrect line endings. This should not
1081 cause any problems during execution. """ % (ipythondir,sys.exc_info()[1])
1096 cause any problems during execution. """ % (ipythondir,sys.exc_info()[1])
1082 wait()
1097 wait()
1083 else:
1098 else:
1084 for fname in glb('ipythonrc*'):
1099 for fname in glb('ipythonrc*'):
1085 try:
1100 try:
1086 native_line_ends(fname,backup=0)
1101 native_line_ends(fname,backup=0)
1087 except IOError:
1102 except IOError:
1088 pass
1103 pass
1089
1104
1090 if mode == 'install':
1105 if mode == 'install':
1091 print """
1106 print """
1092 Successful installation!
1107 Successful installation!
1093
1108
1094 Please read the sections 'Initial Configuration' and 'Quick Tips' in the
1109 Please read the sections 'Initial Configuration' and 'Quick Tips' in the
1095 IPython manual (there are both HTML and PDF versions supplied with the
1110 IPython manual (there are both HTML and PDF versions supplied with the
1096 distribution) to make sure that your system environment is properly configured
1111 distribution) to make sure that your system environment is properly configured
1097 to take advantage of IPython's features.
1112 to take advantage of IPython's features.
1098
1113
1099 Important note: the configuration system has changed! The old system is
1114 Important note: the configuration system has changed! The old system is
1100 still in place, but its setting may be partly overridden by the settings in
1115 still in place, but its setting may be partly overridden by the settings in
1101 "~/.ipython/ipy_user_conf.py" config file. Please take a look at the file
1116 "~/.ipython/ipy_user_conf.py" config file. Please take a look at the file
1102 if some of the new settings bother you.
1117 if some of the new settings bother you.
1103
1118
1104 """
1119 """
1105 else:
1120 else:
1106 print """
1121 print """
1107 Successful upgrade!
1122 Successful upgrade!
1108
1123
1109 All files in your directory:
1124 All files in your directory:
1110 %(ipythondir)s
1125 %(ipythondir)s
1111 which would have been overwritten by the upgrade were backed up with a .old
1126 which would have been overwritten by the upgrade were backed up with a .old
1112 extension. If you had made particular customizations in those files you may
1127 extension. If you had made particular customizations in those files you may
1113 want to merge them back into the new files.""" % locals()
1128 want to merge them back into the new files.""" % locals()
1114 wait()
1129 wait()
1115 os.chdir(cwd)
1130 os.chdir(cwd)
1116 # end user_setup()
1131 # end user_setup()
1117
1132
1118 def atexit_operations(self):
1133 def atexit_operations(self):
1119 """This will be executed at the time of exit.
1134 """This will be executed at the time of exit.
1120
1135
1121 Saving of persistent data should be performed here. """
1136 Saving of persistent data should be performed here. """
1122
1137
1123 #print '*** IPython exit cleanup ***' # dbg
1138 #print '*** IPython exit cleanup ***' # dbg
1124 # input history
1139 # input history
1125 self.savehist()
1140 self.savehist()
1126
1141
1127 # Cleanup all tempfiles left around
1142 # Cleanup all tempfiles left around
1128 for tfile in self.tempfiles:
1143 for tfile in self.tempfiles:
1129 try:
1144 try:
1130 os.unlink(tfile)
1145 os.unlink(tfile)
1131 except OSError:
1146 except OSError:
1132 pass
1147 pass
1133
1148
1134 # save the "persistent data" catch-all dictionary
1149 # save the "persistent data" catch-all dictionary
1135 self.hooks.shutdown_hook()
1150 self.hooks.shutdown_hook()
1136
1151
1137 def savehist(self):
1152 def savehist(self):
1138 """Save input history to a file (via readline library)."""
1153 """Save input history to a file (via readline library)."""
1139 try:
1154 try:
1140 self.readline.write_history_file(self.histfile)
1155 self.readline.write_history_file(self.histfile)
1141 except:
1156 except:
1142 print 'Unable to save IPython command history to file: ' + \
1157 print 'Unable to save IPython command history to file: ' + \
1143 `self.histfile`
1158 `self.histfile`
1144
1159
1145 def pre_readline(self):
1160 def pre_readline(self):
1146 """readline hook to be used at the start of each line.
1161 """readline hook to be used at the start of each line.
1147
1162
1148 Currently it handles auto-indent only."""
1163 Currently it handles auto-indent only."""
1149
1164
1150 #debugx('self.indent_current_nsp','pre_readline:')
1165 #debugx('self.indent_current_nsp','pre_readline:')
1151 self.readline.insert_text(self.indent_current_str())
1166 self.readline.insert_text(self.indent_current_str())
1152
1167
1153 def init_readline(self):
1168 def init_readline(self):
1154 """Command history completion/saving/reloading."""
1169 """Command history completion/saving/reloading."""
1155
1170
1156 import IPython.rlineimpl as readline
1171 import IPython.rlineimpl as readline
1157 if not readline.have_readline:
1172 if not readline.have_readline:
1158 self.has_readline = 0
1173 self.has_readline = 0
1159 self.readline = None
1174 self.readline = None
1160 # no point in bugging windows users with this every time:
1175 # no point in bugging windows users with this every time:
1161 warn('Readline services not available on this platform.')
1176 warn('Readline services not available on this platform.')
1162 else:
1177 else:
1163 sys.modules['readline'] = readline
1178 sys.modules['readline'] = readline
1164 import atexit
1179 import atexit
1165 from IPython.completer import IPCompleter
1180 from IPython.completer import IPCompleter
1166 self.Completer = IPCompleter(self,
1181 self.Completer = IPCompleter(self,
1167 self.user_ns,
1182 self.user_ns,
1168 self.user_global_ns,
1183 self.user_global_ns,
1169 self.rc.readline_omit__names,
1184 self.rc.readline_omit__names,
1170 self.alias_table)
1185 self.alias_table)
1171
1186
1172 # Platform-specific configuration
1187 # Platform-specific configuration
1173 if os.name == 'nt':
1188 if os.name == 'nt':
1174 self.readline_startup_hook = readline.set_pre_input_hook
1189 self.readline_startup_hook = readline.set_pre_input_hook
1175 else:
1190 else:
1176 self.readline_startup_hook = readline.set_startup_hook
1191 self.readline_startup_hook = readline.set_startup_hook
1177
1192
1178 # Load user's initrc file (readline config)
1193 # Load user's initrc file (readline config)
1179 inputrc_name = os.environ.get('INPUTRC')
1194 inputrc_name = os.environ.get('INPUTRC')
1180 if inputrc_name is None:
1195 if inputrc_name is None:
1181 home_dir = get_home_dir()
1196 home_dir = get_home_dir()
1182 if home_dir is not None:
1197 if home_dir is not None:
1183 inputrc_name = os.path.join(home_dir,'.inputrc')
1198 inputrc_name = os.path.join(home_dir,'.inputrc')
1184 if os.path.isfile(inputrc_name):
1199 if os.path.isfile(inputrc_name):
1185 try:
1200 try:
1186 readline.read_init_file(inputrc_name)
1201 readline.read_init_file(inputrc_name)
1187 except:
1202 except:
1188 warn('Problems reading readline initialization file <%s>'
1203 warn('Problems reading readline initialization file <%s>'
1189 % inputrc_name)
1204 % inputrc_name)
1190
1205
1191 self.has_readline = 1
1206 self.has_readline = 1
1192 self.readline = readline
1207 self.readline = readline
1193 # save this in sys so embedded copies can restore it properly
1208 # save this in sys so embedded copies can restore it properly
1194 sys.ipcompleter = self.Completer.complete
1209 sys.ipcompleter = self.Completer.complete
1195 readline.set_completer(self.Completer.complete)
1210 readline.set_completer(self.Completer.complete)
1196
1211
1197 # Configure readline according to user's prefs
1212 # Configure readline according to user's prefs
1198 for rlcommand in self.rc.readline_parse_and_bind:
1213 for rlcommand in self.rc.readline_parse_and_bind:
1199 readline.parse_and_bind(rlcommand)
1214 readline.parse_and_bind(rlcommand)
1200
1215
1201 # remove some chars from the delimiters list
1216 # remove some chars from the delimiters list
1202 delims = readline.get_completer_delims()
1217 delims = readline.get_completer_delims()
1203 delims = delims.translate(string._idmap,
1218 delims = delims.translate(string._idmap,
1204 self.rc.readline_remove_delims)
1219 self.rc.readline_remove_delims)
1205 readline.set_completer_delims(delims)
1220 readline.set_completer_delims(delims)
1206 # otherwise we end up with a monster history after a while:
1221 # otherwise we end up with a monster history after a while:
1207 readline.set_history_length(1000)
1222 readline.set_history_length(1000)
1208 try:
1223 try:
1209 #print '*** Reading readline history' # dbg
1224 #print '*** Reading readline history' # dbg
1210 readline.read_history_file(self.histfile)
1225 readline.read_history_file(self.histfile)
1211 except IOError:
1226 except IOError:
1212 pass # It doesn't exist yet.
1227 pass # It doesn't exist yet.
1213
1228
1214 atexit.register(self.atexit_operations)
1229 atexit.register(self.atexit_operations)
1215 del atexit
1230 del atexit
1216
1231
1217 # Configure auto-indent for all platforms
1232 # Configure auto-indent for all platforms
1218 self.set_autoindent(self.rc.autoindent)
1233 self.set_autoindent(self.rc.autoindent)
1219
1234
1220 def _should_recompile(self,e):
1235 def _should_recompile(self,e):
1221 """Utility routine for edit_syntax_error"""
1236 """Utility routine for edit_syntax_error"""
1222
1237
1223 if e.filename in ('<ipython console>','<input>','<string>',
1238 if e.filename in ('<ipython console>','<input>','<string>',
1224 '<console>','<BackgroundJob compilation>',
1239 '<console>','<BackgroundJob compilation>',
1225 None):
1240 None):
1226
1241
1227 return False
1242 return False
1228 try:
1243 try:
1229 if (self.rc.autoedit_syntax and
1244 if (self.rc.autoedit_syntax and
1230 not ask_yes_no('Return to editor to correct syntax error? '
1245 not ask_yes_no('Return to editor to correct syntax error? '
1231 '[Y/n] ','y')):
1246 '[Y/n] ','y')):
1232 return False
1247 return False
1233 except EOFError:
1248 except EOFError:
1234 return False
1249 return False
1235
1250
1236 def int0(x):
1251 def int0(x):
1237 try:
1252 try:
1238 return int(x)
1253 return int(x)
1239 except TypeError:
1254 except TypeError:
1240 return 0
1255 return 0
1241 # always pass integer line and offset values to editor hook
1256 # always pass integer line and offset values to editor hook
1242 self.hooks.fix_error_editor(e.filename,
1257 self.hooks.fix_error_editor(e.filename,
1243 int0(e.lineno),int0(e.offset),e.msg)
1258 int0(e.lineno),int0(e.offset),e.msg)
1244 return True
1259 return True
1245
1260
1246 def edit_syntax_error(self):
1261 def edit_syntax_error(self):
1247 """The bottom half of the syntax error handler called in the main loop.
1262 """The bottom half of the syntax error handler called in the main loop.
1248
1263
1249 Loop until syntax error is fixed or user cancels.
1264 Loop until syntax error is fixed or user cancels.
1250 """
1265 """
1251
1266
1252 while self.SyntaxTB.last_syntax_error:
1267 while self.SyntaxTB.last_syntax_error:
1253 # copy and clear last_syntax_error
1268 # copy and clear last_syntax_error
1254 err = self.SyntaxTB.clear_err_state()
1269 err = self.SyntaxTB.clear_err_state()
1255 if not self._should_recompile(err):
1270 if not self._should_recompile(err):
1256 return
1271 return
1257 try:
1272 try:
1258 # may set last_syntax_error again if a SyntaxError is raised
1273 # may set last_syntax_error again if a SyntaxError is raised
1259 self.safe_execfile(err.filename,self.shell.user_ns)
1274 self.safe_execfile(err.filename,self.shell.user_ns)
1260 except:
1275 except:
1261 self.showtraceback()
1276 self.showtraceback()
1262 else:
1277 else:
1263 try:
1278 try:
1264 f = file(err.filename)
1279 f = file(err.filename)
1265 try:
1280 try:
1266 sys.displayhook(f.read())
1281 sys.displayhook(f.read())
1267 finally:
1282 finally:
1268 f.close()
1283 f.close()
1269 except:
1284 except:
1270 self.showtraceback()
1285 self.showtraceback()
1271
1286
1272 def showsyntaxerror(self, filename=None):
1287 def showsyntaxerror(self, filename=None):
1273 """Display the syntax error that just occurred.
1288 """Display the syntax error that just occurred.
1274
1289
1275 This doesn't display a stack trace because there isn't one.
1290 This doesn't display a stack trace because there isn't one.
1276
1291
1277 If a filename is given, it is stuffed in the exception instead
1292 If a filename is given, it is stuffed in the exception instead
1278 of what was there before (because Python's parser always uses
1293 of what was there before (because Python's parser always uses
1279 "<string>" when reading from a string).
1294 "<string>" when reading from a string).
1280 """
1295 """
1281 etype, value, last_traceback = sys.exc_info()
1296 etype, value, last_traceback = sys.exc_info()
1282
1297
1283 # See note about these variables in showtraceback() below
1298 # See note about these variables in showtraceback() below
1284 sys.last_type = etype
1299 sys.last_type = etype
1285 sys.last_value = value
1300 sys.last_value = value
1286 sys.last_traceback = last_traceback
1301 sys.last_traceback = last_traceback
1287
1302
1288 if filename and etype is SyntaxError:
1303 if filename and etype is SyntaxError:
1289 # Work hard to stuff the correct filename in the exception
1304 # Work hard to stuff the correct filename in the exception
1290 try:
1305 try:
1291 msg, (dummy_filename, lineno, offset, line) = value
1306 msg, (dummy_filename, lineno, offset, line) = value
1292 except:
1307 except:
1293 # Not the format we expect; leave it alone
1308 # Not the format we expect; leave it alone
1294 pass
1309 pass
1295 else:
1310 else:
1296 # Stuff in the right filename
1311 # Stuff in the right filename
1297 try:
1312 try:
1298 # Assume SyntaxError is a class exception
1313 # Assume SyntaxError is a class exception
1299 value = SyntaxError(msg, (filename, lineno, offset, line))
1314 value = SyntaxError(msg, (filename, lineno, offset, line))
1300 except:
1315 except:
1301 # If that failed, assume SyntaxError is a string
1316 # If that failed, assume SyntaxError is a string
1302 value = msg, (filename, lineno, offset, line)
1317 value = msg, (filename, lineno, offset, line)
1303 self.SyntaxTB(etype,value,[])
1318 self.SyntaxTB(etype,value,[])
1304
1319
1305 def debugger(self):
1320 def debugger(self):
1306 """Call the pdb debugger."""
1321 """Call the pdb debugger."""
1307
1322
1308 if not self.rc.pdb:
1323 if not self.rc.pdb:
1309 return
1324 return
1310 pdb.pm()
1325 pdb.pm()
1311
1326
1312 def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None):
1327 def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None):
1313 """Display the exception that just occurred.
1328 """Display the exception that just occurred.
1314
1329
1315 If nothing is known about the exception, this is the method which
1330 If nothing is known about the exception, this is the method which
1316 should be used throughout the code for presenting user tracebacks,
1331 should be used throughout the code for presenting user tracebacks,
1317 rather than directly invoking the InteractiveTB object.
1332 rather than directly invoking the InteractiveTB object.
1318
1333
1319 A specific showsyntaxerror() also exists, but this method can take
1334 A specific showsyntaxerror() also exists, but this method can take
1320 care of calling it if needed, so unless you are explicitly catching a
1335 care of calling it if needed, so unless you are explicitly catching a
1321 SyntaxError exception, don't try to analyze the stack manually and
1336 SyntaxError exception, don't try to analyze the stack manually and
1322 simply call this method."""
1337 simply call this method."""
1323
1338
1324 # Though this won't be called by syntax errors in the input line,
1339 # Though this won't be called by syntax errors in the input line,
1325 # there may be SyntaxError cases whith imported code.
1340 # there may be SyntaxError cases whith imported code.
1326 if exc_tuple is None:
1341 if exc_tuple is None:
1327 etype, value, tb = sys.exc_info()
1342 etype, value, tb = sys.exc_info()
1328 else:
1343 else:
1329 etype, value, tb = exc_tuple
1344 etype, value, tb = exc_tuple
1330 if etype is SyntaxError:
1345 if etype is SyntaxError:
1331 self.showsyntaxerror(filename)
1346 self.showsyntaxerror(filename)
1332 else:
1347 else:
1333 # WARNING: these variables are somewhat deprecated and not
1348 # WARNING: these variables are somewhat deprecated and not
1334 # necessarily safe to use in a threaded environment, but tools
1349 # necessarily safe to use in a threaded environment, but tools
1335 # like pdb depend on their existence, so let's set them. If we
1350 # like pdb depend on their existence, so let's set them. If we
1336 # find problems in the field, we'll need to revisit their use.
1351 # find problems in the field, we'll need to revisit their use.
1337 sys.last_type = etype
1352 sys.last_type = etype
1338 sys.last_value = value
1353 sys.last_value = value
1339 sys.last_traceback = tb
1354 sys.last_traceback = tb
1340
1355
1341 self.InteractiveTB(etype,value,tb,tb_offset=tb_offset)
1356 self.InteractiveTB(etype,value,tb,tb_offset=tb_offset)
1342 if self.InteractiveTB.call_pdb and self.has_readline:
1357 if self.InteractiveTB.call_pdb and self.has_readline:
1343 # pdb mucks up readline, fix it back
1358 # pdb mucks up readline, fix it back
1344 self.readline.set_completer(self.Completer.complete)
1359 self.readline.set_completer(self.Completer.complete)
1345
1360
1346 def mainloop(self,banner=None):
1361 def mainloop(self,banner=None):
1347 """Creates the local namespace and starts the mainloop.
1362 """Creates the local namespace and starts the mainloop.
1348
1363
1349 If an optional banner argument is given, it will override the
1364 If an optional banner argument is given, it will override the
1350 internally created default banner."""
1365 internally created default banner."""
1351
1366
1352 if self.rc.c: # Emulate Python's -c option
1367 if self.rc.c: # Emulate Python's -c option
1353 self.exec_init_cmd()
1368 self.exec_init_cmd()
1354 if banner is None:
1369 if banner is None:
1355 if not self.rc.banner:
1370 if not self.rc.banner:
1356 banner = ''
1371 banner = ''
1357 # banner is string? Use it directly!
1372 # banner is string? Use it directly!
1358 elif isinstance(self.rc.banner,basestring):
1373 elif isinstance(self.rc.banner,basestring):
1359 banner = self.rc.banner
1374 banner = self.rc.banner
1360 else:
1375 else:
1361 banner = self.BANNER+self.banner2
1376 banner = self.BANNER+self.banner2
1362
1377
1363 self.interact(banner)
1378 self.interact(banner)
1364
1379
1365 def exec_init_cmd(self):
1380 def exec_init_cmd(self):
1366 """Execute a command given at the command line.
1381 """Execute a command given at the command line.
1367
1382
1368 This emulates Python's -c option."""
1383 This emulates Python's -c option."""
1369
1384
1370 #sys.argv = ['-c']
1385 #sys.argv = ['-c']
1371 self.push(self.rc.c)
1386 self.push(self.rc.c)
1372
1387
1373 def embed_mainloop(self,header='',local_ns=None,global_ns=None,stack_depth=0):
1388 def embed_mainloop(self,header='',local_ns=None,global_ns=None,stack_depth=0):
1374 """Embeds IPython into a running python program.
1389 """Embeds IPython into a running python program.
1375
1390
1376 Input:
1391 Input:
1377
1392
1378 - header: An optional header message can be specified.
1393 - header: An optional header message can be specified.
1379
1394
1380 - local_ns, global_ns: working namespaces. If given as None, the
1395 - local_ns, global_ns: working namespaces. If given as None, the
1381 IPython-initialized one is updated with __main__.__dict__, so that
1396 IPython-initialized one is updated with __main__.__dict__, so that
1382 program variables become visible but user-specific configuration
1397 program variables become visible but user-specific configuration
1383 remains possible.
1398 remains possible.
1384
1399
1385 - stack_depth: specifies how many levels in the stack to go to
1400 - stack_depth: specifies how many levels in the stack to go to
1386 looking for namespaces (when local_ns and global_ns are None). This
1401 looking for namespaces (when local_ns and global_ns are None). This
1387 allows an intermediate caller to make sure that this function gets
1402 allows an intermediate caller to make sure that this function gets
1388 the namespace from the intended level in the stack. By default (0)
1403 the namespace from the intended level in the stack. By default (0)
1389 it will get its locals and globals from the immediate caller.
1404 it will get its locals and globals from the immediate caller.
1390
1405
1391 Warning: it's possible to use this in a program which is being run by
1406 Warning: it's possible to use this in a program which is being run by
1392 IPython itself (via %run), but some funny things will happen (a few
1407 IPython itself (via %run), but some funny things will happen (a few
1393 globals get overwritten). In the future this will be cleaned up, as
1408 globals get overwritten). In the future this will be cleaned up, as
1394 there is no fundamental reason why it can't work perfectly."""
1409 there is no fundamental reason why it can't work perfectly."""
1395
1410
1396 # Get locals and globals from caller
1411 # Get locals and globals from caller
1397 if local_ns is None or global_ns is None:
1412 if local_ns is None or global_ns is None:
1398 call_frame = sys._getframe(stack_depth).f_back
1413 call_frame = sys._getframe(stack_depth).f_back
1399
1414
1400 if local_ns is None:
1415 if local_ns is None:
1401 local_ns = call_frame.f_locals
1416 local_ns = call_frame.f_locals
1402 if global_ns is None:
1417 if global_ns is None:
1403 global_ns = call_frame.f_globals
1418 global_ns = call_frame.f_globals
1404
1419
1405 # Update namespaces and fire up interpreter
1420 # Update namespaces and fire up interpreter
1406
1421
1407 # The global one is easy, we can just throw it in
1422 # The global one is easy, we can just throw it in
1408 self.user_global_ns = global_ns
1423 self.user_global_ns = global_ns
1409
1424
1410 # but the user/local one is tricky: ipython needs it to store internal
1425 # but the user/local one is tricky: ipython needs it to store internal
1411 # data, but we also need the locals. We'll copy locals in the user
1426 # data, but we also need the locals. We'll copy locals in the user
1412 # one, but will track what got copied so we can delete them at exit.
1427 # one, but will track what got copied so we can delete them at exit.
1413 # This is so that a later embedded call doesn't see locals from a
1428 # This is so that a later embedded call doesn't see locals from a
1414 # previous call (which most likely existed in a separate scope).
1429 # previous call (which most likely existed in a separate scope).
1415 local_varnames = local_ns.keys()
1430 local_varnames = local_ns.keys()
1416 self.user_ns.update(local_ns)
1431 self.user_ns.update(local_ns)
1417
1432
1418 # Patch for global embedding to make sure that things don't overwrite
1433 # Patch for global embedding to make sure that things don't overwrite
1419 # user globals accidentally. Thanks to Richard <rxe@renre-europe.com>
1434 # user globals accidentally. Thanks to Richard <rxe@renre-europe.com>
1420 # FIXME. Test this a bit more carefully (the if.. is new)
1435 # FIXME. Test this a bit more carefully (the if.. is new)
1421 if local_ns is None and global_ns is None:
1436 if local_ns is None and global_ns is None:
1422 self.user_global_ns.update(__main__.__dict__)
1437 self.user_global_ns.update(__main__.__dict__)
1423
1438
1424 # make sure the tab-completer has the correct frame information, so it
1439 # make sure the tab-completer has the correct frame information, so it
1425 # actually completes using the frame's locals/globals
1440 # actually completes using the frame's locals/globals
1426 self.set_completer_frame()
1441 self.set_completer_frame()
1427
1442
1428 # before activating the interactive mode, we need to make sure that
1443 # before activating the interactive mode, we need to make sure that
1429 # all names in the builtin namespace needed by ipython point to
1444 # all names in the builtin namespace needed by ipython point to
1430 # ourselves, and not to other instances.
1445 # ourselves, and not to other instances.
1431 self.add_builtins()
1446 self.add_builtins()
1432
1447
1433 self.interact(header)
1448 self.interact(header)
1434
1449
1435 # now, purge out the user namespace from anything we might have added
1450 # now, purge out the user namespace from anything we might have added
1436 # from the caller's local namespace
1451 # from the caller's local namespace
1437 delvar = self.user_ns.pop
1452 delvar = self.user_ns.pop
1438 for var in local_varnames:
1453 for var in local_varnames:
1439 delvar(var,None)
1454 delvar(var,None)
1440 # and clean builtins we may have overridden
1455 # and clean builtins we may have overridden
1441 self.clean_builtins()
1456 self.clean_builtins()
1442
1457
1443 def interact(self, banner=None):
1458 def interact(self, banner=None):
1444 """Closely emulate the interactive Python console.
1459 """Closely emulate the interactive Python console.
1445
1460
1446 The optional banner argument specify the banner to print
1461 The optional banner argument specify the banner to print
1447 before the first interaction; by default it prints a banner
1462 before the first interaction; by default it prints a banner
1448 similar to the one printed by the real Python interpreter,
1463 similar to the one printed by the real Python interpreter,
1449 followed by the current class name in parentheses (so as not
1464 followed by the current class name in parentheses (so as not
1450 to confuse this with the real interpreter -- since it's so
1465 to confuse this with the real interpreter -- since it's so
1451 close!).
1466 close!).
1452
1467
1453 """
1468 """
1454 cprt = 'Type "copyright", "credits" or "license" for more information.'
1469 cprt = 'Type "copyright", "credits" or "license" for more information.'
1455 if banner is None:
1470 if banner is None:
1456 self.write("Python %s on %s\n%s\n(%s)\n" %
1471 self.write("Python %s on %s\n%s\n(%s)\n" %
1457 (sys.version, sys.platform, cprt,
1472 (sys.version, sys.platform, cprt,
1458 self.__class__.__name__))
1473 self.__class__.__name__))
1459 else:
1474 else:
1460 self.write(banner)
1475 self.write(banner)
1461
1476
1462 more = 0
1477 more = 0
1463
1478
1464 # Mark activity in the builtins
1479 # Mark activity in the builtins
1465 __builtin__.__dict__['__IPYTHON__active'] += 1
1480 __builtin__.__dict__['__IPYTHON__active'] += 1
1466
1481
1467 # exit_now is set by a call to %Exit or %Quit
1482 # exit_now is set by a call to %Exit or %Quit
1468 self.exit_now = False
1483 self.exit_now = False
1469 while not self.exit_now:
1484 while not self.exit_now:
1470 if more:
1485 if more:
1471 prompt = self.outputcache.prompt2
1486 prompt = self.outputcache.prompt2
1472 if self.autoindent:
1487 if self.autoindent:
1473 self.readline_startup_hook(self.pre_readline)
1488 self.readline_startup_hook(self.pre_readline)
1474 else:
1489 else:
1475 prompt = self.outputcache.prompt1
1490 prompt = self.outputcache.prompt1
1476 try:
1491 try:
1477 line = self.raw_input(prompt,more)
1492 line = self.raw_input(prompt,more)
1478 if self.autoindent:
1493 if self.autoindent:
1479 self.readline_startup_hook(None)
1494 self.readline_startup_hook(None)
1480 except KeyboardInterrupt:
1495 except KeyboardInterrupt:
1481 self.write('\nKeyboardInterrupt\n')
1496 self.write('\nKeyboardInterrupt\n')
1482 self.resetbuffer()
1497 self.resetbuffer()
1483 # keep cache in sync with the prompt counter:
1498 # keep cache in sync with the prompt counter:
1484 self.outputcache.prompt_count -= 1
1499 self.outputcache.prompt_count -= 1
1485
1500
1486 if self.autoindent:
1501 if self.autoindent:
1487 self.indent_current_nsp = 0
1502 self.indent_current_nsp = 0
1488 more = 0
1503 more = 0
1489 except EOFError:
1504 except EOFError:
1490 if self.autoindent:
1505 if self.autoindent:
1491 self.readline_startup_hook(None)
1506 self.readline_startup_hook(None)
1492 self.write('\n')
1507 self.write('\n')
1493 self.exit()
1508 self.exit()
1494 except bdb.BdbQuit:
1509 except bdb.BdbQuit:
1495 warn('The Python debugger has exited with a BdbQuit exception.\n'
1510 warn('The Python debugger has exited with a BdbQuit exception.\n'
1496 'Because of how pdb handles the stack, it is impossible\n'
1511 'Because of how pdb handles the stack, it is impossible\n'
1497 'for IPython to properly format this particular exception.\n'
1512 'for IPython to properly format this particular exception.\n'
1498 'IPython will resume normal operation.')
1513 'IPython will resume normal operation.')
1499 except:
1514 except:
1500 # exceptions here are VERY RARE, but they can be triggered
1515 # exceptions here are VERY RARE, but they can be triggered
1501 # asynchronously by signal handlers, for example.
1516 # asynchronously by signal handlers, for example.
1502 self.showtraceback()
1517 self.showtraceback()
1503 else:
1518 else:
1504 more = self.push(line)
1519 more = self.push(line)
1505 if (self.SyntaxTB.last_syntax_error and
1520 if (self.SyntaxTB.last_syntax_error and
1506 self.rc.autoedit_syntax):
1521 self.rc.autoedit_syntax):
1507 self.edit_syntax_error()
1522 self.edit_syntax_error()
1508
1523
1509 # We are off again...
1524 # We are off again...
1510 __builtin__.__dict__['__IPYTHON__active'] -= 1
1525 __builtin__.__dict__['__IPYTHON__active'] -= 1
1511
1526
1512 def excepthook(self, etype, value, tb):
1527 def excepthook(self, etype, value, tb):
1513 """One more defense for GUI apps that call sys.excepthook.
1528 """One more defense for GUI apps that call sys.excepthook.
1514
1529
1515 GUI frameworks like wxPython trap exceptions and call
1530 GUI frameworks like wxPython trap exceptions and call
1516 sys.excepthook themselves. I guess this is a feature that
1531 sys.excepthook themselves. I guess this is a feature that
1517 enables them to keep running after exceptions that would
1532 enables them to keep running after exceptions that would
1518 otherwise kill their mainloop. This is a bother for IPython
1533 otherwise kill their mainloop. This is a bother for IPython
1519 which excepts to catch all of the program exceptions with a try:
1534 which excepts to catch all of the program exceptions with a try:
1520 except: statement.
1535 except: statement.
1521
1536
1522 Normally, IPython sets sys.excepthook to a CrashHandler instance, so if
1537 Normally, IPython sets sys.excepthook to a CrashHandler instance, so if
1523 any app directly invokes sys.excepthook, it will look to the user like
1538 any app directly invokes sys.excepthook, it will look to the user like
1524 IPython crashed. In order to work around this, we can disable the
1539 IPython crashed. In order to work around this, we can disable the
1525 CrashHandler and replace it with this excepthook instead, which prints a
1540 CrashHandler and replace it with this excepthook instead, which prints a
1526 regular traceback using our InteractiveTB. In this fashion, apps which
1541 regular traceback using our InteractiveTB. In this fashion, apps which
1527 call sys.excepthook will generate a regular-looking exception from
1542 call sys.excepthook will generate a regular-looking exception from
1528 IPython, and the CrashHandler will only be triggered by real IPython
1543 IPython, and the CrashHandler will only be triggered by real IPython
1529 crashes.
1544 crashes.
1530
1545
1531 This hook should be used sparingly, only in places which are not likely
1546 This hook should be used sparingly, only in places which are not likely
1532 to be true IPython errors.
1547 to be true IPython errors.
1533 """
1548 """
1534 self.showtraceback((etype,value,tb),tb_offset=0)
1549 self.showtraceback((etype,value,tb),tb_offset=0)
1535
1550
1536 def transform_alias(self, alias,rest=''):
1551 def transform_alias(self, alias,rest=''):
1537 """ Transform alias to system command string
1552 """ Transform alias to system command string
1538
1553
1539 """
1554 """
1540 nargs,cmd = self.alias_table[alias]
1555 nargs,cmd = self.alias_table[alias]
1541 if ' ' in cmd and os.path.isfile(cmd):
1556 if ' ' in cmd and os.path.isfile(cmd):
1542 cmd = '"%s"' % cmd
1557 cmd = '"%s"' % cmd
1543
1558
1544 # Expand the %l special to be the user's input line
1559 # Expand the %l special to be the user's input line
1545 if cmd.find('%l') >= 0:
1560 if cmd.find('%l') >= 0:
1546 cmd = cmd.replace('%l',rest)
1561 cmd = cmd.replace('%l',rest)
1547 rest = ''
1562 rest = ''
1548 if nargs==0:
1563 if nargs==0:
1549 # Simple, argument-less aliases
1564 # Simple, argument-less aliases
1550 cmd = '%s %s' % (cmd,rest)
1565 cmd = '%s %s' % (cmd,rest)
1551 else:
1566 else:
1552 # Handle aliases with positional arguments
1567 # Handle aliases with positional arguments
1553 args = rest.split(None,nargs)
1568 args = rest.split(None,nargs)
1554 if len(args)< nargs:
1569 if len(args)< nargs:
1555 error('Alias <%s> requires %s arguments, %s given.' %
1570 error('Alias <%s> requires %s arguments, %s given.' %
1556 (alias,nargs,len(args)))
1571 (alias,nargs,len(args)))
1557 return None
1572 return None
1558 cmd = '%s %s' % (cmd % tuple(args[:nargs]),' '.join(args[nargs:]))
1573 cmd = '%s %s' % (cmd % tuple(args[:nargs]),' '.join(args[nargs:]))
1559 # Now call the macro, evaluating in the user's namespace
1574 # Now call the macro, evaluating in the user's namespace
1560
1575
1561 return cmd
1576 return cmd
1562
1577
1563 def call_alias(self,alias,rest=''):
1578 def call_alias(self,alias,rest=''):
1564 """Call an alias given its name and the rest of the line.
1579 """Call an alias given its name and the rest of the line.
1565
1580
1566 This is only used to provide backwards compatibility for users of
1581 This is only used to provide backwards compatibility for users of
1567 ipalias(), use of which is not recommended for anymore."""
1582 ipalias(), use of which is not recommended for anymore."""
1568
1583
1569 # Now call the macro, evaluating in the user's namespace
1584 # Now call the macro, evaluating in the user's namespace
1570 cmd = self.transform_alias(alias, rest)
1585 cmd = self.transform_alias(alias, rest)
1571 try:
1586 try:
1572 self.system(cmd)
1587 self.system(cmd)
1573 except:
1588 except:
1574 self.showtraceback()
1589 self.showtraceback()
1575
1590
1576 def indent_current_str(self):
1591 def indent_current_str(self):
1577 """return the current level of indentation as a string"""
1592 """return the current level of indentation as a string"""
1578 return self.indent_current_nsp * ' '
1593 return self.indent_current_nsp * ' '
1579
1594
1580 def autoindent_update(self,line):
1595 def autoindent_update(self,line):
1581 """Keep track of the indent level."""
1596 """Keep track of the indent level."""
1582
1597
1583 #debugx('line')
1598 #debugx('line')
1584 #debugx('self.indent_current_nsp')
1599 #debugx('self.indent_current_nsp')
1585 if self.autoindent:
1600 if self.autoindent:
1586 if line:
1601 if line:
1587 inisp = num_ini_spaces(line)
1602 inisp = num_ini_spaces(line)
1588 if inisp < self.indent_current_nsp:
1603 if inisp < self.indent_current_nsp:
1589 self.indent_current_nsp = inisp
1604 self.indent_current_nsp = inisp
1590
1605
1591 if line[-1] == ':':
1606 if line[-1] == ':':
1592 self.indent_current_nsp += 4
1607 self.indent_current_nsp += 4
1593 elif dedent_re.match(line):
1608 elif dedent_re.match(line):
1594 self.indent_current_nsp -= 4
1609 self.indent_current_nsp -= 4
1595 else:
1610 else:
1596 self.indent_current_nsp = 0
1611 self.indent_current_nsp = 0
1597
1612
1598 def runlines(self,lines):
1613 def runlines(self,lines):
1599 """Run a string of one or more lines of source.
1614 """Run a string of one or more lines of source.
1600
1615
1601 This method is capable of running a string containing multiple source
1616 This method is capable of running a string containing multiple source
1602 lines, as if they had been entered at the IPython prompt. Since it
1617 lines, as if they had been entered at the IPython prompt. Since it
1603 exposes IPython's processing machinery, the given strings can contain
1618 exposes IPython's processing machinery, the given strings can contain
1604 magic calls (%magic), special shell access (!cmd), etc."""
1619 magic calls (%magic), special shell access (!cmd), etc."""
1605
1620
1606 # We must start with a clean buffer, in case this is run from an
1621 # We must start with a clean buffer, in case this is run from an
1607 # interactive IPython session (via a magic, for example).
1622 # interactive IPython session (via a magic, for example).
1608 self.resetbuffer()
1623 self.resetbuffer()
1609 lines = lines.split('\n')
1624 lines = lines.split('\n')
1610 more = 0
1625 more = 0
1611 for line in lines:
1626 for line in lines:
1612 # skip blank lines so we don't mess up the prompt counter, but do
1627 # skip blank lines so we don't mess up the prompt counter, but do
1613 # NOT skip even a blank line if we are in a code block (more is
1628 # NOT skip even a blank line if we are in a code block (more is
1614 # true)
1629 # true)
1615 if line or more:
1630 if line or more:
1616 more = self.push(self.prefilter(line,more))
1631 more = self.push(self.prefilter(line,more))
1617 # IPython's runsource returns None if there was an error
1632 # IPython's runsource returns None if there was an error
1618 # compiling the code. This allows us to stop processing right
1633 # compiling the code. This allows us to stop processing right
1619 # away, so the user gets the error message at the right place.
1634 # away, so the user gets the error message at the right place.
1620 if more is None:
1635 if more is None:
1621 break
1636 break
1622 # final newline in case the input didn't have it, so that the code
1637 # final newline in case the input didn't have it, so that the code
1623 # actually does get executed
1638 # actually does get executed
1624 if more:
1639 if more:
1625 self.push('\n')
1640 self.push('\n')
1626
1641
1627 def runsource(self, source, filename='<input>', symbol='single'):
1642 def runsource(self, source, filename='<input>', symbol='single'):
1628 """Compile and run some source in the interpreter.
1643 """Compile and run some source in the interpreter.
1629
1644
1630 Arguments are as for compile_command().
1645 Arguments are as for compile_command().
1631
1646
1632 One several things can happen:
1647 One several things can happen:
1633
1648
1634 1) The input is incorrect; compile_command() raised an
1649 1) The input is incorrect; compile_command() raised an
1635 exception (SyntaxError or OverflowError). A syntax traceback
1650 exception (SyntaxError or OverflowError). A syntax traceback
1636 will be printed by calling the showsyntaxerror() method.
1651 will be printed by calling the showsyntaxerror() method.
1637
1652
1638 2) The input is incomplete, and more input is required;
1653 2) The input is incomplete, and more input is required;
1639 compile_command() returned None. Nothing happens.
1654 compile_command() returned None. Nothing happens.
1640
1655
1641 3) The input is complete; compile_command() returned a code
1656 3) The input is complete; compile_command() returned a code
1642 object. The code is executed by calling self.runcode() (which
1657 object. The code is executed by calling self.runcode() (which
1643 also handles run-time exceptions, except for SystemExit).
1658 also handles run-time exceptions, except for SystemExit).
1644
1659
1645 The return value is:
1660 The return value is:
1646
1661
1647 - True in case 2
1662 - True in case 2
1648
1663
1649 - False in the other cases, unless an exception is raised, where
1664 - False in the other cases, unless an exception is raised, where
1650 None is returned instead. This can be used by external callers to
1665 None is returned instead. This can be used by external callers to
1651 know whether to continue feeding input or not.
1666 know whether to continue feeding input or not.
1652
1667
1653 The return value can be used to decide whether to use sys.ps1 or
1668 The return value can be used to decide whether to use sys.ps1 or
1654 sys.ps2 to prompt the next line."""
1669 sys.ps2 to prompt the next line."""
1655
1670
1656 try:
1671 try:
1657 code = self.compile(source,filename,symbol)
1672 code = self.compile(source,filename,symbol)
1658 except (OverflowError, SyntaxError, ValueError):
1673 except (OverflowError, SyntaxError, ValueError):
1659 # Case 1
1674 # Case 1
1660 self.showsyntaxerror(filename)
1675 self.showsyntaxerror(filename)
1661 return None
1676 return None
1662
1677
1663 if code is None:
1678 if code is None:
1664 # Case 2
1679 # Case 2
1665 return True
1680 return True
1666
1681
1667 # Case 3
1682 # Case 3
1668 # We store the code object so that threaded shells and
1683 # We store the code object so that threaded shells and
1669 # custom exception handlers can access all this info if needed.
1684 # custom exception handlers can access all this info if needed.
1670 # The source corresponding to this can be obtained from the
1685 # The source corresponding to this can be obtained from the
1671 # buffer attribute as '\n'.join(self.buffer).
1686 # buffer attribute as '\n'.join(self.buffer).
1672 self.code_to_run = code
1687 self.code_to_run = code
1673 # now actually execute the code object
1688 # now actually execute the code object
1674 if self.runcode(code) == 0:
1689 if self.runcode(code) == 0:
1675 return False
1690 return False
1676 else:
1691 else:
1677 return None
1692 return None
1678
1693
1679 def runcode(self,code_obj):
1694 def runcode(self,code_obj):
1680 """Execute a code object.
1695 """Execute a code object.
1681
1696
1682 When an exception occurs, self.showtraceback() is called to display a
1697 When an exception occurs, self.showtraceback() is called to display a
1683 traceback.
1698 traceback.
1684
1699
1685 Return value: a flag indicating whether the code to be run completed
1700 Return value: a flag indicating whether the code to be run completed
1686 successfully:
1701 successfully:
1687
1702
1688 - 0: successful execution.
1703 - 0: successful execution.
1689 - 1: an error occurred.
1704 - 1: an error occurred.
1690 """
1705 """
1691
1706
1692 # Set our own excepthook in case the user code tries to call it
1707 # Set our own excepthook in case the user code tries to call it
1693 # directly, so that the IPython crash handler doesn't get triggered
1708 # directly, so that the IPython crash handler doesn't get triggered
1694 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
1709 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
1695
1710
1696 # we save the original sys.excepthook in the instance, in case config
1711 # we save the original sys.excepthook in the instance, in case config
1697 # code (such as magics) needs access to it.
1712 # code (such as magics) needs access to it.
1698 self.sys_excepthook = old_excepthook
1713 self.sys_excepthook = old_excepthook
1699 outflag = 1 # happens in more places, so it's easier as default
1714 outflag = 1 # happens in more places, so it's easier as default
1700 try:
1715 try:
1701 try:
1716 try:
1702 # Embedded instances require separate global/local namespaces
1717 # Embedded instances require separate global/local namespaces
1703 # so they can see both the surrounding (local) namespace and
1718 # so they can see both the surrounding (local) namespace and
1704 # the module-level globals when called inside another function.
1719 # the module-level globals when called inside another function.
1705 if self.embedded:
1720 if self.embedded:
1706 exec code_obj in self.user_global_ns, self.user_ns
1721 exec code_obj in self.user_global_ns, self.user_ns
1707 # Normal (non-embedded) instances should only have a single
1722 # Normal (non-embedded) instances should only have a single
1708 # namespace for user code execution, otherwise functions won't
1723 # namespace for user code execution, otherwise functions won't
1709 # see interactive top-level globals.
1724 # see interactive top-level globals.
1710 else:
1725 else:
1711 exec code_obj in self.user_ns
1726 exec code_obj in self.user_ns
1712 finally:
1727 finally:
1713 # Reset our crash handler in place
1728 # Reset our crash handler in place
1714 sys.excepthook = old_excepthook
1729 sys.excepthook = old_excepthook
1715 except SystemExit:
1730 except SystemExit:
1716 self.resetbuffer()
1731 self.resetbuffer()
1717 self.showtraceback()
1732 self.showtraceback()
1718 warn("Type exit or quit to exit IPython "
1733 warn("Type exit or quit to exit IPython "
1719 "(%Exit or %Quit do so unconditionally).",level=1)
1734 "(%Exit or %Quit do so unconditionally).",level=1)
1720 except self.custom_exceptions:
1735 except self.custom_exceptions:
1721 etype,value,tb = sys.exc_info()
1736 etype,value,tb = sys.exc_info()
1722 self.CustomTB(etype,value,tb)
1737 self.CustomTB(etype,value,tb)
1723 except:
1738 except:
1724 self.showtraceback()
1739 self.showtraceback()
1725 else:
1740 else:
1726 outflag = 0
1741 outflag = 0
1727 if softspace(sys.stdout, 0):
1742 if softspace(sys.stdout, 0):
1728 print
1743 print
1729 # Flush out code object which has been run (and source)
1744 # Flush out code object which has been run (and source)
1730 self.code_to_run = None
1745 self.code_to_run = None
1731 return outflag
1746 return outflag
1732
1747
1733 def push(self, line):
1748 def push(self, line):
1734 """Push a line to the interpreter.
1749 """Push a line to the interpreter.
1735
1750
1736 The line should not have a trailing newline; it may have
1751 The line should not have a trailing newline; it may have
1737 internal newlines. The line is appended to a buffer and the
1752 internal newlines. The line is appended to a buffer and the
1738 interpreter's runsource() method is called with the
1753 interpreter's runsource() method is called with the
1739 concatenated contents of the buffer as source. If this
1754 concatenated contents of the buffer as source. If this
1740 indicates that the command was executed or invalid, the buffer
1755 indicates that the command was executed or invalid, the buffer
1741 is reset; otherwise, the command is incomplete, and the buffer
1756 is reset; otherwise, the command is incomplete, and the buffer
1742 is left as it was after the line was appended. The return
1757 is left as it was after the line was appended. The return
1743 value is 1 if more input is required, 0 if the line was dealt
1758 value is 1 if more input is required, 0 if the line was dealt
1744 with in some way (this is the same as runsource()).
1759 with in some way (this is the same as runsource()).
1745 """
1760 """
1746
1761
1747 # autoindent management should be done here, and not in the
1762 # autoindent management should be done here, and not in the
1748 # interactive loop, since that one is only seen by keyboard input. We
1763 # interactive loop, since that one is only seen by keyboard input. We
1749 # need this done correctly even for code run via runlines (which uses
1764 # need this done correctly even for code run via runlines (which uses
1750 # push).
1765 # push).
1751
1766
1752 #print 'push line: <%s>' % line # dbg
1767 #print 'push line: <%s>' % line # dbg
1753 self.autoindent_update(line)
1768 self.autoindent_update(line)
1754
1769
1755 self.buffer.append(line)
1770 self.buffer.append(line)
1756 more = self.runsource('\n'.join(self.buffer), self.filename)
1771 more = self.runsource('\n'.join(self.buffer), self.filename)
1757 if not more:
1772 if not more:
1758 self.resetbuffer()
1773 self.resetbuffer()
1759 return more
1774 return more
1760
1775
1761 def resetbuffer(self):
1776 def resetbuffer(self):
1762 """Reset the input buffer."""
1777 """Reset the input buffer."""
1763 self.buffer[:] = []
1778 self.buffer[:] = []
1764
1779
1765 def raw_input(self,prompt='',continue_prompt=False):
1780 def raw_input(self,prompt='',continue_prompt=False):
1766 """Write a prompt and read a line.
1781 """Write a prompt and read a line.
1767
1782
1768 The returned line does not include the trailing newline.
1783 The returned line does not include the trailing newline.
1769 When the user enters the EOF key sequence, EOFError is raised.
1784 When the user enters the EOF key sequence, EOFError is raised.
1770
1785
1771 Optional inputs:
1786 Optional inputs:
1772
1787
1773 - prompt(''): a string to be printed to prompt the user.
1788 - prompt(''): a string to be printed to prompt the user.
1774
1789
1775 - continue_prompt(False): whether this line is the first one or a
1790 - continue_prompt(False): whether this line is the first one or a
1776 continuation in a sequence of inputs.
1791 continuation in a sequence of inputs.
1777 """
1792 """
1778
1793
1779 line = raw_input_original(prompt)
1794 line = raw_input_original(prompt)
1780
1795
1781 # Try to be reasonably smart about not re-indenting pasted input more
1796 # Try to be reasonably smart about not re-indenting pasted input more
1782 # than necessary. We do this by trimming out the auto-indent initial
1797 # than necessary. We do this by trimming out the auto-indent initial
1783 # spaces, if the user's actual input started itself with whitespace.
1798 # spaces, if the user's actual input started itself with whitespace.
1784 #debugx('self.buffer[-1]')
1799 #debugx('self.buffer[-1]')
1785
1800
1786 if self.autoindent:
1801 if self.autoindent:
1787 if num_ini_spaces(line) > self.indent_current_nsp:
1802 if num_ini_spaces(line) > self.indent_current_nsp:
1788 line = line[self.indent_current_nsp:]
1803 line = line[self.indent_current_nsp:]
1789 self.indent_current_nsp = 0
1804 self.indent_current_nsp = 0
1790
1805
1791 # store the unfiltered input before the user has any chance to modify
1806 # store the unfiltered input before the user has any chance to modify
1792 # it.
1807 # it.
1793 if line.strip():
1808 if line.strip():
1794 if continue_prompt:
1809 if continue_prompt:
1795 self.input_hist_raw[-1] += '%s\n' % line
1810 self.input_hist_raw[-1] += '%s\n' % line
1796 else:
1811 else:
1797 self.input_hist_raw.append('%s\n' % line)
1812 self.input_hist_raw.append('%s\n' % line)
1798
1813
1799 try:
1814 try:
1800 lineout = self.prefilter(line,continue_prompt)
1815 lineout = self.prefilter(line,continue_prompt)
1801 except:
1816 except:
1802 # blanket except, in case a user-defined prefilter crashes, so it
1817 # blanket except, in case a user-defined prefilter crashes, so it
1803 # can't take all of ipython with it.
1818 # can't take all of ipython with it.
1804 self.showtraceback()
1819 self.showtraceback()
1805 return lineout
1820 return lineout
1806
1821
1807 def split_user_input(self,line):
1822 def split_user_input(self,line):
1808 """Split user input into pre-char, function part and rest."""
1823 """Split user input into pre-char, function part and rest."""
1809
1824
1810 lsplit = self.line_split.match(line)
1825 lsplit = self.line_split.match(line)
1811 if lsplit is None: # no regexp match returns None
1826 if lsplit is None: # no regexp match returns None
1812 try:
1827 try:
1813 iFun,theRest = line.split(None,1)
1828 iFun,theRest = line.split(None,1)
1814 except ValueError:
1829 except ValueError:
1815 iFun,theRest = line,''
1830 iFun,theRest = line,''
1816 pre = re.match('^(\s*)(.*)',line).groups()[0]
1831 pre = re.match('^(\s*)(.*)',line).groups()[0]
1817 else:
1832 else:
1818 pre,iFun,theRest = lsplit.groups()
1833 pre,iFun,theRest = lsplit.groups()
1819
1834
1820 #print 'line:<%s>' % line # dbg
1835 #print 'line:<%s>' % line # dbg
1821 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
1836 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
1822 return pre,iFun.strip(),theRest
1837 return pre,iFun.strip(),theRest
1823
1838
1824 def _prefilter(self, line, continue_prompt):
1839 def _prefilter(self, line, continue_prompt):
1825 """Calls different preprocessors, depending on the form of line."""
1840 """Calls different preprocessors, depending on the form of line."""
1826
1841
1827 # All handlers *must* return a value, even if it's blank ('').
1842 # All handlers *must* return a value, even if it's blank ('').
1828
1843
1829 # Lines are NOT logged here. Handlers should process the line as
1844 # Lines are NOT logged here. Handlers should process the line as
1830 # needed, update the cache AND log it (so that the input cache array
1845 # needed, update the cache AND log it (so that the input cache array
1831 # stays synced).
1846 # stays synced).
1832
1847
1833 # This function is _very_ delicate, and since it's also the one which
1848 # This function is _very_ delicate, and since it's also the one which
1834 # determines IPython's response to user input, it must be as efficient
1849 # determines IPython's response to user input, it must be as efficient
1835 # as possible. For this reason it has _many_ returns in it, trying
1850 # as possible. For this reason it has _many_ returns in it, trying
1836 # always to exit as quickly as it can figure out what it needs to do.
1851 # always to exit as quickly as it can figure out what it needs to do.
1837
1852
1838 # This function is the main responsible for maintaining IPython's
1853 # This function is the main responsible for maintaining IPython's
1839 # behavior respectful of Python's semantics. So be _very_ careful if
1854 # behavior respectful of Python's semantics. So be _very_ careful if
1840 # making changes to anything here.
1855 # making changes to anything here.
1841
1856
1842 #.....................................................................
1857 #.....................................................................
1843 # Code begins
1858 # Code begins
1844
1859
1845 #if line.startswith('%crash'): raise RuntimeError,'Crash now!' # dbg
1860 #if line.startswith('%crash'): raise RuntimeError,'Crash now!' # dbg
1846
1861
1847 # save the line away in case we crash, so the post-mortem handler can
1862 # save the line away in case we crash, so the post-mortem handler can
1848 # record it
1863 # record it
1849 self._last_input_line = line
1864 self._last_input_line = line
1850
1865
1851 #print '***line: <%s>' % line # dbg
1866 #print '***line: <%s>' % line # dbg
1852
1867
1853 # the input history needs to track even empty lines
1868 # the input history needs to track even empty lines
1854 stripped = line.strip()
1869 stripped = line.strip()
1855
1870
1856 if not stripped:
1871 if not stripped:
1857 if not continue_prompt:
1872 if not continue_prompt:
1858 self.outputcache.prompt_count -= 1
1873 self.outputcache.prompt_count -= 1
1859 return self.handle_normal(line,continue_prompt)
1874 return self.handle_normal(line,continue_prompt)
1860 #return self.handle_normal('',continue_prompt)
1875 #return self.handle_normal('',continue_prompt)
1861
1876
1862 # print '***cont',continue_prompt # dbg
1877 # print '***cont',continue_prompt # dbg
1863 # special handlers are only allowed for single line statements
1878 # special handlers are only allowed for single line statements
1864 if continue_prompt and not self.rc.multi_line_specials:
1879 if continue_prompt and not self.rc.multi_line_specials:
1865 return self.handle_normal(line,continue_prompt)
1880 return self.handle_normal(line,continue_prompt)
1866
1881
1867
1882
1868 # For the rest, we need the structure of the input
1883 # For the rest, we need the structure of the input
1869 pre,iFun,theRest = self.split_user_input(line)
1884 pre,iFun,theRest = self.split_user_input(line)
1870
1885
1871 # See whether any pre-existing handler can take care of it
1886 # See whether any pre-existing handler can take care of it
1872
1887
1873 rewritten = self.hooks.input_prefilter(stripped)
1888 rewritten = self.hooks.input_prefilter(stripped)
1874 if rewritten != stripped: # ok, some prefilter did something
1889 if rewritten != stripped: # ok, some prefilter did something
1875 rewritten = pre + rewritten # add indentation
1890 rewritten = pre + rewritten # add indentation
1876 return self.handle_normal(rewritten)
1891 return self.handle_normal(rewritten)
1877
1892
1878 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
1893 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
1879
1894
1880 # First check for explicit escapes in the last/first character
1895 # First check for explicit escapes in the last/first character
1881 handler = None
1896 handler = None
1882 if line[-1] == self.ESC_HELP:
1897 if line[-1] == self.ESC_HELP:
1883 handler = self.esc_handlers.get(line[-1]) # the ? can be at the end
1898 handler = self.esc_handlers.get(line[-1]) # the ? can be at the end
1884 if handler is None:
1899 if handler is None:
1885 # look at the first character of iFun, NOT of line, so we skip
1900 # look at the first character of iFun, NOT of line, so we skip
1886 # leading whitespace in multiline input
1901 # leading whitespace in multiline input
1887 handler = self.esc_handlers.get(iFun[0:1])
1902 handler = self.esc_handlers.get(iFun[0:1])
1888 if handler is not None:
1903 if handler is not None:
1889 return handler(line,continue_prompt,pre,iFun,theRest)
1904 return handler(line,continue_prompt,pre,iFun,theRest)
1890 # Emacs ipython-mode tags certain input lines
1905 # Emacs ipython-mode tags certain input lines
1891 if line.endswith('# PYTHON-MODE'):
1906 if line.endswith('# PYTHON-MODE'):
1892 return self.handle_emacs(line,continue_prompt)
1907 return self.handle_emacs(line,continue_prompt)
1893
1908
1894 # Next, check if we can automatically execute this thing
1909 # Next, check if we can automatically execute this thing
1895
1910
1896 # Allow ! in multi-line statements if multi_line_specials is on:
1911 # Allow ! in multi-line statements if multi_line_specials is on:
1897 if continue_prompt and self.rc.multi_line_specials and \
1912 if continue_prompt and self.rc.multi_line_specials and \
1898 iFun.startswith(self.ESC_SHELL):
1913 iFun.startswith(self.ESC_SHELL):
1899 return self.handle_shell_escape(line,continue_prompt,
1914 return self.handle_shell_escape(line,continue_prompt,
1900 pre=pre,iFun=iFun,
1915 pre=pre,iFun=iFun,
1901 theRest=theRest)
1916 theRest=theRest)
1902
1917
1903 # Let's try to find if the input line is a magic fn
1918 # Let's try to find if the input line is a magic fn
1904 oinfo = None
1919 oinfo = None
1905 if hasattr(self,'magic_'+iFun):
1920 if hasattr(self,'magic_'+iFun):
1906 # WARNING: _ofind uses getattr(), so it can consume generators and
1921 # WARNING: _ofind uses getattr(), so it can consume generators and
1907 # cause other side effects.
1922 # cause other side effects.
1908 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
1923 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
1909 if oinfo['ismagic']:
1924 if oinfo['ismagic']:
1910 # Be careful not to call magics when a variable assignment is
1925 # Be careful not to call magics when a variable assignment is
1911 # being made (ls='hi', for example)
1926 # being made (ls='hi', for example)
1912 if self.rc.automagic and \
1927 if self.rc.automagic and \
1913 (len(theRest)==0 or theRest[0] not in '!=()<>,') and \
1928 (len(theRest)==0 or theRest[0] not in '!=()<>,') and \
1914 (self.rc.multi_line_specials or not continue_prompt):
1929 (self.rc.multi_line_specials or not continue_prompt):
1915 return self.handle_magic(line,continue_prompt,
1930 return self.handle_magic(line,continue_prompt,
1916 pre,iFun,theRest)
1931 pre,iFun,theRest)
1917 else:
1932 else:
1918 return self.handle_normal(line,continue_prompt)
1933 return self.handle_normal(line,continue_prompt)
1919
1934
1920 # If the rest of the line begins with an (in)equality, assginment or
1935 # If the rest of the line begins with an (in)equality, assginment or
1921 # function call, we should not call _ofind but simply execute it.
1936 # function call, we should not call _ofind but simply execute it.
1922 # This avoids spurious geattr() accesses on objects upon assignment.
1937 # This avoids spurious geattr() accesses on objects upon assignment.
1923 #
1938 #
1924 # It also allows users to assign to either alias or magic names true
1939 # It also allows users to assign to either alias or magic names true
1925 # python variables (the magic/alias systems always take second seat to
1940 # python variables (the magic/alias systems always take second seat to
1926 # true python code).
1941 # true python code).
1927 if theRest and theRest[0] in '!=()':
1942 if theRest and theRest[0] in '!=()':
1928 return self.handle_normal(line,continue_prompt)
1943 return self.handle_normal(line,continue_prompt)
1929
1944
1930 if oinfo is None:
1945 if oinfo is None:
1931 # let's try to ensure that _oinfo is ONLY called when autocall is
1946 # let's try to ensure that _oinfo is ONLY called when autocall is
1932 # on. Since it has inevitable potential side effects, at least
1947 # on. Since it has inevitable potential side effects, at least
1933 # having autocall off should be a guarantee to the user that no
1948 # having autocall off should be a guarantee to the user that no
1934 # weird things will happen.
1949 # weird things will happen.
1935
1950
1936 if self.rc.autocall:
1951 if self.rc.autocall:
1937 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
1952 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
1938 else:
1953 else:
1939 # in this case, all that's left is either an alias or
1954 # in this case, all that's left is either an alias or
1940 # processing the line normally.
1955 # processing the line normally.
1941 if iFun in self.alias_table:
1956 if iFun in self.alias_table:
1942 # if autocall is off, by not running _ofind we won't know
1957 # if autocall is off, by not running _ofind we won't know
1943 # whether the given name may also exist in one of the
1958 # whether the given name may also exist in one of the
1944 # user's namespace. At this point, it's best to do a
1959 # user's namespace. At this point, it's best to do a
1945 # quick check just to be sure that we don't let aliases
1960 # quick check just to be sure that we don't let aliases
1946 # shadow variables.
1961 # shadow variables.
1947 head = iFun.split('.',1)[0]
1962 head = iFun.split('.',1)[0]
1948 if head in self.user_ns or head in self.internal_ns \
1963 if head in self.user_ns or head in self.internal_ns \
1949 or head in __builtin__.__dict__:
1964 or head in __builtin__.__dict__:
1950 return self.handle_normal(line,continue_prompt)
1965 return self.handle_normal(line,continue_prompt)
1951 else:
1966 else:
1952 return self.handle_alias(line,continue_prompt,
1967 return self.handle_alias(line,continue_prompt,
1953 pre,iFun,theRest)
1968 pre,iFun,theRest)
1954
1969
1955 else:
1970 else:
1956 return self.handle_normal(line,continue_prompt)
1971 return self.handle_normal(line,continue_prompt)
1957
1972
1958 if not oinfo['found']:
1973 if not oinfo['found']:
1959 return self.handle_normal(line,continue_prompt)
1974 return self.handle_normal(line,continue_prompt)
1960 else:
1975 else:
1961 #print 'pre<%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
1976 #print 'pre<%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
1962 if oinfo['isalias']:
1977 if oinfo['isalias']:
1963 return self.handle_alias(line,continue_prompt,
1978 return self.handle_alias(line,continue_prompt,
1964 pre,iFun,theRest)
1979 pre,iFun,theRest)
1965
1980
1966 if (self.rc.autocall
1981 if (self.rc.autocall
1967 and
1982 and
1968 (
1983 (
1969 #only consider exclusion re if not "," or ";" autoquoting
1984 #only consider exclusion re if not "," or ";" autoquoting
1970 (pre == self.ESC_QUOTE or pre == self.ESC_QUOTE2
1985 (pre == self.ESC_QUOTE or pre == self.ESC_QUOTE2
1971 or pre == self.ESC_PAREN) or
1986 or pre == self.ESC_PAREN) or
1972 (not self.re_exclude_auto.match(theRest)))
1987 (not self.re_exclude_auto.match(theRest)))
1973 and
1988 and
1974 self.re_fun_name.match(iFun) and
1989 self.re_fun_name.match(iFun) and
1975 callable(oinfo['obj'])) :
1990 callable(oinfo['obj'])) :
1976 #print 'going auto' # dbg
1991 #print 'going auto' # dbg
1977 return self.handle_auto(line,continue_prompt,
1992 return self.handle_auto(line,continue_prompt,
1978 pre,iFun,theRest,oinfo['obj'])
1993 pre,iFun,theRest,oinfo['obj'])
1979 else:
1994 else:
1980 #print 'was callable?', callable(oinfo['obj']) # dbg
1995 #print 'was callable?', callable(oinfo['obj']) # dbg
1981 return self.handle_normal(line,continue_prompt)
1996 return self.handle_normal(line,continue_prompt)
1982
1997
1983 # If we get here, we have a normal Python line. Log and return.
1998 # If we get here, we have a normal Python line. Log and return.
1984 return self.handle_normal(line,continue_prompt)
1999 return self.handle_normal(line,continue_prompt)
1985
2000
1986 def _prefilter_dumb(self, line, continue_prompt):
2001 def _prefilter_dumb(self, line, continue_prompt):
1987 """simple prefilter function, for debugging"""
2002 """simple prefilter function, for debugging"""
1988 return self.handle_normal(line,continue_prompt)
2003 return self.handle_normal(line,continue_prompt)
1989
2004
1990 # Set the default prefilter() function (this can be user-overridden)
2005 # Set the default prefilter() function (this can be user-overridden)
1991 prefilter = _prefilter
2006 prefilter = _prefilter
1992
2007
1993 def handle_normal(self,line,continue_prompt=None,
2008 def handle_normal(self,line,continue_prompt=None,
1994 pre=None,iFun=None,theRest=None):
2009 pre=None,iFun=None,theRest=None):
1995 """Handle normal input lines. Use as a template for handlers."""
2010 """Handle normal input lines. Use as a template for handlers."""
1996
2011
1997 # With autoindent on, we need some way to exit the input loop, and I
2012 # With autoindent on, we need some way to exit the input loop, and I
1998 # don't want to force the user to have to backspace all the way to
2013 # don't want to force the user to have to backspace all the way to
1999 # clear the line. The rule will be in this case, that either two
2014 # clear the line. The rule will be in this case, that either two
2000 # lines of pure whitespace in a row, or a line of pure whitespace but
2015 # lines of pure whitespace in a row, or a line of pure whitespace but
2001 # of a size different to the indent level, will exit the input loop.
2016 # of a size different to the indent level, will exit the input loop.
2002
2017
2003 if (continue_prompt and self.autoindent and line.isspace() and
2018 if (continue_prompt and self.autoindent and line.isspace() and
2004 (0 < abs(len(line) - self.indent_current_nsp) <= 2 or
2019 (0 < abs(len(line) - self.indent_current_nsp) <= 2 or
2005 (self.buffer[-1]).isspace() )):
2020 (self.buffer[-1]).isspace() )):
2006 line = ''
2021 line = ''
2007
2022
2008 self.log(line,continue_prompt)
2023 self.log(line,continue_prompt)
2009 return line
2024 return line
2010
2025
2011 def handle_alias(self,line,continue_prompt=None,
2026 def handle_alias(self,line,continue_prompt=None,
2012 pre=None,iFun=None,theRest=None):
2027 pre=None,iFun=None,theRest=None):
2013 """Handle alias input lines. """
2028 """Handle alias input lines. """
2014
2029
2015 # pre is needed, because it carries the leading whitespace. Otherwise
2030 # pre is needed, because it carries the leading whitespace. Otherwise
2016 # aliases won't work in indented sections.
2031 # aliases won't work in indented sections.
2017 transformed = self.transform_alias(iFun, theRest)
2032 transformed = self.transform_alias(iFun, theRest)
2018 line_out = '%s_ip.system(%s)' % (pre, make_quoted_expr( transformed ))
2033 line_out = '%s_ip.system(%s)' % (pre, make_quoted_expr( transformed ))
2019 self.log(line_out,continue_prompt)
2034 self.log(line_out,continue_prompt)
2020 return line_out
2035 return line_out
2021
2036
2022 def handle_shell_escape(self, line, continue_prompt=None,
2037 def handle_shell_escape(self, line, continue_prompt=None,
2023 pre=None,iFun=None,theRest=None):
2038 pre=None,iFun=None,theRest=None):
2024 """Execute the line in a shell, empty return value"""
2039 """Execute the line in a shell, empty return value"""
2025
2040
2026 #print 'line in :', `line` # dbg
2041 #print 'line in :', `line` # dbg
2027 # Example of a special handler. Others follow a similar pattern.
2042 # Example of a special handler. Others follow a similar pattern.
2028 if line.lstrip().startswith('!!'):
2043 if line.lstrip().startswith('!!'):
2029 # rewrite iFun/theRest to properly hold the call to %sx and
2044 # rewrite iFun/theRest to properly hold the call to %sx and
2030 # the actual command to be executed, so handle_magic can work
2045 # the actual command to be executed, so handle_magic can work
2031 # correctly
2046 # correctly
2032 theRest = '%s %s' % (iFun[2:],theRest)
2047 theRest = '%s %s' % (iFun[2:],theRest)
2033 iFun = 'sx'
2048 iFun = 'sx'
2034 return self.handle_magic('%ssx %s' % (self.ESC_MAGIC,
2049 return self.handle_magic('%ssx %s' % (self.ESC_MAGIC,
2035 line.lstrip()[2:]),
2050 line.lstrip()[2:]),
2036 continue_prompt,pre,iFun,theRest)
2051 continue_prompt,pre,iFun,theRest)
2037 else:
2052 else:
2038 cmd=line.lstrip().lstrip('!')
2053 cmd=line.lstrip().lstrip('!')
2039 line_out = '%s_ip.system(%s)' % (pre,make_quoted_expr(cmd))
2054 line_out = '%s_ip.system(%s)' % (pre,make_quoted_expr(cmd))
2040 # update cache/log and return
2055 # update cache/log and return
2041 self.log(line_out,continue_prompt)
2056 self.log(line_out,continue_prompt)
2042 return line_out
2057 return line_out
2043
2058
2044 def handle_magic(self, line, continue_prompt=None,
2059 def handle_magic(self, line, continue_prompt=None,
2045 pre=None,iFun=None,theRest=None):
2060 pre=None,iFun=None,theRest=None):
2046 """Execute magic functions."""
2061 """Execute magic functions."""
2047
2062
2048
2063
2049 cmd = '%s_ip.magic(%s)' % (pre,make_quoted_expr(iFun + " " + theRest))
2064 cmd = '%s_ip.magic(%s)' % (pre,make_quoted_expr(iFun + " " + theRest))
2050 self.log(cmd,continue_prompt)
2065 self.log(cmd,continue_prompt)
2051 #print 'in handle_magic, cmd=<%s>' % cmd # dbg
2066 #print 'in handle_magic, cmd=<%s>' % cmd # dbg
2052 return cmd
2067 return cmd
2053
2068
2054 def handle_auto(self, line, continue_prompt=None,
2069 def handle_auto(self, line, continue_prompt=None,
2055 pre=None,iFun=None,theRest=None,obj=None):
2070 pre=None,iFun=None,theRest=None,obj=None):
2056 """Hande lines which can be auto-executed, quoting if requested."""
2071 """Hande lines which can be auto-executed, quoting if requested."""
2057
2072
2058 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2073 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2059
2074
2060 # This should only be active for single-line input!
2075 # This should only be active for single-line input!
2061 if continue_prompt:
2076 if continue_prompt:
2062 self.log(line,continue_prompt)
2077 self.log(line,continue_prompt)
2063 return line
2078 return line
2064
2079
2065 auto_rewrite = True
2080 auto_rewrite = True
2066
2081
2067 if pre == self.ESC_QUOTE:
2082 if pre == self.ESC_QUOTE:
2068 # Auto-quote splitting on whitespace
2083 # Auto-quote splitting on whitespace
2069 newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) )
2084 newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) )
2070 elif pre == self.ESC_QUOTE2:
2085 elif pre == self.ESC_QUOTE2:
2071 # Auto-quote whole string
2086 # Auto-quote whole string
2072 newcmd = '%s("%s")' % (iFun,theRest)
2087 newcmd = '%s("%s")' % (iFun,theRest)
2073 elif pre == self.ESC_PAREN:
2088 elif pre == self.ESC_PAREN:
2074 newcmd = '%s(%s)' % (iFun,",".join(theRest.split()))
2089 newcmd = '%s(%s)' % (iFun,",".join(theRest.split()))
2075 else:
2090 else:
2076 # Auto-paren.
2091 # Auto-paren.
2077 # We only apply it to argument-less calls if the autocall
2092 # We only apply it to argument-less calls if the autocall
2078 # parameter is set to 2. We only need to check that autocall is <
2093 # parameter is set to 2. We only need to check that autocall is <
2079 # 2, since this function isn't called unless it's at least 1.
2094 # 2, since this function isn't called unless it's at least 1.
2080 if not theRest and (self.rc.autocall < 2):
2095 if not theRest and (self.rc.autocall < 2):
2081 newcmd = '%s %s' % (iFun,theRest)
2096 newcmd = '%s %s' % (iFun,theRest)
2082 auto_rewrite = False
2097 auto_rewrite = False
2083 else:
2098 else:
2084 if theRest.startswith('['):
2099 if theRest.startswith('['):
2085 if hasattr(obj,'__getitem__'):
2100 if hasattr(obj,'__getitem__'):
2086 # Don't autocall in this case: item access for an object
2101 # Don't autocall in this case: item access for an object
2087 # which is BOTH callable and implements __getitem__.
2102 # which is BOTH callable and implements __getitem__.
2088 newcmd = '%s %s' % (iFun,theRest)
2103 newcmd = '%s %s' % (iFun,theRest)
2089 auto_rewrite = False
2104 auto_rewrite = False
2090 else:
2105 else:
2091 # if the object doesn't support [] access, go ahead and
2106 # if the object doesn't support [] access, go ahead and
2092 # autocall
2107 # autocall
2093 newcmd = '%s(%s)' % (iFun.rstrip(),theRest)
2108 newcmd = '%s(%s)' % (iFun.rstrip(),theRest)
2094 elif theRest.endswith(';'):
2109 elif theRest.endswith(';'):
2095 newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1])
2110 newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1])
2096 else:
2111 else:
2097 newcmd = '%s(%s)' % (iFun.rstrip(), theRest)
2112 newcmd = '%s(%s)' % (iFun.rstrip(), theRest)
2098
2113
2099 if auto_rewrite:
2114 if auto_rewrite:
2100 print >>Term.cout, self.outputcache.prompt1.auto_rewrite() + newcmd
2115 print >>Term.cout, self.outputcache.prompt1.auto_rewrite() + newcmd
2101 # log what is now valid Python, not the actual user input (without the
2116 # log what is now valid Python, not the actual user input (without the
2102 # final newline)
2117 # final newline)
2103 self.log(newcmd,continue_prompt)
2118 self.log(newcmd,continue_prompt)
2104 return newcmd
2119 return newcmd
2105
2120
2106 def handle_help(self, line, continue_prompt=None,
2121 def handle_help(self, line, continue_prompt=None,
2107 pre=None,iFun=None,theRest=None):
2122 pre=None,iFun=None,theRest=None):
2108 """Try to get some help for the object.
2123 """Try to get some help for the object.
2109
2124
2110 obj? or ?obj -> basic information.
2125 obj? or ?obj -> basic information.
2111 obj?? or ??obj -> more details.
2126 obj?? or ??obj -> more details.
2112 """
2127 """
2113
2128
2114 # We need to make sure that we don't process lines which would be
2129 # We need to make sure that we don't process lines which would be
2115 # otherwise valid python, such as "x=1 # what?"
2130 # otherwise valid python, such as "x=1 # what?"
2116 try:
2131 try:
2117 codeop.compile_command(line)
2132 codeop.compile_command(line)
2118 except SyntaxError:
2133 except SyntaxError:
2119 # We should only handle as help stuff which is NOT valid syntax
2134 # We should only handle as help stuff which is NOT valid syntax
2120 if line[0]==self.ESC_HELP:
2135 if line[0]==self.ESC_HELP:
2121 line = line[1:]
2136 line = line[1:]
2122 elif line[-1]==self.ESC_HELP:
2137 elif line[-1]==self.ESC_HELP:
2123 line = line[:-1]
2138 line = line[:-1]
2124 self.log('#?'+line)
2139 self.log('#?'+line)
2125 if line:
2140 if line:
2126 self.magic_pinfo(line)
2141 self.magic_pinfo(line)
2127 else:
2142 else:
2128 page(self.usage,screen_lines=self.rc.screen_length)
2143 page(self.usage,screen_lines=self.rc.screen_length)
2129 return '' # Empty string is needed here!
2144 return '' # Empty string is needed here!
2130 except:
2145 except:
2131 # Pass any other exceptions through to the normal handler
2146 # Pass any other exceptions through to the normal handler
2132 return self.handle_normal(line,continue_prompt)
2147 return self.handle_normal(line,continue_prompt)
2133 else:
2148 else:
2134 # If the code compiles ok, we should handle it normally
2149 # If the code compiles ok, we should handle it normally
2135 return self.handle_normal(line,continue_prompt)
2150 return self.handle_normal(line,continue_prompt)
2136
2151
2137 def getapi(self):
2152 def getapi(self):
2138 """ Get an IPApi object for this shell instance
2153 """ Get an IPApi object for this shell instance
2139
2154
2140 Getting an IPApi object is always preferable to accessing the shell
2155 Getting an IPApi object is always preferable to accessing the shell
2141 directly, but this holds true especially for extensions.
2156 directly, but this holds true especially for extensions.
2142
2157
2143 It should always be possible to implement an extension with IPApi
2158 It should always be possible to implement an extension with IPApi
2144 alone. If not, contact maintainer to request an addition.
2159 alone. If not, contact maintainer to request an addition.
2145
2160
2146 """
2161 """
2147 return self.api
2162 return self.api
2148
2163
2149 def handle_emacs(self,line,continue_prompt=None,
2164 def handle_emacs(self,line,continue_prompt=None,
2150 pre=None,iFun=None,theRest=None):
2165 pre=None,iFun=None,theRest=None):
2151 """Handle input lines marked by python-mode."""
2166 """Handle input lines marked by python-mode."""
2152
2167
2153 # Currently, nothing is done. Later more functionality can be added
2168 # Currently, nothing is done. Later more functionality can be added
2154 # here if needed.
2169 # here if needed.
2155
2170
2156 # The input cache shouldn't be updated
2171 # The input cache shouldn't be updated
2157
2172
2158 return line
2173 return line
2159
2174
2160 def mktempfile(self,data=None):
2175 def mktempfile(self,data=None):
2161 """Make a new tempfile and return its filename.
2176 """Make a new tempfile and return its filename.
2162
2177
2163 This makes a call to tempfile.mktemp, but it registers the created
2178 This makes a call to tempfile.mktemp, but it registers the created
2164 filename internally so ipython cleans it up at exit time.
2179 filename internally so ipython cleans it up at exit time.
2165
2180
2166 Optional inputs:
2181 Optional inputs:
2167
2182
2168 - data(None): if data is given, it gets written out to the temp file
2183 - data(None): if data is given, it gets written out to the temp file
2169 immediately, and the file is closed again."""
2184 immediately, and the file is closed again."""
2170
2185
2171 filename = tempfile.mktemp('.py','ipython_edit_')
2186 filename = tempfile.mktemp('.py','ipython_edit_')
2172 self.tempfiles.append(filename)
2187 self.tempfiles.append(filename)
2173
2188
2174 if data:
2189 if data:
2175 tmp_file = open(filename,'w')
2190 tmp_file = open(filename,'w')
2176 tmp_file.write(data)
2191 tmp_file.write(data)
2177 tmp_file.close()
2192 tmp_file.close()
2178 return filename
2193 return filename
2179
2194
2180 def write(self,data):
2195 def write(self,data):
2181 """Write a string to the default output"""
2196 """Write a string to the default output"""
2182 Term.cout.write(data)
2197 Term.cout.write(data)
2183
2198
2184 def write_err(self,data):
2199 def write_err(self,data):
2185 """Write a string to the default error output"""
2200 """Write a string to the default error output"""
2186 Term.cerr.write(data)
2201 Term.cerr.write(data)
2187
2202
2188 def exit(self):
2203 def exit(self):
2189 """Handle interactive exit.
2204 """Handle interactive exit.
2190
2205
2191 This method sets the exit_now attribute."""
2206 This method sets the exit_now attribute."""
2192
2207
2193 if self.rc.confirm_exit:
2208 if self.rc.confirm_exit:
2194 if ask_yes_no('Do you really want to exit ([y]/n)?','y'):
2209 if ask_yes_no('Do you really want to exit ([y]/n)?','y'):
2195 self.exit_now = True
2210 self.exit_now = True
2196 else:
2211 else:
2197 self.exit_now = True
2212 self.exit_now = True
2198 return self.exit_now
2213 return self.exit_now
2199
2214
2200 def safe_execfile(self,fname,*where,**kw):
2215 def safe_execfile(self,fname,*where,**kw):
2201 fname = os.path.expanduser(fname)
2216 fname = os.path.expanduser(fname)
2202
2217
2203 # find things also in current directory
2218 # find things also in current directory
2204 dname = os.path.dirname(fname)
2219 dname = os.path.dirname(fname)
2205 if not sys.path.count(dname):
2220 if not sys.path.count(dname):
2206 sys.path.append(dname)
2221 sys.path.append(dname)
2207
2222
2208 try:
2223 try:
2209 xfile = open(fname)
2224 xfile = open(fname)
2210 except:
2225 except:
2211 print >> Term.cerr, \
2226 print >> Term.cerr, \
2212 'Could not open file <%s> for safe execution.' % fname
2227 'Could not open file <%s> for safe execution.' % fname
2213 return None
2228 return None
2214
2229
2215 kw.setdefault('islog',0)
2230 kw.setdefault('islog',0)
2216 kw.setdefault('quiet',1)
2231 kw.setdefault('quiet',1)
2217 kw.setdefault('exit_ignore',0)
2232 kw.setdefault('exit_ignore',0)
2218 first = xfile.readline()
2233 first = xfile.readline()
2219 loghead = str(self.loghead_tpl).split('\n',1)[0].strip()
2234 loghead = str(self.loghead_tpl).split('\n',1)[0].strip()
2220 xfile.close()
2235 xfile.close()
2221 # line by line execution
2236 # line by line execution
2222 if first.startswith(loghead) or kw['islog']:
2237 if first.startswith(loghead) or kw['islog']:
2223 print 'Loading log file <%s> one line at a time...' % fname
2238 print 'Loading log file <%s> one line at a time...' % fname
2224 if kw['quiet']:
2239 if kw['quiet']:
2225 stdout_save = sys.stdout
2240 stdout_save = sys.stdout
2226 sys.stdout = StringIO.StringIO()
2241 sys.stdout = StringIO.StringIO()
2227 try:
2242 try:
2228 globs,locs = where[0:2]
2243 globs,locs = where[0:2]
2229 except:
2244 except:
2230 try:
2245 try:
2231 globs = locs = where[0]
2246 globs = locs = where[0]
2232 except:
2247 except:
2233 globs = locs = globals()
2248 globs = locs = globals()
2234 badblocks = []
2249 badblocks = []
2235
2250
2236 # we also need to identify indented blocks of code when replaying
2251 # we also need to identify indented blocks of code when replaying
2237 # logs and put them together before passing them to an exec
2252 # logs and put them together before passing them to an exec
2238 # statement. This takes a bit of regexp and look-ahead work in the
2253 # statement. This takes a bit of regexp and look-ahead work in the
2239 # file. It's easiest if we swallow the whole thing in memory
2254 # file. It's easiest if we swallow the whole thing in memory
2240 # first, and manually walk through the lines list moving the
2255 # first, and manually walk through the lines list moving the
2241 # counter ourselves.
2256 # counter ourselves.
2242 indent_re = re.compile('\s+\S')
2257 indent_re = re.compile('\s+\S')
2243 xfile = open(fname)
2258 xfile = open(fname)
2244 filelines = xfile.readlines()
2259 filelines = xfile.readlines()
2245 xfile.close()
2260 xfile.close()
2246 nlines = len(filelines)
2261 nlines = len(filelines)
2247 lnum = 0
2262 lnum = 0
2248 while lnum < nlines:
2263 while lnum < nlines:
2249 line = filelines[lnum]
2264 line = filelines[lnum]
2250 lnum += 1
2265 lnum += 1
2251 # don't re-insert logger status info into cache
2266 # don't re-insert logger status info into cache
2252 if line.startswith('#log#'):
2267 if line.startswith('#log#'):
2253 continue
2268 continue
2254 else:
2269 else:
2255 # build a block of code (maybe a single line) for execution
2270 # build a block of code (maybe a single line) for execution
2256 block = line
2271 block = line
2257 try:
2272 try:
2258 next = filelines[lnum] # lnum has already incremented
2273 next = filelines[lnum] # lnum has already incremented
2259 except:
2274 except:
2260 next = None
2275 next = None
2261 while next and indent_re.match(next):
2276 while next and indent_re.match(next):
2262 block += next
2277 block += next
2263 lnum += 1
2278 lnum += 1
2264 try:
2279 try:
2265 next = filelines[lnum]
2280 next = filelines[lnum]
2266 except:
2281 except:
2267 next = None
2282 next = None
2268 # now execute the block of one or more lines
2283 # now execute the block of one or more lines
2269 try:
2284 try:
2270 exec block in globs,locs
2285 exec block in globs,locs
2271 except SystemExit:
2286 except SystemExit:
2272 pass
2287 pass
2273 except:
2288 except:
2274 badblocks.append(block.rstrip())
2289 badblocks.append(block.rstrip())
2275 if kw['quiet']: # restore stdout
2290 if kw['quiet']: # restore stdout
2276 sys.stdout.close()
2291 sys.stdout.close()
2277 sys.stdout = stdout_save
2292 sys.stdout = stdout_save
2278 print 'Finished replaying log file <%s>' % fname
2293 print 'Finished replaying log file <%s>' % fname
2279 if badblocks:
2294 if badblocks:
2280 print >> sys.stderr, ('\nThe following lines/blocks in file '
2295 print >> sys.stderr, ('\nThe following lines/blocks in file '
2281 '<%s> reported errors:' % fname)
2296 '<%s> reported errors:' % fname)
2282
2297
2283 for badline in badblocks:
2298 for badline in badblocks:
2284 print >> sys.stderr, badline
2299 print >> sys.stderr, badline
2285 else: # regular file execution
2300 else: # regular file execution
2286 try:
2301 try:
2287 execfile(fname,*where)
2302 execfile(fname,*where)
2288 except SyntaxError:
2303 except SyntaxError:
2289 self.showsyntaxerror()
2304 self.showsyntaxerror()
2290 warn('Failure executing file: <%s>' % fname)
2305 warn('Failure executing file: <%s>' % fname)
2291 except SystemExit,status:
2306 except SystemExit,status:
2292 if not kw['exit_ignore']:
2307 if not kw['exit_ignore']:
2293 self.showtraceback()
2308 self.showtraceback()
2294 warn('Failure executing file: <%s>' % fname)
2309 warn('Failure executing file: <%s>' % fname)
2295 except:
2310 except:
2296 self.showtraceback()
2311 self.showtraceback()
2297 warn('Failure executing file: <%s>' % fname)
2312 warn('Failure executing file: <%s>' % fname)
2298
2313
2299 #************************* end of file <iplib.py> *****************************
2314 #************************* end of file <iplib.py> *****************************
@@ -1,5469 +1,5474 b''
1 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
1 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
2
2
3 * IPython/iplib.py (InteractiveShell.__init__): add check for the
4 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
5 recognize the option. After a bug report by Will Maier. This
6 closes #64 (will do it after confirmation from W. Maier).
7
3 * IPython/irunner.py: New module to run scripts as if manually
8 * IPython/irunner.py: New module to run scripts as if manually
4 typed into an interactive environment, based on pexpect. After a
9 typed into an interactive environment, based on pexpect. After a
5 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
10 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
6 ipython-user list. Simple unittests in the tests/ directory.
11 ipython-user list. Simple unittests in the tests/ directory.
7
12
8 * tools/release: add Will Maier, OpenBSD port maintainer, to
13 * tools/release: add Will Maier, OpenBSD port maintainer, to
9 recepients list. We are now officially part of the OpenBSD ports:
14 recepients list. We are now officially part of the OpenBSD ports:
10 http://www.openbsd.org/ports.html ! Many thanks to Will for the
15 http://www.openbsd.org/ports.html ! Many thanks to Will for the
11 work.
16 work.
12
17
13 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
18 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
14
19
15 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
20 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
16 so that it doesn't break tkinter apps.
21 so that it doesn't break tkinter apps.
17
22
18 * IPython/iplib.py (_prefilter): fix bug where aliases would
23 * IPython/iplib.py (_prefilter): fix bug where aliases would
19 shadow variables when autocall was fully off. Reported by SAGE
24 shadow variables when autocall was fully off. Reported by SAGE
20 author William Stein.
25 author William Stein.
21
26
22 * IPython/OInspect.py (Inspector.__init__): add a flag to control
27 * IPython/OInspect.py (Inspector.__init__): add a flag to control
23 at what detail level strings are computed when foo? is requested.
28 at what detail level strings are computed when foo? is requested.
24 This allows users to ask for example that the string form of an
29 This allows users to ask for example that the string form of an
25 object is only computed when foo?? is called, or even never, by
30 object is only computed when foo?? is called, or even never, by
26 setting the object_info_string_level >= 2 in the configuration
31 setting the object_info_string_level >= 2 in the configuration
27 file. This new option has been added and documented. After a
32 file. This new option has been added and documented. After a
28 request by SAGE to be able to control the printing of very large
33 request by SAGE to be able to control the printing of very large
29 objects more easily.
34 objects more easily.
30
35
31 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
36 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
32
37
33 * IPython/ipmaker.py (make_IPython): remove the ipython call path
38 * IPython/ipmaker.py (make_IPython): remove the ipython call path
34 from sys.argv, to be 100% consistent with how Python itself works
39 from sys.argv, to be 100% consistent with how Python itself works
35 (as seen for example with python -i file.py). After a bug report
40 (as seen for example with python -i file.py). After a bug report
36 by Jeffrey Collins.
41 by Jeffrey Collins.
37
42
38 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
43 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
39 nasty bug which was preventing custom namespaces with -pylab,
44 nasty bug which was preventing custom namespaces with -pylab,
40 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
45 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
41 compatibility (long gone from mpl).
46 compatibility (long gone from mpl).
42
47
43 * IPython/ipapi.py (make_session): name change: create->make. We
48 * IPython/ipapi.py (make_session): name change: create->make. We
44 use make in other places (ipmaker,...), it's shorter and easier to
49 use make in other places (ipmaker,...), it's shorter and easier to
45 type and say, etc. I'm trying to clean things before 0.7.2 so
50 type and say, etc. I'm trying to clean things before 0.7.2 so
46 that I can keep things stable wrt to ipapi in the chainsaw branch.
51 that I can keep things stable wrt to ipapi in the chainsaw branch.
47
52
48 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
53 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
49 python-mode recognizes our debugger mode. Add support for
54 python-mode recognizes our debugger mode. Add support for
50 autoindent inside (X)emacs. After a patch sent in by Jin Liu
55 autoindent inside (X)emacs. After a patch sent in by Jin Liu
51 <m.liu.jin-AT-gmail.com> originally written by
56 <m.liu.jin-AT-gmail.com> originally written by
52 doxgen-AT-newsmth.net (with minor modifications for xemacs
57 doxgen-AT-newsmth.net (with minor modifications for xemacs
53 compatibility)
58 compatibility)
54
59
55 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
60 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
56 tracebacks when walking the stack so that the stack tracking system
61 tracebacks when walking the stack so that the stack tracking system
57 in emacs' python-mode can identify the frames correctly.
62 in emacs' python-mode can identify the frames correctly.
58
63
59 * IPython/ipmaker.py (make_IPython): make the internal (and
64 * IPython/ipmaker.py (make_IPython): make the internal (and
60 default config) autoedit_syntax value false by default. Too many
65 default config) autoedit_syntax value false by default. Too many
61 users have complained to me (both on and off-list) about problems
66 users have complained to me (both on and off-list) about problems
62 with this option being on by default, so I'm making it default to
67 with this option being on by default, so I'm making it default to
63 off. It can still be enabled by anyone via the usual mechanisms.
68 off. It can still be enabled by anyone via the usual mechanisms.
64
69
65 * IPython/completer.py (Completer.attr_matches): add support for
70 * IPython/completer.py (Completer.attr_matches): add support for
66 PyCrust-style _getAttributeNames magic method. Patch contributed
71 PyCrust-style _getAttributeNames magic method. Patch contributed
67 by <mscott-AT-goldenspud.com>. Closes #50.
72 by <mscott-AT-goldenspud.com>. Closes #50.
68
73
69 * IPython/iplib.py (InteractiveShell.__init__): remove the
74 * IPython/iplib.py (InteractiveShell.__init__): remove the
70 deletion of exit/quit from __builtin__, which can break
75 deletion of exit/quit from __builtin__, which can break
71 third-party tools like the Zope debugging console. The
76 third-party tools like the Zope debugging console. The
72 %exit/%quit magics remain. In general, it's probably a good idea
77 %exit/%quit magics remain. In general, it's probably a good idea
73 not to delete anything from __builtin__, since we never know what
78 not to delete anything from __builtin__, since we never know what
74 that will break. In any case, python now (for 2.5) will support
79 that will break. In any case, python now (for 2.5) will support
75 'real' exit/quit, so this issue is moot. Closes #55.
80 'real' exit/quit, so this issue is moot. Closes #55.
76
81
77 * IPython/genutils.py (with_obj): rename the 'with' function to
82 * IPython/genutils.py (with_obj): rename the 'with' function to
78 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
83 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
79 becomes a language keyword. Closes #53.
84 becomes a language keyword. Closes #53.
80
85
81 * IPython/FakeModule.py (FakeModule.__init__): add a proper
86 * IPython/FakeModule.py (FakeModule.__init__): add a proper
82 __file__ attribute to this so it fools more things into thinking
87 __file__ attribute to this so it fools more things into thinking
83 it is a real module. Closes #59.
88 it is a real module. Closes #59.
84
89
85 * IPython/Magic.py (magic_edit): add -n option to open the editor
90 * IPython/Magic.py (magic_edit): add -n option to open the editor
86 at a specific line number. After a patch by Stefan van der Walt.
91 at a specific line number. After a patch by Stefan van der Walt.
87
92
88 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
93 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
89
94
90 * IPython/iplib.py (edit_syntax_error): fix crash when for some
95 * IPython/iplib.py (edit_syntax_error): fix crash when for some
91 reason the file could not be opened. After automatic crash
96 reason the file could not be opened. After automatic crash
92 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
97 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
93 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
98 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
94 (_should_recompile): Don't fire editor if using %bg, since there
99 (_should_recompile): Don't fire editor if using %bg, since there
95 is no file in the first place. From the same report as above.
100 is no file in the first place. From the same report as above.
96 (raw_input): protect against faulty third-party prefilters. After
101 (raw_input): protect against faulty third-party prefilters. After
97 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
102 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
98 while running under SAGE.
103 while running under SAGE.
99
104
100 2006-05-23 Ville Vainio <vivainio@gmail.com>
105 2006-05-23 Ville Vainio <vivainio@gmail.com>
101
106
102 * ipapi.py: Stripped down ip.to_user_ns() to work only as
107 * ipapi.py: Stripped down ip.to_user_ns() to work only as
103 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
108 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
104 now returns None (again), unless dummy is specifically allowed by
109 now returns None (again), unless dummy is specifically allowed by
105 ipapi.get(allow_dummy=True).
110 ipapi.get(allow_dummy=True).
106
111
107 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
112 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
108
113
109 * IPython: remove all 2.2-compatibility objects and hacks from
114 * IPython: remove all 2.2-compatibility objects and hacks from
110 everywhere, since we only support 2.3 at this point. Docs
115 everywhere, since we only support 2.3 at this point. Docs
111 updated.
116 updated.
112
117
113 * IPython/ipapi.py (IPApi.__init__): Clean up of all getters.
118 * IPython/ipapi.py (IPApi.__init__): Clean up of all getters.
114 Anything requiring extra validation can be turned into a Python
119 Anything requiring extra validation can be turned into a Python
115 property in the future. I used a property for the db one b/c
120 property in the future. I used a property for the db one b/c
116 there was a nasty circularity problem with the initialization
121 there was a nasty circularity problem with the initialization
117 order, which right now I don't have time to clean up.
122 order, which right now I don't have time to clean up.
118
123
119 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
124 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
120 another locking bug reported by Jorgen. I'm not 100% sure though,
125 another locking bug reported by Jorgen. I'm not 100% sure though,
121 so more testing is needed...
126 so more testing is needed...
122
127
123 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
128 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
124
129
125 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
130 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
126 local variables from any routine in user code (typically executed
131 local variables from any routine in user code (typically executed
127 with %run) directly into the interactive namespace. Very useful
132 with %run) directly into the interactive namespace. Very useful
128 when doing complex debugging.
133 when doing complex debugging.
129 (IPythonNotRunning): Changed the default None object to a dummy
134 (IPythonNotRunning): Changed the default None object to a dummy
130 whose attributes can be queried as well as called without
135 whose attributes can be queried as well as called without
131 exploding, to ease writing code which works transparently both in
136 exploding, to ease writing code which works transparently both in
132 and out of ipython and uses some of this API.
137 and out of ipython and uses some of this API.
133
138
134 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
139 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
135
140
136 * IPython/hooks.py (result_display): Fix the fact that our display
141 * IPython/hooks.py (result_display): Fix the fact that our display
137 hook was using str() instead of repr(), as the default python
142 hook was using str() instead of repr(), as the default python
138 console does. This had gone unnoticed b/c it only happened if
143 console does. This had gone unnoticed b/c it only happened if
139 %Pprint was off, but the inconsistency was there.
144 %Pprint was off, but the inconsistency was there.
140
145
141 2006-05-15 Ville Vainio <vivainio@gmail.com>
146 2006-05-15 Ville Vainio <vivainio@gmail.com>
142
147
143 * Oinspect.py: Only show docstring for nonexisting/binary files
148 * Oinspect.py: Only show docstring for nonexisting/binary files
144 when doing object??, closing ticket #62
149 when doing object??, closing ticket #62
145
150
146 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
151 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
147
152
148 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
153 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
149 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
154 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
150 was being released in a routine which hadn't checked if it had
155 was being released in a routine which hadn't checked if it had
151 been the one to acquire it.
156 been the one to acquire it.
152
157
153 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
158 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
154
159
155 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
160 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
156
161
157 2006-04-11 Ville Vainio <vivainio@gmail.com>
162 2006-04-11 Ville Vainio <vivainio@gmail.com>
158
163
159 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
164 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
160 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
165 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
161 prefilters, allowing stuff like magics and aliases in the file.
166 prefilters, allowing stuff like magics and aliases in the file.
162
167
163 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
168 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
164 added. Supported now are "%clear in" and "%clear out" (clear input and
169 added. Supported now are "%clear in" and "%clear out" (clear input and
165 output history, respectively). Also fixed CachedOutput.flush to
170 output history, respectively). Also fixed CachedOutput.flush to
166 properly flush the output cache.
171 properly flush the output cache.
167
172
168 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
173 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
169 half-success (and fail explicitly).
174 half-success (and fail explicitly).
170
175
171 2006-03-28 Ville Vainio <vivainio@gmail.com>
176 2006-03-28 Ville Vainio <vivainio@gmail.com>
172
177
173 * iplib.py: Fix quoting of aliases so that only argless ones
178 * iplib.py: Fix quoting of aliases so that only argless ones
174 are quoted
179 are quoted
175
180
176 2006-03-28 Ville Vainio <vivainio@gmail.com>
181 2006-03-28 Ville Vainio <vivainio@gmail.com>
177
182
178 * iplib.py: Quote aliases with spaces in the name.
183 * iplib.py: Quote aliases with spaces in the name.
179 "c:\program files\blah\bin" is now legal alias target.
184 "c:\program files\blah\bin" is now legal alias target.
180
185
181 * ext_rehashdir.py: Space no longer allowed as arg
186 * ext_rehashdir.py: Space no longer allowed as arg
182 separator, since space is legal in path names.
187 separator, since space is legal in path names.
183
188
184 2006-03-16 Ville Vainio <vivainio@gmail.com>
189 2006-03-16 Ville Vainio <vivainio@gmail.com>
185
190
186 * upgrade_dir.py: Take path.py from Extensions, correcting
191 * upgrade_dir.py: Take path.py from Extensions, correcting
187 %upgrade magic
192 %upgrade magic
188
193
189 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
194 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
190
195
191 * hooks.py: Only enclose editor binary in quotes if legal and
196 * hooks.py: Only enclose editor binary in quotes if legal and
192 necessary (space in the name, and is an existing file). Fixes a bug
197 necessary (space in the name, and is an existing file). Fixes a bug
193 reported by Zachary Pincus.
198 reported by Zachary Pincus.
194
199
195 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
200 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
196
201
197 * Manual: thanks to a tip on proper color handling for Emacs, by
202 * Manual: thanks to a tip on proper color handling for Emacs, by
198 Eric J Haywiser <ejh1-AT-MIT.EDU>.
203 Eric J Haywiser <ejh1-AT-MIT.EDU>.
199
204
200 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
205 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
201 by applying the provided patch. Thanks to Liu Jin
206 by applying the provided patch. Thanks to Liu Jin
202 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
207 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
203 XEmacs/Linux, I'm trusting the submitter that it actually helps
208 XEmacs/Linux, I'm trusting the submitter that it actually helps
204 under win32/GNU Emacs. Will revisit if any problems are reported.
209 under win32/GNU Emacs. Will revisit if any problems are reported.
205
210
206 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
211 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
207
212
208 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
213 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
209 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
214 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
210
215
211 2006-03-12 Ville Vainio <vivainio@gmail.com>
216 2006-03-12 Ville Vainio <vivainio@gmail.com>
212
217
213 * Magic.py (magic_timeit): Added %timeit magic, contributed by
218 * Magic.py (magic_timeit): Added %timeit magic, contributed by
214 Torsten Marek.
219 Torsten Marek.
215
220
216 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
221 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
217
222
218 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
223 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
219 line ranges works again.
224 line ranges works again.
220
225
221 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
226 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
222
227
223 * IPython/iplib.py (showtraceback): add back sys.last_traceback
228 * IPython/iplib.py (showtraceback): add back sys.last_traceback
224 and friends, after a discussion with Zach Pincus on ipython-user.
229 and friends, after a discussion with Zach Pincus on ipython-user.
225 I'm not 100% sure, but after thinking aobut it quite a bit, it may
230 I'm not 100% sure, but after thinking aobut it quite a bit, it may
226 be OK. Testing with the multithreaded shells didn't reveal any
231 be OK. Testing with the multithreaded shells didn't reveal any
227 problems, but let's keep an eye out.
232 problems, but let's keep an eye out.
228
233
229 In the process, I fixed a few things which were calling
234 In the process, I fixed a few things which were calling
230 self.InteractiveTB() directly (like safe_execfile), which is a
235 self.InteractiveTB() directly (like safe_execfile), which is a
231 mistake: ALL exception reporting should be done by calling
236 mistake: ALL exception reporting should be done by calling
232 self.showtraceback(), which handles state and tab-completion and
237 self.showtraceback(), which handles state and tab-completion and
233 more.
238 more.
234
239
235 2006-03-01 Ville Vainio <vivainio@gmail.com>
240 2006-03-01 Ville Vainio <vivainio@gmail.com>
236
241
237 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
242 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
238 To use, do "from ipipe import *".
243 To use, do "from ipipe import *".
239
244
240 2006-02-24 Ville Vainio <vivainio@gmail.com>
245 2006-02-24 Ville Vainio <vivainio@gmail.com>
241
246
242 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
247 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
243 "cleanly" and safely than the older upgrade mechanism.
248 "cleanly" and safely than the older upgrade mechanism.
244
249
245 2006-02-21 Ville Vainio <vivainio@gmail.com>
250 2006-02-21 Ville Vainio <vivainio@gmail.com>
246
251
247 * Magic.py: %save works again.
252 * Magic.py: %save works again.
248
253
249 2006-02-15 Ville Vainio <vivainio@gmail.com>
254 2006-02-15 Ville Vainio <vivainio@gmail.com>
250
255
251 * Magic.py: %Pprint works again
256 * Magic.py: %Pprint works again
252
257
253 * Extensions/ipy_sane_defaults.py: Provide everything provided
258 * Extensions/ipy_sane_defaults.py: Provide everything provided
254 in default ipythonrc, to make it possible to have a completely empty
259 in default ipythonrc, to make it possible to have a completely empty
255 ipythonrc (and thus completely rc-file free configuration)
260 ipythonrc (and thus completely rc-file free configuration)
256
261
257
262
258 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
263 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
259
264
260 * IPython/hooks.py (editor): quote the call to the editor command,
265 * IPython/hooks.py (editor): quote the call to the editor command,
261 to allow commands with spaces in them. Problem noted by watching
266 to allow commands with spaces in them. Problem noted by watching
262 Ian Oswald's video about textpad under win32 at
267 Ian Oswald's video about textpad under win32 at
263 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
268 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
264
269
265 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
270 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
266 describing magics (we haven't used @ for a loong time).
271 describing magics (we haven't used @ for a loong time).
267
272
268 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
273 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
269 contributed by marienz to close
274 contributed by marienz to close
270 http://www.scipy.net/roundup/ipython/issue53.
275 http://www.scipy.net/roundup/ipython/issue53.
271
276
272 2006-02-10 Ville Vainio <vivainio@gmail.com>
277 2006-02-10 Ville Vainio <vivainio@gmail.com>
273
278
274 * genutils.py: getoutput now works in win32 too
279 * genutils.py: getoutput now works in win32 too
275
280
276 * completer.py: alias and magic completion only invoked
281 * completer.py: alias and magic completion only invoked
277 at the first "item" in the line, to avoid "cd %store"
282 at the first "item" in the line, to avoid "cd %store"
278 nonsense.
283 nonsense.
279
284
280 2006-02-09 Ville Vainio <vivainio@gmail.com>
285 2006-02-09 Ville Vainio <vivainio@gmail.com>
281
286
282 * test/*: Added a unit testing framework (finally).
287 * test/*: Added a unit testing framework (finally).
283 '%run runtests.py' to run test_*.
288 '%run runtests.py' to run test_*.
284
289
285 * ipapi.py: Exposed runlines and set_custom_exc
290 * ipapi.py: Exposed runlines and set_custom_exc
286
291
287 2006-02-07 Ville Vainio <vivainio@gmail.com>
292 2006-02-07 Ville Vainio <vivainio@gmail.com>
288
293
289 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
294 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
290 instead use "f(1 2)" as before.
295 instead use "f(1 2)" as before.
291
296
292 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
297 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
293
298
294 * IPython/demo.py (IPythonDemo): Add new classes to the demo
299 * IPython/demo.py (IPythonDemo): Add new classes to the demo
295 facilities, for demos processed by the IPython input filter
300 facilities, for demos processed by the IPython input filter
296 (IPythonDemo), and for running a script one-line-at-a-time as a
301 (IPythonDemo), and for running a script one-line-at-a-time as a
297 demo, both for pure Python (LineDemo) and for IPython-processed
302 demo, both for pure Python (LineDemo) and for IPython-processed
298 input (IPythonLineDemo). After a request by Dave Kohel, from the
303 input (IPythonLineDemo). After a request by Dave Kohel, from the
299 SAGE team.
304 SAGE team.
300 (Demo.edit): added and edit() method to the demo objects, to edit
305 (Demo.edit): added and edit() method to the demo objects, to edit
301 the in-memory copy of the last executed block.
306 the in-memory copy of the last executed block.
302
307
303 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
308 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
304 processing to %edit, %macro and %save. These commands can now be
309 processing to %edit, %macro and %save. These commands can now be
305 invoked on the unprocessed input as it was typed by the user
310 invoked on the unprocessed input as it was typed by the user
306 (without any prefilters applied). After requests by the SAGE team
311 (without any prefilters applied). After requests by the SAGE team
307 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
312 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
308
313
309 2006-02-01 Ville Vainio <vivainio@gmail.com>
314 2006-02-01 Ville Vainio <vivainio@gmail.com>
310
315
311 * setup.py, eggsetup.py: easy_install ipython==dev works
316 * setup.py, eggsetup.py: easy_install ipython==dev works
312 correctly now (on Linux)
317 correctly now (on Linux)
313
318
314 * ipy_user_conf,ipmaker: user config changes, removed spurious
319 * ipy_user_conf,ipmaker: user config changes, removed spurious
315 warnings
320 warnings
316
321
317 * iplib: if rc.banner is string, use it as is.
322 * iplib: if rc.banner is string, use it as is.
318
323
319 * Magic: %pycat accepts a string argument and pages it's contents.
324 * Magic: %pycat accepts a string argument and pages it's contents.
320
325
321
326
322 2006-01-30 Ville Vainio <vivainio@gmail.com>
327 2006-01-30 Ville Vainio <vivainio@gmail.com>
323
328
324 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
329 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
325 Now %store and bookmarks work through PickleShare, meaning that
330 Now %store and bookmarks work through PickleShare, meaning that
326 concurrent access is possible and all ipython sessions see the
331 concurrent access is possible and all ipython sessions see the
327 same database situation all the time, instead of snapshot of
332 same database situation all the time, instead of snapshot of
328 the situation when the session was started. Hence, %bookmark
333 the situation when the session was started. Hence, %bookmark
329 results are immediately accessible from othes sessions. The database
334 results are immediately accessible from othes sessions. The database
330 is also available for use by user extensions. See:
335 is also available for use by user extensions. See:
331 http://www.python.org/pypi/pickleshare
336 http://www.python.org/pypi/pickleshare
332
337
333 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
338 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
334
339
335 * aliases can now be %store'd
340 * aliases can now be %store'd
336
341
337 * path.py move to Extensions so that pickleshare does not need
342 * path.py move to Extensions so that pickleshare does not need
338 IPython-specific import. Extensions added to pythonpath right
343 IPython-specific import. Extensions added to pythonpath right
339 at __init__.
344 at __init__.
340
345
341 * iplib.py: ipalias deprecated/redundant; aliases are converted and
346 * iplib.py: ipalias deprecated/redundant; aliases are converted and
342 called with _ip.system and the pre-transformed command string.
347 called with _ip.system and the pre-transformed command string.
343
348
344 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
349 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
345
350
346 * IPython/iplib.py (interact): Fix that we were not catching
351 * IPython/iplib.py (interact): Fix that we were not catching
347 KeyboardInterrupt exceptions properly. I'm not quite sure why the
352 KeyboardInterrupt exceptions properly. I'm not quite sure why the
348 logic here had to change, but it's fixed now.
353 logic here had to change, but it's fixed now.
349
354
350 2006-01-29 Ville Vainio <vivainio@gmail.com>
355 2006-01-29 Ville Vainio <vivainio@gmail.com>
351
356
352 * iplib.py: Try to import pyreadline on Windows.
357 * iplib.py: Try to import pyreadline on Windows.
353
358
354 2006-01-27 Ville Vainio <vivainio@gmail.com>
359 2006-01-27 Ville Vainio <vivainio@gmail.com>
355
360
356 * iplib.py: Expose ipapi as _ip in builtin namespace.
361 * iplib.py: Expose ipapi as _ip in builtin namespace.
357 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
362 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
358 and ip_set_hook (-> _ip.set_hook) redundant. % and !
363 and ip_set_hook (-> _ip.set_hook) redundant. % and !
359 syntax now produce _ip.* variant of the commands.
364 syntax now produce _ip.* variant of the commands.
360
365
361 * "_ip.options().autoedit_syntax = 2" automatically throws
366 * "_ip.options().autoedit_syntax = 2" automatically throws
362 user to editor for syntax error correction without prompting.
367 user to editor for syntax error correction without prompting.
363
368
364 2006-01-27 Ville Vainio <vivainio@gmail.com>
369 2006-01-27 Ville Vainio <vivainio@gmail.com>
365
370
366 * ipmaker.py: Give "realistic" sys.argv for scripts (without
371 * ipmaker.py: Give "realistic" sys.argv for scripts (without
367 'ipython' at argv[0]) executed through command line.
372 'ipython' at argv[0]) executed through command line.
368 NOTE: this DEPRECATES calling ipython with multiple scripts
373 NOTE: this DEPRECATES calling ipython with multiple scripts
369 ("ipython a.py b.py c.py")
374 ("ipython a.py b.py c.py")
370
375
371 * iplib.py, hooks.py: Added configurable input prefilter,
376 * iplib.py, hooks.py: Added configurable input prefilter,
372 named 'input_prefilter'. See ext_rescapture.py for example
377 named 'input_prefilter'. See ext_rescapture.py for example
373 usage.
378 usage.
374
379
375 * ext_rescapture.py, Magic.py: Better system command output capture
380 * ext_rescapture.py, Magic.py: Better system command output capture
376 through 'var = !ls' (deprecates user-visible %sc). Same notation
381 through 'var = !ls' (deprecates user-visible %sc). Same notation
377 applies for magics, 'var = %alias' assigns alias list to var.
382 applies for magics, 'var = %alias' assigns alias list to var.
378
383
379 * ipapi.py: added meta() for accessing extension-usable data store.
384 * ipapi.py: added meta() for accessing extension-usable data store.
380
385
381 * iplib.py: added InteractiveShell.getapi(). New magics should be
386 * iplib.py: added InteractiveShell.getapi(). New magics should be
382 written doing self.getapi() instead of using the shell directly.
387 written doing self.getapi() instead of using the shell directly.
383
388
384 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
389 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
385 %store foo >> ~/myfoo.txt to store variables to files (in clean
390 %store foo >> ~/myfoo.txt to store variables to files (in clean
386 textual form, not a restorable pickle).
391 textual form, not a restorable pickle).
387
392
388 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
393 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
389
394
390 * usage.py, Magic.py: added %quickref
395 * usage.py, Magic.py: added %quickref
391
396
392 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
397 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
393
398
394 * GetoptErrors when invoking magics etc. with wrong args
399 * GetoptErrors when invoking magics etc. with wrong args
395 are now more helpful:
400 are now more helpful:
396 GetoptError: option -l not recognized (allowed: "qb" )
401 GetoptError: option -l not recognized (allowed: "qb" )
397
402
398 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
403 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
399
404
400 * IPython/demo.py (Demo.show): Flush stdout after each block, so
405 * IPython/demo.py (Demo.show): Flush stdout after each block, so
401 computationally intensive blocks don't appear to stall the demo.
406 computationally intensive blocks don't appear to stall the demo.
402
407
403 2006-01-24 Ville Vainio <vivainio@gmail.com>
408 2006-01-24 Ville Vainio <vivainio@gmail.com>
404
409
405 * iplib.py, hooks.py: 'result_display' hook can return a non-None
410 * iplib.py, hooks.py: 'result_display' hook can return a non-None
406 value to manipulate resulting history entry.
411 value to manipulate resulting history entry.
407
412
408 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
413 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
409 to instance methods of IPApi class, to make extending an embedded
414 to instance methods of IPApi class, to make extending an embedded
410 IPython feasible. See ext_rehashdir.py for example usage.
415 IPython feasible. See ext_rehashdir.py for example usage.
411
416
412 * Merged 1071-1076 from banches/0.7.1
417 * Merged 1071-1076 from banches/0.7.1
413
418
414
419
415 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
420 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
416
421
417 * tools/release (daystamp): Fix build tools to use the new
422 * tools/release (daystamp): Fix build tools to use the new
418 eggsetup.py script to build lightweight eggs.
423 eggsetup.py script to build lightweight eggs.
419
424
420 * Applied changesets 1062 and 1064 before 0.7.1 release.
425 * Applied changesets 1062 and 1064 before 0.7.1 release.
421
426
422 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
427 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
423 see the raw input history (without conversions like %ls ->
428 see the raw input history (without conversions like %ls ->
424 ipmagic("ls")). After a request from W. Stein, SAGE
429 ipmagic("ls")). After a request from W. Stein, SAGE
425 (http://modular.ucsd.edu/sage) developer. This information is
430 (http://modular.ucsd.edu/sage) developer. This information is
426 stored in the input_hist_raw attribute of the IPython instance, so
431 stored in the input_hist_raw attribute of the IPython instance, so
427 developers can access it if needed (it's an InputList instance).
432 developers can access it if needed (it's an InputList instance).
428
433
429 * Versionstring = 0.7.2.svn
434 * Versionstring = 0.7.2.svn
430
435
431 * eggsetup.py: A separate script for constructing eggs, creates
436 * eggsetup.py: A separate script for constructing eggs, creates
432 proper launch scripts even on Windows (an .exe file in
437 proper launch scripts even on Windows (an .exe file in
433 \python24\scripts).
438 \python24\scripts).
434
439
435 * ipapi.py: launch_new_instance, launch entry point needed for the
440 * ipapi.py: launch_new_instance, launch entry point needed for the
436 egg.
441 egg.
437
442
438 2006-01-23 Ville Vainio <vivainio@gmail.com>
443 2006-01-23 Ville Vainio <vivainio@gmail.com>
439
444
440 * Added %cpaste magic for pasting python code
445 * Added %cpaste magic for pasting python code
441
446
442 2006-01-22 Ville Vainio <vivainio@gmail.com>
447 2006-01-22 Ville Vainio <vivainio@gmail.com>
443
448
444 * Merge from branches/0.7.1 into trunk, revs 1052-1057
449 * Merge from branches/0.7.1 into trunk, revs 1052-1057
445
450
446 * Versionstring = 0.7.2.svn
451 * Versionstring = 0.7.2.svn
447
452
448 * eggsetup.py: A separate script for constructing eggs, creates
453 * eggsetup.py: A separate script for constructing eggs, creates
449 proper launch scripts even on Windows (an .exe file in
454 proper launch scripts even on Windows (an .exe file in
450 \python24\scripts).
455 \python24\scripts).
451
456
452 * ipapi.py: launch_new_instance, launch entry point needed for the
457 * ipapi.py: launch_new_instance, launch entry point needed for the
453 egg.
458 egg.
454
459
455 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
460 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
456
461
457 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
462 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
458 %pfile foo would print the file for foo even if it was a binary.
463 %pfile foo would print the file for foo even if it was a binary.
459 Now, extensions '.so' and '.dll' are skipped.
464 Now, extensions '.so' and '.dll' are skipped.
460
465
461 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
466 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
462 bug, where macros would fail in all threaded modes. I'm not 100%
467 bug, where macros would fail in all threaded modes. I'm not 100%
463 sure, so I'm going to put out an rc instead of making a release
468 sure, so I'm going to put out an rc instead of making a release
464 today, and wait for feedback for at least a few days.
469 today, and wait for feedback for at least a few days.
465
470
466 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
471 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
467 it...) the handling of pasting external code with autoindent on.
472 it...) the handling of pasting external code with autoindent on.
468 To get out of a multiline input, the rule will appear for most
473 To get out of a multiline input, the rule will appear for most
469 users unchanged: two blank lines or change the indent level
474 users unchanged: two blank lines or change the indent level
470 proposed by IPython. But there is a twist now: you can
475 proposed by IPython. But there is a twist now: you can
471 add/subtract only *one or two spaces*. If you add/subtract three
476 add/subtract only *one or two spaces*. If you add/subtract three
472 or more (unless you completely delete the line), IPython will
477 or more (unless you completely delete the line), IPython will
473 accept that line, and you'll need to enter a second one of pure
478 accept that line, and you'll need to enter a second one of pure
474 whitespace. I know it sounds complicated, but I can't find a
479 whitespace. I know it sounds complicated, but I can't find a
475 different solution that covers all the cases, with the right
480 different solution that covers all the cases, with the right
476 heuristics. Hopefully in actual use, nobody will really notice
481 heuristics. Hopefully in actual use, nobody will really notice
477 all these strange rules and things will 'just work'.
482 all these strange rules and things will 'just work'.
478
483
479 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
484 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
480
485
481 * IPython/iplib.py (interact): catch exceptions which can be
486 * IPython/iplib.py (interact): catch exceptions which can be
482 triggered asynchronously by signal handlers. Thanks to an
487 triggered asynchronously by signal handlers. Thanks to an
483 automatic crash report, submitted by Colin Kingsley
488 automatic crash report, submitted by Colin Kingsley
484 <tercel-AT-gentoo.org>.
489 <tercel-AT-gentoo.org>.
485
490
486 2006-01-20 Ville Vainio <vivainio@gmail.com>
491 2006-01-20 Ville Vainio <vivainio@gmail.com>
487
492
488 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
493 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
489 (%rehashdir, very useful, try it out) of how to extend ipython
494 (%rehashdir, very useful, try it out) of how to extend ipython
490 with new magics. Also added Extensions dir to pythonpath to make
495 with new magics. Also added Extensions dir to pythonpath to make
491 importing extensions easy.
496 importing extensions easy.
492
497
493 * %store now complains when trying to store interactively declared
498 * %store now complains when trying to store interactively declared
494 classes / instances of those classes.
499 classes / instances of those classes.
495
500
496 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
501 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
497 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
502 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
498 if they exist, and ipy_user_conf.py with some defaults is created for
503 if they exist, and ipy_user_conf.py with some defaults is created for
499 the user.
504 the user.
500
505
501 * Startup rehashing done by the config file, not InterpreterExec.
506 * Startup rehashing done by the config file, not InterpreterExec.
502 This means system commands are available even without selecting the
507 This means system commands are available even without selecting the
503 pysh profile. It's the sensible default after all.
508 pysh profile. It's the sensible default after all.
504
509
505 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
510 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
506
511
507 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
512 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
508 multiline code with autoindent on working. But I am really not
513 multiline code with autoindent on working. But I am really not
509 sure, so this needs more testing. Will commit a debug-enabled
514 sure, so this needs more testing. Will commit a debug-enabled
510 version for now, while I test it some more, so that Ville and
515 version for now, while I test it some more, so that Ville and
511 others may also catch any problems. Also made
516 others may also catch any problems. Also made
512 self.indent_current_str() a method, to ensure that there's no
517 self.indent_current_str() a method, to ensure that there's no
513 chance of the indent space count and the corresponding string
518 chance of the indent space count and the corresponding string
514 falling out of sync. All code needing the string should just call
519 falling out of sync. All code needing the string should just call
515 the method.
520 the method.
516
521
517 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
522 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
518
523
519 * IPython/Magic.py (magic_edit): fix check for when users don't
524 * IPython/Magic.py (magic_edit): fix check for when users don't
520 save their output files, the try/except was in the wrong section.
525 save their output files, the try/except was in the wrong section.
521
526
522 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
527 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
523
528
524 * IPython/Magic.py (magic_run): fix __file__ global missing from
529 * IPython/Magic.py (magic_run): fix __file__ global missing from
525 script's namespace when executed via %run. After a report by
530 script's namespace when executed via %run. After a report by
526 Vivian.
531 Vivian.
527
532
528 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
533 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
529 when using python 2.4. The parent constructor changed in 2.4, and
534 when using python 2.4. The parent constructor changed in 2.4, and
530 we need to track it directly (we can't call it, as it messes up
535 we need to track it directly (we can't call it, as it messes up
531 readline and tab-completion inside our pdb would stop working).
536 readline and tab-completion inside our pdb would stop working).
532 After a bug report by R. Bernstein <rocky-AT-panix.com>.
537 After a bug report by R. Bernstein <rocky-AT-panix.com>.
533
538
534 2006-01-16 Ville Vainio <vivainio@gmail.com>
539 2006-01-16 Ville Vainio <vivainio@gmail.com>
535
540
536 * Ipython/magic.py:Reverted back to old %edit functionality
541 * Ipython/magic.py:Reverted back to old %edit functionality
537 that returns file contents on exit.
542 that returns file contents on exit.
538
543
539 * IPython/path.py: Added Jason Orendorff's "path" module to
544 * IPython/path.py: Added Jason Orendorff's "path" module to
540 IPython tree, http://www.jorendorff.com/articles/python/path/.
545 IPython tree, http://www.jorendorff.com/articles/python/path/.
541 You can get path objects conveniently through %sc, and !!, e.g.:
546 You can get path objects conveniently through %sc, and !!, e.g.:
542 sc files=ls
547 sc files=ls
543 for p in files.paths: # or files.p
548 for p in files.paths: # or files.p
544 print p,p.mtime
549 print p,p.mtime
545
550
546 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
551 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
547 now work again without considering the exclusion regexp -
552 now work again without considering the exclusion regexp -
548 hence, things like ',foo my/path' turn to 'foo("my/path")'
553 hence, things like ',foo my/path' turn to 'foo("my/path")'
549 instead of syntax error.
554 instead of syntax error.
550
555
551
556
552 2006-01-14 Ville Vainio <vivainio@gmail.com>
557 2006-01-14 Ville Vainio <vivainio@gmail.com>
553
558
554 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
559 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
555 ipapi decorators for python 2.4 users, options() provides access to rc
560 ipapi decorators for python 2.4 users, options() provides access to rc
556 data.
561 data.
557
562
558 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
563 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
559 as path separators (even on Linux ;-). Space character after
564 as path separators (even on Linux ;-). Space character after
560 backslash (as yielded by tab completer) is still space;
565 backslash (as yielded by tab completer) is still space;
561 "%cd long\ name" works as expected.
566 "%cd long\ name" works as expected.
562
567
563 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
568 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
564 as "chain of command", with priority. API stays the same,
569 as "chain of command", with priority. API stays the same,
565 TryNext exception raised by a hook function signals that
570 TryNext exception raised by a hook function signals that
566 current hook failed and next hook should try handling it, as
571 current hook failed and next hook should try handling it, as
567 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
572 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
568 requested configurable display hook, which is now implemented.
573 requested configurable display hook, which is now implemented.
569
574
570 2006-01-13 Ville Vainio <vivainio@gmail.com>
575 2006-01-13 Ville Vainio <vivainio@gmail.com>
571
576
572 * IPython/platutils*.py: platform specific utility functions,
577 * IPython/platutils*.py: platform specific utility functions,
573 so far only set_term_title is implemented (change terminal
578 so far only set_term_title is implemented (change terminal
574 label in windowing systems). %cd now changes the title to
579 label in windowing systems). %cd now changes the title to
575 current dir.
580 current dir.
576
581
577 * IPython/Release.py: Added myself to "authors" list,
582 * IPython/Release.py: Added myself to "authors" list,
578 had to create new files.
583 had to create new files.
579
584
580 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
585 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
581 shell escape; not a known bug but had potential to be one in the
586 shell escape; not a known bug but had potential to be one in the
582 future.
587 future.
583
588
584 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
589 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
585 extension API for IPython! See the module for usage example. Fix
590 extension API for IPython! See the module for usage example. Fix
586 OInspect for docstring-less magic functions.
591 OInspect for docstring-less magic functions.
587
592
588
593
589 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
594 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
590
595
591 * IPython/iplib.py (raw_input): temporarily deactivate all
596 * IPython/iplib.py (raw_input): temporarily deactivate all
592 attempts at allowing pasting of code with autoindent on. It
597 attempts at allowing pasting of code with autoindent on. It
593 introduced bugs (reported by Prabhu) and I can't seem to find a
598 introduced bugs (reported by Prabhu) and I can't seem to find a
594 robust combination which works in all cases. Will have to revisit
599 robust combination which works in all cases. Will have to revisit
595 later.
600 later.
596
601
597 * IPython/genutils.py: remove isspace() function. We've dropped
602 * IPython/genutils.py: remove isspace() function. We've dropped
598 2.2 compatibility, so it's OK to use the string method.
603 2.2 compatibility, so it's OK to use the string method.
599
604
600 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
605 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
601
606
602 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
607 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
603 matching what NOT to autocall on, to include all python binary
608 matching what NOT to autocall on, to include all python binary
604 operators (including things like 'and', 'or', 'is' and 'in').
609 operators (including things like 'and', 'or', 'is' and 'in').
605 Prompted by a bug report on 'foo & bar', but I realized we had
610 Prompted by a bug report on 'foo & bar', but I realized we had
606 many more potential bug cases with other operators. The regexp is
611 many more potential bug cases with other operators. The regexp is
607 self.re_exclude_auto, it's fairly commented.
612 self.re_exclude_auto, it's fairly commented.
608
613
609 2006-01-12 Ville Vainio <vivainio@gmail.com>
614 2006-01-12 Ville Vainio <vivainio@gmail.com>
610
615
611 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
616 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
612 Prettified and hardened string/backslash quoting with ipsystem(),
617 Prettified and hardened string/backslash quoting with ipsystem(),
613 ipalias() and ipmagic(). Now even \ characters are passed to
618 ipalias() and ipmagic(). Now even \ characters are passed to
614 %magics, !shell escapes and aliases exactly as they are in the
619 %magics, !shell escapes and aliases exactly as they are in the
615 ipython command line. Should improve backslash experience,
620 ipython command line. Should improve backslash experience,
616 particularly in Windows (path delimiter for some commands that
621 particularly in Windows (path delimiter for some commands that
617 won't understand '/'), but Unix benefits as well (regexps). %cd
622 won't understand '/'), but Unix benefits as well (regexps). %cd
618 magic still doesn't support backslash path delimiters, though. Also
623 magic still doesn't support backslash path delimiters, though. Also
619 deleted all pretense of supporting multiline command strings in
624 deleted all pretense of supporting multiline command strings in
620 !system or %magic commands. Thanks to Jerry McRae for suggestions.
625 !system or %magic commands. Thanks to Jerry McRae for suggestions.
621
626
622 * doc/build_doc_instructions.txt added. Documentation on how to
627 * doc/build_doc_instructions.txt added. Documentation on how to
623 use doc/update_manual.py, added yesterday. Both files contributed
628 use doc/update_manual.py, added yesterday. Both files contributed
624 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
629 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
625 doc/*.sh for deprecation at a later date.
630 doc/*.sh for deprecation at a later date.
626
631
627 * /ipython.py Added ipython.py to root directory for
632 * /ipython.py Added ipython.py to root directory for
628 zero-installation (tar xzvf ipython.tgz; cd ipython; python
633 zero-installation (tar xzvf ipython.tgz; cd ipython; python
629 ipython.py) and development convenience (no need to kee doing
634 ipython.py) and development convenience (no need to kee doing
630 "setup.py install" between changes).
635 "setup.py install" between changes).
631
636
632 * Made ! and !! shell escapes work (again) in multiline expressions:
637 * Made ! and !! shell escapes work (again) in multiline expressions:
633 if 1:
638 if 1:
634 !ls
639 !ls
635 !!ls
640 !!ls
636
641
637 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
642 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
638
643
639 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
644 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
640 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
645 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
641 module in case-insensitive installation. Was causing crashes
646 module in case-insensitive installation. Was causing crashes
642 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
647 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
643
648
644 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
649 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
645 <marienz-AT-gentoo.org>, closes
650 <marienz-AT-gentoo.org>, closes
646 http://www.scipy.net/roundup/ipython/issue51.
651 http://www.scipy.net/roundup/ipython/issue51.
647
652
648 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
653 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
649
654
650 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
655 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the the
651 problem of excessive CPU usage under *nix and keyboard lag under
656 problem of excessive CPU usage under *nix and keyboard lag under
652 win32.
657 win32.
653
658
654 2006-01-10 *** Released version 0.7.0
659 2006-01-10 *** Released version 0.7.0
655
660
656 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
661 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
657
662
658 * IPython/Release.py (revision): tag version number to 0.7.0,
663 * IPython/Release.py (revision): tag version number to 0.7.0,
659 ready for release.
664 ready for release.
660
665
661 * IPython/Magic.py (magic_edit): Add print statement to %edit so
666 * IPython/Magic.py (magic_edit): Add print statement to %edit so
662 it informs the user of the name of the temp. file used. This can
667 it informs the user of the name of the temp. file used. This can
663 help if you decide later to reuse that same file, so you know
668 help if you decide later to reuse that same file, so you know
664 where to copy the info from.
669 where to copy the info from.
665
670
666 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
671 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
667
672
668 * setup_bdist_egg.py: little script to build an egg. Added
673 * setup_bdist_egg.py: little script to build an egg. Added
669 support in the release tools as well.
674 support in the release tools as well.
670
675
671 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
676 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
672
677
673 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
678 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
674 version selection (new -wxversion command line and ipythonrc
679 version selection (new -wxversion command line and ipythonrc
675 parameter). Patch contributed by Arnd Baecker
680 parameter). Patch contributed by Arnd Baecker
676 <arnd.baecker-AT-web.de>.
681 <arnd.baecker-AT-web.de>.
677
682
678 * IPython/iplib.py (embed_mainloop): fix tab-completion in
683 * IPython/iplib.py (embed_mainloop): fix tab-completion in
679 embedded instances, for variables defined at the interactive
684 embedded instances, for variables defined at the interactive
680 prompt of the embedded ipython. Reported by Arnd.
685 prompt of the embedded ipython. Reported by Arnd.
681
686
682 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
687 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
683 it can be used as a (stateful) toggle, or with a direct parameter.
688 it can be used as a (stateful) toggle, or with a direct parameter.
684
689
685 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
690 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
686 could be triggered in certain cases and cause the traceback
691 could be triggered in certain cases and cause the traceback
687 printer not to work.
692 printer not to work.
688
693
689 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
694 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
690
695
691 * IPython/iplib.py (_should_recompile): Small fix, closes
696 * IPython/iplib.py (_should_recompile): Small fix, closes
692 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
697 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
693
698
694 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
699 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
695
700
696 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
701 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
697 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
702 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
698 Moad for help with tracking it down.
703 Moad for help with tracking it down.
699
704
700 * IPython/iplib.py (handle_auto): fix autocall handling for
705 * IPython/iplib.py (handle_auto): fix autocall handling for
701 objects which support BOTH __getitem__ and __call__ (so that f [x]
706 objects which support BOTH __getitem__ and __call__ (so that f [x]
702 is left alone, instead of becoming f([x]) automatically).
707 is left alone, instead of becoming f([x]) automatically).
703
708
704 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
709 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
705 Ville's patch.
710 Ville's patch.
706
711
707 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
712 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
708
713
709 * IPython/iplib.py (handle_auto): changed autocall semantics to
714 * IPython/iplib.py (handle_auto): changed autocall semantics to
710 include 'smart' mode, where the autocall transformation is NOT
715 include 'smart' mode, where the autocall transformation is NOT
711 applied if there are no arguments on the line. This allows you to
716 applied if there are no arguments on the line. This allows you to
712 just type 'foo' if foo is a callable to see its internal form,
717 just type 'foo' if foo is a callable to see its internal form,
713 instead of having it called with no arguments (typically a
718 instead of having it called with no arguments (typically a
714 mistake). The old 'full' autocall still exists: for that, you
719 mistake). The old 'full' autocall still exists: for that, you
715 need to set the 'autocall' parameter to 2 in your ipythonrc file.
720 need to set the 'autocall' parameter to 2 in your ipythonrc file.
716
721
717 * IPython/completer.py (Completer.attr_matches): add
722 * IPython/completer.py (Completer.attr_matches): add
718 tab-completion support for Enthoughts' traits. After a report by
723 tab-completion support for Enthoughts' traits. After a report by
719 Arnd and a patch by Prabhu.
724 Arnd and a patch by Prabhu.
720
725
721 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
726 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
722
727
723 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
728 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
724 Schmolck's patch to fix inspect.getinnerframes().
729 Schmolck's patch to fix inspect.getinnerframes().
725
730
726 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
731 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
727 for embedded instances, regarding handling of namespaces and items
732 for embedded instances, regarding handling of namespaces and items
728 added to the __builtin__ one. Multiple embedded instances and
733 added to the __builtin__ one. Multiple embedded instances and
729 recursive embeddings should work better now (though I'm not sure
734 recursive embeddings should work better now (though I'm not sure
730 I've got all the corner cases fixed, that code is a bit of a brain
735 I've got all the corner cases fixed, that code is a bit of a brain
731 twister).
736 twister).
732
737
733 * IPython/Magic.py (magic_edit): added support to edit in-memory
738 * IPython/Magic.py (magic_edit): added support to edit in-memory
734 macros (automatically creates the necessary temp files). %edit
739 macros (automatically creates the necessary temp files). %edit
735 also doesn't return the file contents anymore, it's just noise.
740 also doesn't return the file contents anymore, it's just noise.
736
741
737 * IPython/completer.py (Completer.attr_matches): revert change to
742 * IPython/completer.py (Completer.attr_matches): revert change to
738 complete only on attributes listed in __all__. I realized it
743 complete only on attributes listed in __all__. I realized it
739 cripples the tab-completion system as a tool for exploring the
744 cripples the tab-completion system as a tool for exploring the
740 internals of unknown libraries (it renders any non-__all__
745 internals of unknown libraries (it renders any non-__all__
741 attribute off-limits). I got bit by this when trying to see
746 attribute off-limits). I got bit by this when trying to see
742 something inside the dis module.
747 something inside the dis module.
743
748
744 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
749 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
745
750
746 * IPython/iplib.py (InteractiveShell.__init__): add .meta
751 * IPython/iplib.py (InteractiveShell.__init__): add .meta
747 namespace for users and extension writers to hold data in. This
752 namespace for users and extension writers to hold data in. This
748 follows the discussion in
753 follows the discussion in
749 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
754 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
750
755
751 * IPython/completer.py (IPCompleter.complete): small patch to help
756 * IPython/completer.py (IPCompleter.complete): small patch to help
752 tab-completion under Emacs, after a suggestion by John Barnard
757 tab-completion under Emacs, after a suggestion by John Barnard
753 <barnarj-AT-ccf.org>.
758 <barnarj-AT-ccf.org>.
754
759
755 * IPython/Magic.py (Magic.extract_input_slices): added support for
760 * IPython/Magic.py (Magic.extract_input_slices): added support for
756 the slice notation in magics to use N-M to represent numbers N...M
761 the slice notation in magics to use N-M to represent numbers N...M
757 (closed endpoints). This is used by %macro and %save.
762 (closed endpoints). This is used by %macro and %save.
758
763
759 * IPython/completer.py (Completer.attr_matches): for modules which
764 * IPython/completer.py (Completer.attr_matches): for modules which
760 define __all__, complete only on those. After a patch by Jeffrey
765 define __all__, complete only on those. After a patch by Jeffrey
761 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
766 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
762 speed up this routine.
767 speed up this routine.
763
768
764 * IPython/Logger.py (Logger.log): fix a history handling bug. I
769 * IPython/Logger.py (Logger.log): fix a history handling bug. I
765 don't know if this is the end of it, but the behavior now is
770 don't know if this is the end of it, but the behavior now is
766 certainly much more correct. Note that coupled with macros,
771 certainly much more correct. Note that coupled with macros,
767 slightly surprising (at first) behavior may occur: a macro will in
772 slightly surprising (at first) behavior may occur: a macro will in
768 general expand to multiple lines of input, so upon exiting, the
773 general expand to multiple lines of input, so upon exiting, the
769 in/out counters will both be bumped by the corresponding amount
774 in/out counters will both be bumped by the corresponding amount
770 (as if the macro's contents had been typed interactively). Typing
775 (as if the macro's contents had been typed interactively). Typing
771 %hist will reveal the intermediate (silently processed) lines.
776 %hist will reveal the intermediate (silently processed) lines.
772
777
773 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
778 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
774 pickle to fail (%run was overwriting __main__ and not restoring
779 pickle to fail (%run was overwriting __main__ and not restoring
775 it, but pickle relies on __main__ to operate).
780 it, but pickle relies on __main__ to operate).
776
781
777 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
782 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
778 using properties, but forgot to make the main InteractiveShell
783 using properties, but forgot to make the main InteractiveShell
779 class a new-style class. Properties fail silently, and
784 class a new-style class. Properties fail silently, and
780 misteriously, with old-style class (getters work, but
785 misteriously, with old-style class (getters work, but
781 setters don't do anything).
786 setters don't do anything).
782
787
783 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
788 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
784
789
785 * IPython/Magic.py (magic_history): fix history reporting bug (I
790 * IPython/Magic.py (magic_history): fix history reporting bug (I
786 know some nasties are still there, I just can't seem to find a
791 know some nasties are still there, I just can't seem to find a
787 reproducible test case to track them down; the input history is
792 reproducible test case to track them down; the input history is
788 falling out of sync...)
793 falling out of sync...)
789
794
790 * IPython/iplib.py (handle_shell_escape): fix bug where both
795 * IPython/iplib.py (handle_shell_escape): fix bug where both
791 aliases and system accesses where broken for indented code (such
796 aliases and system accesses where broken for indented code (such
792 as loops).
797 as loops).
793
798
794 * IPython/genutils.py (shell): fix small but critical bug for
799 * IPython/genutils.py (shell): fix small but critical bug for
795 win32 system access.
800 win32 system access.
796
801
797 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
802 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
798
803
799 * IPython/iplib.py (showtraceback): remove use of the
804 * IPython/iplib.py (showtraceback): remove use of the
800 sys.last_{type/value/traceback} structures, which are non
805 sys.last_{type/value/traceback} structures, which are non
801 thread-safe.
806 thread-safe.
802 (_prefilter): change control flow to ensure that we NEVER
807 (_prefilter): change control flow to ensure that we NEVER
803 introspect objects when autocall is off. This will guarantee that
808 introspect objects when autocall is off. This will guarantee that
804 having an input line of the form 'x.y', where access to attribute
809 having an input line of the form 'x.y', where access to attribute
805 'y' has side effects, doesn't trigger the side effect TWICE. It
810 'y' has side effects, doesn't trigger the side effect TWICE. It
806 is important to note that, with autocall on, these side effects
811 is important to note that, with autocall on, these side effects
807 can still happen.
812 can still happen.
808 (ipsystem): new builtin, to complete the ip{magic/alias/system}
813 (ipsystem): new builtin, to complete the ip{magic/alias/system}
809 trio. IPython offers these three kinds of special calls which are
814 trio. IPython offers these three kinds of special calls which are
810 not python code, and it's a good thing to have their call method
815 not python code, and it's a good thing to have their call method
811 be accessible as pure python functions (not just special syntax at
816 be accessible as pure python functions (not just special syntax at
812 the command line). It gives us a better internal implementation
817 the command line). It gives us a better internal implementation
813 structure, as well as exposing these for user scripting more
818 structure, as well as exposing these for user scripting more
814 cleanly.
819 cleanly.
815
820
816 * IPython/macro.py (Macro.__init__): moved macros to a standalone
821 * IPython/macro.py (Macro.__init__): moved macros to a standalone
817 file. Now that they'll be more likely to be used with the
822 file. Now that they'll be more likely to be used with the
818 persistance system (%store), I want to make sure their module path
823 persistance system (%store), I want to make sure their module path
819 doesn't change in the future, so that we don't break things for
824 doesn't change in the future, so that we don't break things for
820 users' persisted data.
825 users' persisted data.
821
826
822 * IPython/iplib.py (autoindent_update): move indentation
827 * IPython/iplib.py (autoindent_update): move indentation
823 management into the _text_ processing loop, not the keyboard
828 management into the _text_ processing loop, not the keyboard
824 interactive one. This is necessary to correctly process non-typed
829 interactive one. This is necessary to correctly process non-typed
825 multiline input (such as macros).
830 multiline input (such as macros).
826
831
827 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
832 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
828 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
833 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
829 which was producing problems in the resulting manual.
834 which was producing problems in the resulting manual.
830 (magic_whos): improve reporting of instances (show their class,
835 (magic_whos): improve reporting of instances (show their class,
831 instead of simply printing 'instance' which isn't terribly
836 instead of simply printing 'instance' which isn't terribly
832 informative).
837 informative).
833
838
834 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
839 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
835 (minor mods) to support network shares under win32.
840 (minor mods) to support network shares under win32.
836
841
837 * IPython/winconsole.py (get_console_size): add new winconsole
842 * IPython/winconsole.py (get_console_size): add new winconsole
838 module and fixes to page_dumb() to improve its behavior under
843 module and fixes to page_dumb() to improve its behavior under
839 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
844 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
840
845
841 * IPython/Magic.py (Macro): simplified Macro class to just
846 * IPython/Magic.py (Macro): simplified Macro class to just
842 subclass list. We've had only 2.2 compatibility for a very long
847 subclass list. We've had only 2.2 compatibility for a very long
843 time, yet I was still avoiding subclassing the builtin types. No
848 time, yet I was still avoiding subclassing the builtin types. No
844 more (I'm also starting to use properties, though I won't shift to
849 more (I'm also starting to use properties, though I won't shift to
845 2.3-specific features quite yet).
850 2.3-specific features quite yet).
846 (magic_store): added Ville's patch for lightweight variable
851 (magic_store): added Ville's patch for lightweight variable
847 persistence, after a request on the user list by Matt Wilkie
852 persistence, after a request on the user list by Matt Wilkie
848 <maphew-AT-gmail.com>. The new %store magic's docstring has full
853 <maphew-AT-gmail.com>. The new %store magic's docstring has full
849 details.
854 details.
850
855
851 * IPython/iplib.py (InteractiveShell.post_config_initialization):
856 * IPython/iplib.py (InteractiveShell.post_config_initialization):
852 changed the default logfile name from 'ipython.log' to
857 changed the default logfile name from 'ipython.log' to
853 'ipython_log.py'. These logs are real python files, and now that
858 'ipython_log.py'. These logs are real python files, and now that
854 we have much better multiline support, people are more likely to
859 we have much better multiline support, people are more likely to
855 want to use them as such. Might as well name them correctly.
860 want to use them as such. Might as well name them correctly.
856
861
857 * IPython/Magic.py: substantial cleanup. While we can't stop
862 * IPython/Magic.py: substantial cleanup. While we can't stop
858 using magics as mixins, due to the existing customizations 'out
863 using magics as mixins, due to the existing customizations 'out
859 there' which rely on the mixin naming conventions, at least I
864 there' which rely on the mixin naming conventions, at least I
860 cleaned out all cross-class name usage. So once we are OK with
865 cleaned out all cross-class name usage. So once we are OK with
861 breaking compatibility, the two systems can be separated.
866 breaking compatibility, the two systems can be separated.
862
867
863 * IPython/Logger.py: major cleanup. This one is NOT a mixin
868 * IPython/Logger.py: major cleanup. This one is NOT a mixin
864 anymore, and the class is a fair bit less hideous as well. New
869 anymore, and the class is a fair bit less hideous as well. New
865 features were also introduced: timestamping of input, and logging
870 features were also introduced: timestamping of input, and logging
866 of output results. These are user-visible with the -t and -o
871 of output results. These are user-visible with the -t and -o
867 options to %logstart. Closes
872 options to %logstart. Closes
868 http://www.scipy.net/roundup/ipython/issue11 and a request by
873 http://www.scipy.net/roundup/ipython/issue11 and a request by
869 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
874 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
870
875
871 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
876 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
872
877
873 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
878 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
874 better hadnle backslashes in paths. See the thread 'More Windows
879 better hadnle backslashes in paths. See the thread 'More Windows
875 questions part 2 - \/ characters revisited' on the iypthon user
880 questions part 2 - \/ characters revisited' on the iypthon user
876 list:
881 list:
877 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
882 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
878
883
879 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
884 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
880
885
881 (InteractiveShell.__init__): change threaded shells to not use the
886 (InteractiveShell.__init__): change threaded shells to not use the
882 ipython crash handler. This was causing more problems than not,
887 ipython crash handler. This was causing more problems than not,
883 as exceptions in the main thread (GUI code, typically) would
888 as exceptions in the main thread (GUI code, typically) would
884 always show up as a 'crash', when they really weren't.
889 always show up as a 'crash', when they really weren't.
885
890
886 The colors and exception mode commands (%colors/%xmode) have been
891 The colors and exception mode commands (%colors/%xmode) have been
887 synchronized to also take this into account, so users can get
892 synchronized to also take this into account, so users can get
888 verbose exceptions for their threaded code as well. I also added
893 verbose exceptions for their threaded code as well. I also added
889 support for activating pdb inside this exception handler as well,
894 support for activating pdb inside this exception handler as well,
890 so now GUI authors can use IPython's enhanced pdb at runtime.
895 so now GUI authors can use IPython's enhanced pdb at runtime.
891
896
892 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
897 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
893 true by default, and add it to the shipped ipythonrc file. Since
898 true by default, and add it to the shipped ipythonrc file. Since
894 this asks the user before proceeding, I think it's OK to make it
899 this asks the user before proceeding, I think it's OK to make it
895 true by default.
900 true by default.
896
901
897 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
902 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
898 of the previous special-casing of input in the eval loop. I think
903 of the previous special-casing of input in the eval loop. I think
899 this is cleaner, as they really are commands and shouldn't have
904 this is cleaner, as they really are commands and shouldn't have
900 a special role in the middle of the core code.
905 a special role in the middle of the core code.
901
906
902 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
907 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
903
908
904 * IPython/iplib.py (edit_syntax_error): added support for
909 * IPython/iplib.py (edit_syntax_error): added support for
905 automatically reopening the editor if the file had a syntax error
910 automatically reopening the editor if the file had a syntax error
906 in it. Thanks to scottt who provided the patch at:
911 in it. Thanks to scottt who provided the patch at:
907 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
912 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
908 version committed).
913 version committed).
909
914
910 * IPython/iplib.py (handle_normal): add suport for multi-line
915 * IPython/iplib.py (handle_normal): add suport for multi-line
911 input with emtpy lines. This fixes
916 input with emtpy lines. This fixes
912 http://www.scipy.net/roundup/ipython/issue43 and a similar
917 http://www.scipy.net/roundup/ipython/issue43 and a similar
913 discussion on the user list.
918 discussion on the user list.
914
919
915 WARNING: a behavior change is necessarily introduced to support
920 WARNING: a behavior change is necessarily introduced to support
916 blank lines: now a single blank line with whitespace does NOT
921 blank lines: now a single blank line with whitespace does NOT
917 break the input loop, which means that when autoindent is on, by
922 break the input loop, which means that when autoindent is on, by
918 default hitting return on the next (indented) line does NOT exit.
923 default hitting return on the next (indented) line does NOT exit.
919
924
920 Instead, to exit a multiline input you can either have:
925 Instead, to exit a multiline input you can either have:
921
926
922 - TWO whitespace lines (just hit return again), or
927 - TWO whitespace lines (just hit return again), or
923 - a single whitespace line of a different length than provided
928 - a single whitespace line of a different length than provided
924 by the autoindent (add or remove a space).
929 by the autoindent (add or remove a space).
925
930
926 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
931 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
927 module to better organize all readline-related functionality.
932 module to better organize all readline-related functionality.
928 I've deleted FlexCompleter and put all completion clases here.
933 I've deleted FlexCompleter and put all completion clases here.
929
934
930 * IPython/iplib.py (raw_input): improve indentation management.
935 * IPython/iplib.py (raw_input): improve indentation management.
931 It is now possible to paste indented code with autoindent on, and
936 It is now possible to paste indented code with autoindent on, and
932 the code is interpreted correctly (though it still looks bad on
937 the code is interpreted correctly (though it still looks bad on
933 screen, due to the line-oriented nature of ipython).
938 screen, due to the line-oriented nature of ipython).
934 (MagicCompleter.complete): change behavior so that a TAB key on an
939 (MagicCompleter.complete): change behavior so that a TAB key on an
935 otherwise empty line actually inserts a tab, instead of completing
940 otherwise empty line actually inserts a tab, instead of completing
936 on the entire global namespace. This makes it easier to use the
941 on the entire global namespace. This makes it easier to use the
937 TAB key for indentation. After a request by Hans Meine
942 TAB key for indentation. After a request by Hans Meine
938 <hans_meine-AT-gmx.net>
943 <hans_meine-AT-gmx.net>
939 (_prefilter): add support so that typing plain 'exit' or 'quit'
944 (_prefilter): add support so that typing plain 'exit' or 'quit'
940 does a sensible thing. Originally I tried to deviate as little as
945 does a sensible thing. Originally I tried to deviate as little as
941 possible from the default python behavior, but even that one may
946 possible from the default python behavior, but even that one may
942 change in this direction (thread on python-dev to that effect).
947 change in this direction (thread on python-dev to that effect).
943 Regardless, ipython should do the right thing even if CPython's
948 Regardless, ipython should do the right thing even if CPython's
944 '>>>' prompt doesn't.
949 '>>>' prompt doesn't.
945 (InteractiveShell): removed subclassing code.InteractiveConsole
950 (InteractiveShell): removed subclassing code.InteractiveConsole
946 class. By now we'd overridden just about all of its methods: I've
951 class. By now we'd overridden just about all of its methods: I've
947 copied the remaining two over, and now ipython is a standalone
952 copied the remaining two over, and now ipython is a standalone
948 class. This will provide a clearer picture for the chainsaw
953 class. This will provide a clearer picture for the chainsaw
949 branch refactoring.
954 branch refactoring.
950
955
951 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
956 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
952
957
953 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
958 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
954 failures for objects which break when dir() is called on them.
959 failures for objects which break when dir() is called on them.
955
960
956 * IPython/FlexCompleter.py (Completer.__init__): Added support for
961 * IPython/FlexCompleter.py (Completer.__init__): Added support for
957 distinct local and global namespaces in the completer API. This
962 distinct local and global namespaces in the completer API. This
958 change allows us top properly handle completion with distinct
963 change allows us top properly handle completion with distinct
959 scopes, including in embedded instances (this had never really
964 scopes, including in embedded instances (this had never really
960 worked correctly).
965 worked correctly).
961
966
962 Note: this introduces a change in the constructor for
967 Note: this introduces a change in the constructor for
963 MagicCompleter, as a new global_namespace parameter is now the
968 MagicCompleter, as a new global_namespace parameter is now the
964 second argument (the others were bumped one position).
969 second argument (the others were bumped one position).
965
970
966 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
971 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
967
972
968 * IPython/iplib.py (embed_mainloop): fix tab-completion in
973 * IPython/iplib.py (embed_mainloop): fix tab-completion in
969 embedded instances (which can be done now thanks to Vivian's
974 embedded instances (which can be done now thanks to Vivian's
970 frame-handling fixes for pdb).
975 frame-handling fixes for pdb).
971 (InteractiveShell.__init__): Fix namespace handling problem in
976 (InteractiveShell.__init__): Fix namespace handling problem in
972 embedded instances. We were overwriting __main__ unconditionally,
977 embedded instances. We were overwriting __main__ unconditionally,
973 and this should only be done for 'full' (non-embedded) IPython;
978 and this should only be done for 'full' (non-embedded) IPython;
974 embedded instances must respect the caller's __main__. Thanks to
979 embedded instances must respect the caller's __main__. Thanks to
975 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
980 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
976
981
977 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
982 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
978
983
979 * setup.py: added download_url to setup(). This registers the
984 * setup.py: added download_url to setup(). This registers the
980 download address at PyPI, which is not only useful to humans
985 download address at PyPI, which is not only useful to humans
981 browsing the site, but is also picked up by setuptools (the Eggs
986 browsing the site, but is also picked up by setuptools (the Eggs
982 machinery). Thanks to Ville and R. Kern for the info/discussion
987 machinery). Thanks to Ville and R. Kern for the info/discussion
983 on this.
988 on this.
984
989
985 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
990 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
986
991
987 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
992 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
988 This brings a lot of nice functionality to the pdb mode, which now
993 This brings a lot of nice functionality to the pdb mode, which now
989 has tab-completion, syntax highlighting, and better stack handling
994 has tab-completion, syntax highlighting, and better stack handling
990 than before. Many thanks to Vivian De Smedt
995 than before. Many thanks to Vivian De Smedt
991 <vivian-AT-vdesmedt.com> for the original patches.
996 <vivian-AT-vdesmedt.com> for the original patches.
992
997
993 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
998 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
994
999
995 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1000 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
996 sequence to consistently accept the banner argument. The
1001 sequence to consistently accept the banner argument. The
997 inconsistency was tripping SAGE, thanks to Gary Zablackis
1002 inconsistency was tripping SAGE, thanks to Gary Zablackis
998 <gzabl-AT-yahoo.com> for the report.
1003 <gzabl-AT-yahoo.com> for the report.
999
1004
1000 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1005 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1001
1006
1002 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1007 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1003 Fix bug where a naked 'alias' call in the ipythonrc file would
1008 Fix bug where a naked 'alias' call in the ipythonrc file would
1004 cause a crash. Bug reported by Jorgen Stenarson.
1009 cause a crash. Bug reported by Jorgen Stenarson.
1005
1010
1006 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1011 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1007
1012
1008 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1013 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1009 startup time.
1014 startup time.
1010
1015
1011 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1016 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1012 instances had introduced a bug with globals in normal code. Now
1017 instances had introduced a bug with globals in normal code. Now
1013 it's working in all cases.
1018 it's working in all cases.
1014
1019
1015 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1020 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1016 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1021 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1017 has been introduced to set the default case sensitivity of the
1022 has been introduced to set the default case sensitivity of the
1018 searches. Users can still select either mode at runtime on a
1023 searches. Users can still select either mode at runtime on a
1019 per-search basis.
1024 per-search basis.
1020
1025
1021 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1026 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1022
1027
1023 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1028 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1024 attributes in wildcard searches for subclasses. Modified version
1029 attributes in wildcard searches for subclasses. Modified version
1025 of a patch by Jorgen.
1030 of a patch by Jorgen.
1026
1031
1027 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1032 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1028
1033
1029 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1034 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1030 embedded instances. I added a user_global_ns attribute to the
1035 embedded instances. I added a user_global_ns attribute to the
1031 InteractiveShell class to handle this.
1036 InteractiveShell class to handle this.
1032
1037
1033 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1038 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1034
1039
1035 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1040 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1036 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1041 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1037 (reported under win32, but may happen also in other platforms).
1042 (reported under win32, but may happen also in other platforms).
1038 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1043 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1039
1044
1040 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1045 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1041
1046
1042 * IPython/Magic.py (magic_psearch): new support for wildcard
1047 * IPython/Magic.py (magic_psearch): new support for wildcard
1043 patterns. Now, typing ?a*b will list all names which begin with a
1048 patterns. Now, typing ?a*b will list all names which begin with a
1044 and end in b, for example. The %psearch magic has full
1049 and end in b, for example. The %psearch magic has full
1045 docstrings. Many thanks to JΓΆrgen Stenarson
1050 docstrings. Many thanks to JΓΆrgen Stenarson
1046 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1051 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1047 implementing this functionality.
1052 implementing this functionality.
1048
1053
1049 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1054 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1050
1055
1051 * Manual: fixed long-standing annoyance of double-dashes (as in
1056 * Manual: fixed long-standing annoyance of double-dashes (as in
1052 --prefix=~, for example) being stripped in the HTML version. This
1057 --prefix=~, for example) being stripped in the HTML version. This
1053 is a latex2html bug, but a workaround was provided. Many thanks
1058 is a latex2html bug, but a workaround was provided. Many thanks
1054 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1059 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1055 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1060 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1056 rolling. This seemingly small issue had tripped a number of users
1061 rolling. This seemingly small issue had tripped a number of users
1057 when first installing, so I'm glad to see it gone.
1062 when first installing, so I'm glad to see it gone.
1058
1063
1059 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1064 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1060
1065
1061 * IPython/Extensions/numeric_formats.py: fix missing import,
1066 * IPython/Extensions/numeric_formats.py: fix missing import,
1062 reported by Stephen Walton.
1067 reported by Stephen Walton.
1063
1068
1064 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1069 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1065
1070
1066 * IPython/demo.py: finish demo module, fully documented now.
1071 * IPython/demo.py: finish demo module, fully documented now.
1067
1072
1068 * IPython/genutils.py (file_read): simple little utility to read a
1073 * IPython/genutils.py (file_read): simple little utility to read a
1069 file and ensure it's closed afterwards.
1074 file and ensure it's closed afterwards.
1070
1075
1071 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1076 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1072
1077
1073 * IPython/demo.py (Demo.__init__): added support for individually
1078 * IPython/demo.py (Demo.__init__): added support for individually
1074 tagging blocks for automatic execution.
1079 tagging blocks for automatic execution.
1075
1080
1076 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1081 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1077 syntax-highlighted python sources, requested by John.
1082 syntax-highlighted python sources, requested by John.
1078
1083
1079 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1084 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1080
1085
1081 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1086 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1082 finishing.
1087 finishing.
1083
1088
1084 * IPython/genutils.py (shlex_split): moved from Magic to here,
1089 * IPython/genutils.py (shlex_split): moved from Magic to here,
1085 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1090 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1086
1091
1087 * IPython/demo.py (Demo.__init__): added support for silent
1092 * IPython/demo.py (Demo.__init__): added support for silent
1088 blocks, improved marks as regexps, docstrings written.
1093 blocks, improved marks as regexps, docstrings written.
1089 (Demo.__init__): better docstring, added support for sys.argv.
1094 (Demo.__init__): better docstring, added support for sys.argv.
1090
1095
1091 * IPython/genutils.py (marquee): little utility used by the demo
1096 * IPython/genutils.py (marquee): little utility used by the demo
1092 code, handy in general.
1097 code, handy in general.
1093
1098
1094 * IPython/demo.py (Demo.__init__): new class for interactive
1099 * IPython/demo.py (Demo.__init__): new class for interactive
1095 demos. Not documented yet, I just wrote it in a hurry for
1100 demos. Not documented yet, I just wrote it in a hurry for
1096 scipy'05. Will docstring later.
1101 scipy'05. Will docstring later.
1097
1102
1098 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1103 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1099
1104
1100 * IPython/Shell.py (sigint_handler): Drastic simplification which
1105 * IPython/Shell.py (sigint_handler): Drastic simplification which
1101 also seems to make Ctrl-C work correctly across threads! This is
1106 also seems to make Ctrl-C work correctly across threads! This is
1102 so simple, that I can't beleive I'd missed it before. Needs more
1107 so simple, that I can't beleive I'd missed it before. Needs more
1103 testing, though.
1108 testing, though.
1104 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1109 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1105 like this before...
1110 like this before...
1106
1111
1107 * IPython/genutils.py (get_home_dir): add protection against
1112 * IPython/genutils.py (get_home_dir): add protection against
1108 non-dirs in win32 registry.
1113 non-dirs in win32 registry.
1109
1114
1110 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1115 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1111 bug where dict was mutated while iterating (pysh crash).
1116 bug where dict was mutated while iterating (pysh crash).
1112
1117
1113 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1118 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1114
1119
1115 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1120 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1116 spurious newlines added by this routine. After a report by
1121 spurious newlines added by this routine. After a report by
1117 F. Mantegazza.
1122 F. Mantegazza.
1118
1123
1119 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1124 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1120
1125
1121 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1126 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1122 calls. These were a leftover from the GTK 1.x days, and can cause
1127 calls. These were a leftover from the GTK 1.x days, and can cause
1123 problems in certain cases (after a report by John Hunter).
1128 problems in certain cases (after a report by John Hunter).
1124
1129
1125 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1130 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1126 os.getcwd() fails at init time. Thanks to patch from David Remahl
1131 os.getcwd() fails at init time. Thanks to patch from David Remahl
1127 <chmod007-AT-mac.com>.
1132 <chmod007-AT-mac.com>.
1128 (InteractiveShell.__init__): prevent certain special magics from
1133 (InteractiveShell.__init__): prevent certain special magics from
1129 being shadowed by aliases. Closes
1134 being shadowed by aliases. Closes
1130 http://www.scipy.net/roundup/ipython/issue41.
1135 http://www.scipy.net/roundup/ipython/issue41.
1131
1136
1132 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1137 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1133
1138
1134 * IPython/iplib.py (InteractiveShell.complete): Added new
1139 * IPython/iplib.py (InteractiveShell.complete): Added new
1135 top-level completion method to expose the completion mechanism
1140 top-level completion method to expose the completion mechanism
1136 beyond readline-based environments.
1141 beyond readline-based environments.
1137
1142
1138 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1143 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1139
1144
1140 * tools/ipsvnc (svnversion): fix svnversion capture.
1145 * tools/ipsvnc (svnversion): fix svnversion capture.
1141
1146
1142 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1147 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1143 attribute to self, which was missing. Before, it was set by a
1148 attribute to self, which was missing. Before, it was set by a
1144 routine which in certain cases wasn't being called, so the
1149 routine which in certain cases wasn't being called, so the
1145 instance could end up missing the attribute. This caused a crash.
1150 instance could end up missing the attribute. This caused a crash.
1146 Closes http://www.scipy.net/roundup/ipython/issue40.
1151 Closes http://www.scipy.net/roundup/ipython/issue40.
1147
1152
1148 2005-08-16 Fernando Perez <fperez@colorado.edu>
1153 2005-08-16 Fernando Perez <fperez@colorado.edu>
1149
1154
1150 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1155 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1151 contains non-string attribute. Closes
1156 contains non-string attribute. Closes
1152 http://www.scipy.net/roundup/ipython/issue38.
1157 http://www.scipy.net/roundup/ipython/issue38.
1153
1158
1154 2005-08-14 Fernando Perez <fperez@colorado.edu>
1159 2005-08-14 Fernando Perez <fperez@colorado.edu>
1155
1160
1156 * tools/ipsvnc: Minor improvements, to add changeset info.
1161 * tools/ipsvnc: Minor improvements, to add changeset info.
1157
1162
1158 2005-08-12 Fernando Perez <fperez@colorado.edu>
1163 2005-08-12 Fernando Perez <fperez@colorado.edu>
1159
1164
1160 * IPython/iplib.py (runsource): remove self.code_to_run_src
1165 * IPython/iplib.py (runsource): remove self.code_to_run_src
1161 attribute. I realized this is nothing more than
1166 attribute. I realized this is nothing more than
1162 '\n'.join(self.buffer), and having the same data in two different
1167 '\n'.join(self.buffer), and having the same data in two different
1163 places is just asking for synchronization bugs. This may impact
1168 places is just asking for synchronization bugs. This may impact
1164 people who have custom exception handlers, so I need to warn
1169 people who have custom exception handlers, so I need to warn
1165 ipython-dev about it (F. Mantegazza may use them).
1170 ipython-dev about it (F. Mantegazza may use them).
1166
1171
1167 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1172 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1168
1173
1169 * IPython/genutils.py: fix 2.2 compatibility (generators)
1174 * IPython/genutils.py: fix 2.2 compatibility (generators)
1170
1175
1171 2005-07-18 Fernando Perez <fperez@colorado.edu>
1176 2005-07-18 Fernando Perez <fperez@colorado.edu>
1172
1177
1173 * IPython/genutils.py (get_home_dir): fix to help users with
1178 * IPython/genutils.py (get_home_dir): fix to help users with
1174 invalid $HOME under win32.
1179 invalid $HOME under win32.
1175
1180
1176 2005-07-17 Fernando Perez <fperez@colorado.edu>
1181 2005-07-17 Fernando Perez <fperez@colorado.edu>
1177
1182
1178 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1183 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1179 some old hacks and clean up a bit other routines; code should be
1184 some old hacks and clean up a bit other routines; code should be
1180 simpler and a bit faster.
1185 simpler and a bit faster.
1181
1186
1182 * IPython/iplib.py (interact): removed some last-resort attempts
1187 * IPython/iplib.py (interact): removed some last-resort attempts
1183 to survive broken stdout/stderr. That code was only making it
1188 to survive broken stdout/stderr. That code was only making it
1184 harder to abstract out the i/o (necessary for gui integration),
1189 harder to abstract out the i/o (necessary for gui integration),
1185 and the crashes it could prevent were extremely rare in practice
1190 and the crashes it could prevent were extremely rare in practice
1186 (besides being fully user-induced in a pretty violent manner).
1191 (besides being fully user-induced in a pretty violent manner).
1187
1192
1188 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1193 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1189 Nothing major yet, but the code is simpler to read; this should
1194 Nothing major yet, but the code is simpler to read; this should
1190 make it easier to do more serious modifications in the future.
1195 make it easier to do more serious modifications in the future.
1191
1196
1192 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1197 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1193 which broke in .15 (thanks to a report by Ville).
1198 which broke in .15 (thanks to a report by Ville).
1194
1199
1195 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1200 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1196 be quite correct, I know next to nothing about unicode). This
1201 be quite correct, I know next to nothing about unicode). This
1197 will allow unicode strings to be used in prompts, amongst other
1202 will allow unicode strings to be used in prompts, amongst other
1198 cases. It also will prevent ipython from crashing when unicode
1203 cases. It also will prevent ipython from crashing when unicode
1199 shows up unexpectedly in many places. If ascii encoding fails, we
1204 shows up unexpectedly in many places. If ascii encoding fails, we
1200 assume utf_8. Currently the encoding is not a user-visible
1205 assume utf_8. Currently the encoding is not a user-visible
1201 setting, though it could be made so if there is demand for it.
1206 setting, though it could be made so if there is demand for it.
1202
1207
1203 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1208 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1204
1209
1205 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1210 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1206
1211
1207 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1212 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1208
1213
1209 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1214 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1210 code can work transparently for 2.2/2.3.
1215 code can work transparently for 2.2/2.3.
1211
1216
1212 2005-07-16 Fernando Perez <fperez@colorado.edu>
1217 2005-07-16 Fernando Perez <fperez@colorado.edu>
1213
1218
1214 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1219 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1215 out of the color scheme table used for coloring exception
1220 out of the color scheme table used for coloring exception
1216 tracebacks. This allows user code to add new schemes at runtime.
1221 tracebacks. This allows user code to add new schemes at runtime.
1217 This is a minimally modified version of the patch at
1222 This is a minimally modified version of the patch at
1218 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1223 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1219 for the contribution.
1224 for the contribution.
1220
1225
1221 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1226 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1222 slightly modified version of the patch in
1227 slightly modified version of the patch in
1223 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1228 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1224 to remove the previous try/except solution (which was costlier).
1229 to remove the previous try/except solution (which was costlier).
1225 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1230 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1226
1231
1227 2005-06-08 Fernando Perez <fperez@colorado.edu>
1232 2005-06-08 Fernando Perez <fperez@colorado.edu>
1228
1233
1229 * IPython/iplib.py (write/write_err): Add methods to abstract all
1234 * IPython/iplib.py (write/write_err): Add methods to abstract all
1230 I/O a bit more.
1235 I/O a bit more.
1231
1236
1232 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1237 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1233 warning, reported by Aric Hagberg, fix by JD Hunter.
1238 warning, reported by Aric Hagberg, fix by JD Hunter.
1234
1239
1235 2005-06-02 *** Released version 0.6.15
1240 2005-06-02 *** Released version 0.6.15
1236
1241
1237 2005-06-01 Fernando Perez <fperez@colorado.edu>
1242 2005-06-01 Fernando Perez <fperez@colorado.edu>
1238
1243
1239 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1244 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1240 tab-completion of filenames within open-quoted strings. Note that
1245 tab-completion of filenames within open-quoted strings. Note that
1241 this requires that in ~/.ipython/ipythonrc, users change the
1246 this requires that in ~/.ipython/ipythonrc, users change the
1242 readline delimiters configuration to read:
1247 readline delimiters configuration to read:
1243
1248
1244 readline_remove_delims -/~
1249 readline_remove_delims -/~
1245
1250
1246
1251
1247 2005-05-31 *** Released version 0.6.14
1252 2005-05-31 *** Released version 0.6.14
1248
1253
1249 2005-05-29 Fernando Perez <fperez@colorado.edu>
1254 2005-05-29 Fernando Perez <fperez@colorado.edu>
1250
1255
1251 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1256 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1252 with files not on the filesystem. Reported by Eliyahu Sandler
1257 with files not on the filesystem. Reported by Eliyahu Sandler
1253 <eli@gondolin.net>
1258 <eli@gondolin.net>
1254
1259
1255 2005-05-22 Fernando Perez <fperez@colorado.edu>
1260 2005-05-22 Fernando Perez <fperez@colorado.edu>
1256
1261
1257 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1262 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1258 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1263 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1259
1264
1260 2005-05-19 Fernando Perez <fperez@colorado.edu>
1265 2005-05-19 Fernando Perez <fperez@colorado.edu>
1261
1266
1262 * IPython/iplib.py (safe_execfile): close a file which could be
1267 * IPython/iplib.py (safe_execfile): close a file which could be
1263 left open (causing problems in win32, which locks open files).
1268 left open (causing problems in win32, which locks open files).
1264 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1269 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1265
1270
1266 2005-05-18 Fernando Perez <fperez@colorado.edu>
1271 2005-05-18 Fernando Perez <fperez@colorado.edu>
1267
1272
1268 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1273 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1269 keyword arguments correctly to safe_execfile().
1274 keyword arguments correctly to safe_execfile().
1270
1275
1271 2005-05-13 Fernando Perez <fperez@colorado.edu>
1276 2005-05-13 Fernando Perez <fperez@colorado.edu>
1272
1277
1273 * ipython.1: Added info about Qt to manpage, and threads warning
1278 * ipython.1: Added info about Qt to manpage, and threads warning
1274 to usage page (invoked with --help).
1279 to usage page (invoked with --help).
1275
1280
1276 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1281 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1277 new matcher (it goes at the end of the priority list) to do
1282 new matcher (it goes at the end of the priority list) to do
1278 tab-completion on named function arguments. Submitted by George
1283 tab-completion on named function arguments. Submitted by George
1279 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1284 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1280 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1285 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1281 for more details.
1286 for more details.
1282
1287
1283 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1288 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1284 SystemExit exceptions in the script being run. Thanks to a report
1289 SystemExit exceptions in the script being run. Thanks to a report
1285 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1290 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1286 producing very annoying behavior when running unit tests.
1291 producing very annoying behavior when running unit tests.
1287
1292
1288 2005-05-12 Fernando Perez <fperez@colorado.edu>
1293 2005-05-12 Fernando Perez <fperez@colorado.edu>
1289
1294
1290 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1295 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1291 which I'd broken (again) due to a changed regexp. In the process,
1296 which I'd broken (again) due to a changed regexp. In the process,
1292 added ';' as an escape to auto-quote the whole line without
1297 added ';' as an escape to auto-quote the whole line without
1293 splitting its arguments. Thanks to a report by Jerry McRae
1298 splitting its arguments. Thanks to a report by Jerry McRae
1294 <qrs0xyc02-AT-sneakemail.com>.
1299 <qrs0xyc02-AT-sneakemail.com>.
1295
1300
1296 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1301 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1297 possible crashes caused by a TokenError. Reported by Ed Schofield
1302 possible crashes caused by a TokenError. Reported by Ed Schofield
1298 <schofield-AT-ftw.at>.
1303 <schofield-AT-ftw.at>.
1299
1304
1300 2005-05-06 Fernando Perez <fperez@colorado.edu>
1305 2005-05-06 Fernando Perez <fperez@colorado.edu>
1301
1306
1302 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1307 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1303
1308
1304 2005-04-29 Fernando Perez <fperez@colorado.edu>
1309 2005-04-29 Fernando Perez <fperez@colorado.edu>
1305
1310
1306 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1311 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1307 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1312 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1308 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1313 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1309 which provides support for Qt interactive usage (similar to the
1314 which provides support for Qt interactive usage (similar to the
1310 existing one for WX and GTK). This had been often requested.
1315 existing one for WX and GTK). This had been often requested.
1311
1316
1312 2005-04-14 *** Released version 0.6.13
1317 2005-04-14 *** Released version 0.6.13
1313
1318
1314 2005-04-08 Fernando Perez <fperez@colorado.edu>
1319 2005-04-08 Fernando Perez <fperez@colorado.edu>
1315
1320
1316 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1321 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1317 from _ofind, which gets called on almost every input line. Now,
1322 from _ofind, which gets called on almost every input line. Now,
1318 we only try to get docstrings if they are actually going to be
1323 we only try to get docstrings if they are actually going to be
1319 used (the overhead of fetching unnecessary docstrings can be
1324 used (the overhead of fetching unnecessary docstrings can be
1320 noticeable for certain objects, such as Pyro proxies).
1325 noticeable for certain objects, such as Pyro proxies).
1321
1326
1322 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1327 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1323 for completers. For some reason I had been passing them the state
1328 for completers. For some reason I had been passing them the state
1324 variable, which completers never actually need, and was in
1329 variable, which completers never actually need, and was in
1325 conflict with the rlcompleter API. Custom completers ONLY need to
1330 conflict with the rlcompleter API. Custom completers ONLY need to
1326 take the text parameter.
1331 take the text parameter.
1327
1332
1328 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1333 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1329 work correctly in pysh. I've also moved all the logic which used
1334 work correctly in pysh. I've also moved all the logic which used
1330 to be in pysh.py here, which will prevent problems with future
1335 to be in pysh.py here, which will prevent problems with future
1331 upgrades. However, this time I must warn users to update their
1336 upgrades. However, this time I must warn users to update their
1332 pysh profile to include the line
1337 pysh profile to include the line
1333
1338
1334 import_all IPython.Extensions.InterpreterExec
1339 import_all IPython.Extensions.InterpreterExec
1335
1340
1336 because otherwise things won't work for them. They MUST also
1341 because otherwise things won't work for them. They MUST also
1337 delete pysh.py and the line
1342 delete pysh.py and the line
1338
1343
1339 execfile pysh.py
1344 execfile pysh.py
1340
1345
1341 from their ipythonrc-pysh.
1346 from their ipythonrc-pysh.
1342
1347
1343 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1348 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1344 robust in the face of objects whose dir() returns non-strings
1349 robust in the face of objects whose dir() returns non-strings
1345 (which it shouldn't, but some broken libs like ITK do). Thanks to
1350 (which it shouldn't, but some broken libs like ITK do). Thanks to
1346 a patch by John Hunter (implemented differently, though). Also
1351 a patch by John Hunter (implemented differently, though). Also
1347 minor improvements by using .extend instead of + on lists.
1352 minor improvements by using .extend instead of + on lists.
1348
1353
1349 * pysh.py:
1354 * pysh.py:
1350
1355
1351 2005-04-06 Fernando Perez <fperez@colorado.edu>
1356 2005-04-06 Fernando Perez <fperez@colorado.edu>
1352
1357
1353 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1358 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1354 by default, so that all users benefit from it. Those who don't
1359 by default, so that all users benefit from it. Those who don't
1355 want it can still turn it off.
1360 want it can still turn it off.
1356
1361
1357 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1362 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1358 config file, I'd forgotten about this, so users were getting it
1363 config file, I'd forgotten about this, so users were getting it
1359 off by default.
1364 off by default.
1360
1365
1361 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1366 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1362 consistency. Now magics can be called in multiline statements,
1367 consistency. Now magics can be called in multiline statements,
1363 and python variables can be expanded in magic calls via $var.
1368 and python variables can be expanded in magic calls via $var.
1364 This makes the magic system behave just like aliases or !system
1369 This makes the magic system behave just like aliases or !system
1365 calls.
1370 calls.
1366
1371
1367 2005-03-28 Fernando Perez <fperez@colorado.edu>
1372 2005-03-28 Fernando Perez <fperez@colorado.edu>
1368
1373
1369 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1374 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1370 expensive string additions for building command. Add support for
1375 expensive string additions for building command. Add support for
1371 trailing ';' when autocall is used.
1376 trailing ';' when autocall is used.
1372
1377
1373 2005-03-26 Fernando Perez <fperez@colorado.edu>
1378 2005-03-26 Fernando Perez <fperez@colorado.edu>
1374
1379
1375 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1380 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1376 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1381 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1377 ipython.el robust against prompts with any number of spaces
1382 ipython.el robust against prompts with any number of spaces
1378 (including 0) after the ':' character.
1383 (including 0) after the ':' character.
1379
1384
1380 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1385 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1381 continuation prompt, which misled users to think the line was
1386 continuation prompt, which misled users to think the line was
1382 already indented. Closes debian Bug#300847, reported to me by
1387 already indented. Closes debian Bug#300847, reported to me by
1383 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1388 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1384
1389
1385 2005-03-23 Fernando Perez <fperez@colorado.edu>
1390 2005-03-23 Fernando Perez <fperez@colorado.edu>
1386
1391
1387 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1392 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1388 properly aligned if they have embedded newlines.
1393 properly aligned if they have embedded newlines.
1389
1394
1390 * IPython/iplib.py (runlines): Add a public method to expose
1395 * IPython/iplib.py (runlines): Add a public method to expose
1391 IPython's code execution machinery, so that users can run strings
1396 IPython's code execution machinery, so that users can run strings
1392 as if they had been typed at the prompt interactively.
1397 as if they had been typed at the prompt interactively.
1393 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1398 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1394 methods which can call the system shell, but with python variable
1399 methods which can call the system shell, but with python variable
1395 expansion. The three such methods are: __IPYTHON__.system,
1400 expansion. The three such methods are: __IPYTHON__.system,
1396 .getoutput and .getoutputerror. These need to be documented in a
1401 .getoutput and .getoutputerror. These need to be documented in a
1397 'public API' section (to be written) of the manual.
1402 'public API' section (to be written) of the manual.
1398
1403
1399 2005-03-20 Fernando Perez <fperez@colorado.edu>
1404 2005-03-20 Fernando Perez <fperez@colorado.edu>
1400
1405
1401 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1406 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1402 for custom exception handling. This is quite powerful, and it
1407 for custom exception handling. This is quite powerful, and it
1403 allows for user-installable exception handlers which can trap
1408 allows for user-installable exception handlers which can trap
1404 custom exceptions at runtime and treat them separately from
1409 custom exceptions at runtime and treat them separately from
1405 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1410 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1406 Mantegazza <mantegazza-AT-ill.fr>.
1411 Mantegazza <mantegazza-AT-ill.fr>.
1407 (InteractiveShell.set_custom_completer): public API function to
1412 (InteractiveShell.set_custom_completer): public API function to
1408 add new completers at runtime.
1413 add new completers at runtime.
1409
1414
1410 2005-03-19 Fernando Perez <fperez@colorado.edu>
1415 2005-03-19 Fernando Perez <fperez@colorado.edu>
1411
1416
1412 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1417 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1413 allow objects which provide their docstrings via non-standard
1418 allow objects which provide their docstrings via non-standard
1414 mechanisms (like Pyro proxies) to still be inspected by ipython's
1419 mechanisms (like Pyro proxies) to still be inspected by ipython's
1415 ? system.
1420 ? system.
1416
1421
1417 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1422 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1418 automatic capture system. I tried quite hard to make it work
1423 automatic capture system. I tried quite hard to make it work
1419 reliably, and simply failed. I tried many combinations with the
1424 reliably, and simply failed. I tried many combinations with the
1420 subprocess module, but eventually nothing worked in all needed
1425 subprocess module, but eventually nothing worked in all needed
1421 cases (not blocking stdin for the child, duplicating stdout
1426 cases (not blocking stdin for the child, duplicating stdout
1422 without blocking, etc). The new %sc/%sx still do capture to these
1427 without blocking, etc). The new %sc/%sx still do capture to these
1423 magical list/string objects which make shell use much more
1428 magical list/string objects which make shell use much more
1424 conveninent, so not all is lost.
1429 conveninent, so not all is lost.
1425
1430
1426 XXX - FIX MANUAL for the change above!
1431 XXX - FIX MANUAL for the change above!
1427
1432
1428 (runsource): I copied code.py's runsource() into ipython to modify
1433 (runsource): I copied code.py's runsource() into ipython to modify
1429 it a bit. Now the code object and source to be executed are
1434 it a bit. Now the code object and source to be executed are
1430 stored in ipython. This makes this info accessible to third-party
1435 stored in ipython. This makes this info accessible to third-party
1431 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1436 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1432 Mantegazza <mantegazza-AT-ill.fr>.
1437 Mantegazza <mantegazza-AT-ill.fr>.
1433
1438
1434 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1439 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1435 history-search via readline (like C-p/C-n). I'd wanted this for a
1440 history-search via readline (like C-p/C-n). I'd wanted this for a
1436 long time, but only recently found out how to do it. For users
1441 long time, but only recently found out how to do it. For users
1437 who already have their ipythonrc files made and want this, just
1442 who already have their ipythonrc files made and want this, just
1438 add:
1443 add:
1439
1444
1440 readline_parse_and_bind "\e[A": history-search-backward
1445 readline_parse_and_bind "\e[A": history-search-backward
1441 readline_parse_and_bind "\e[B": history-search-forward
1446 readline_parse_and_bind "\e[B": history-search-forward
1442
1447
1443 2005-03-18 Fernando Perez <fperez@colorado.edu>
1448 2005-03-18 Fernando Perez <fperez@colorado.edu>
1444
1449
1445 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1450 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1446 LSString and SList classes which allow transparent conversions
1451 LSString and SList classes which allow transparent conversions
1447 between list mode and whitespace-separated string.
1452 between list mode and whitespace-separated string.
1448 (magic_r): Fix recursion problem in %r.
1453 (magic_r): Fix recursion problem in %r.
1449
1454
1450 * IPython/genutils.py (LSString): New class to be used for
1455 * IPython/genutils.py (LSString): New class to be used for
1451 automatic storage of the results of all alias/system calls in _o
1456 automatic storage of the results of all alias/system calls in _o
1452 and _e (stdout/err). These provide a .l/.list attribute which
1457 and _e (stdout/err). These provide a .l/.list attribute which
1453 does automatic splitting on newlines. This means that for most
1458 does automatic splitting on newlines. This means that for most
1454 uses, you'll never need to do capturing of output with %sc/%sx
1459 uses, you'll never need to do capturing of output with %sc/%sx
1455 anymore, since ipython keeps this always done for you. Note that
1460 anymore, since ipython keeps this always done for you. Note that
1456 only the LAST results are stored, the _o/e variables are
1461 only the LAST results are stored, the _o/e variables are
1457 overwritten on each call. If you need to save their contents
1462 overwritten on each call. If you need to save their contents
1458 further, simply bind them to any other name.
1463 further, simply bind them to any other name.
1459
1464
1460 2005-03-17 Fernando Perez <fperez@colorado.edu>
1465 2005-03-17 Fernando Perez <fperez@colorado.edu>
1461
1466
1462 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1467 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1463 prompt namespace handling.
1468 prompt namespace handling.
1464
1469
1465 2005-03-16 Fernando Perez <fperez@colorado.edu>
1470 2005-03-16 Fernando Perez <fperez@colorado.edu>
1466
1471
1467 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1472 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1468 classic prompts to be '>>> ' (final space was missing, and it
1473 classic prompts to be '>>> ' (final space was missing, and it
1469 trips the emacs python mode).
1474 trips the emacs python mode).
1470 (BasePrompt.__str__): Added safe support for dynamic prompt
1475 (BasePrompt.__str__): Added safe support for dynamic prompt
1471 strings. Now you can set your prompt string to be '$x', and the
1476 strings. Now you can set your prompt string to be '$x', and the
1472 value of x will be printed from your interactive namespace. The
1477 value of x will be printed from your interactive namespace. The
1473 interpolation syntax includes the full Itpl support, so
1478 interpolation syntax includes the full Itpl support, so
1474 ${foo()+x+bar()} is a valid prompt string now, and the function
1479 ${foo()+x+bar()} is a valid prompt string now, and the function
1475 calls will be made at runtime.
1480 calls will be made at runtime.
1476
1481
1477 2005-03-15 Fernando Perez <fperez@colorado.edu>
1482 2005-03-15 Fernando Perez <fperez@colorado.edu>
1478
1483
1479 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1484 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1480 avoid name clashes in pylab. %hist still works, it just forwards
1485 avoid name clashes in pylab. %hist still works, it just forwards
1481 the call to %history.
1486 the call to %history.
1482
1487
1483 2005-03-02 *** Released version 0.6.12
1488 2005-03-02 *** Released version 0.6.12
1484
1489
1485 2005-03-02 Fernando Perez <fperez@colorado.edu>
1490 2005-03-02 Fernando Perez <fperez@colorado.edu>
1486
1491
1487 * IPython/iplib.py (handle_magic): log magic calls properly as
1492 * IPython/iplib.py (handle_magic): log magic calls properly as
1488 ipmagic() function calls.
1493 ipmagic() function calls.
1489
1494
1490 * IPython/Magic.py (magic_time): Improved %time to support
1495 * IPython/Magic.py (magic_time): Improved %time to support
1491 statements and provide wall-clock as well as CPU time.
1496 statements and provide wall-clock as well as CPU time.
1492
1497
1493 2005-02-27 Fernando Perez <fperez@colorado.edu>
1498 2005-02-27 Fernando Perez <fperez@colorado.edu>
1494
1499
1495 * IPython/hooks.py: New hooks module, to expose user-modifiable
1500 * IPython/hooks.py: New hooks module, to expose user-modifiable
1496 IPython functionality in a clean manner. For now only the editor
1501 IPython functionality in a clean manner. For now only the editor
1497 hook is actually written, and other thigns which I intend to turn
1502 hook is actually written, and other thigns which I intend to turn
1498 into proper hooks aren't yet there. The display and prefilter
1503 into proper hooks aren't yet there. The display and prefilter
1499 stuff, for example, should be hooks. But at least now the
1504 stuff, for example, should be hooks. But at least now the
1500 framework is in place, and the rest can be moved here with more
1505 framework is in place, and the rest can be moved here with more
1501 time later. IPython had had a .hooks variable for a long time for
1506 time later. IPython had had a .hooks variable for a long time for
1502 this purpose, but I'd never actually used it for anything.
1507 this purpose, but I'd never actually used it for anything.
1503
1508
1504 2005-02-26 Fernando Perez <fperez@colorado.edu>
1509 2005-02-26 Fernando Perez <fperez@colorado.edu>
1505
1510
1506 * IPython/ipmaker.py (make_IPython): make the default ipython
1511 * IPython/ipmaker.py (make_IPython): make the default ipython
1507 directory be called _ipython under win32, to follow more the
1512 directory be called _ipython under win32, to follow more the
1508 naming peculiarities of that platform (where buggy software like
1513 naming peculiarities of that platform (where buggy software like
1509 Visual Sourcesafe breaks with .named directories). Reported by
1514 Visual Sourcesafe breaks with .named directories). Reported by
1510 Ville Vainio.
1515 Ville Vainio.
1511
1516
1512 2005-02-23 Fernando Perez <fperez@colorado.edu>
1517 2005-02-23 Fernando Perez <fperez@colorado.edu>
1513
1518
1514 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1519 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1515 auto_aliases for win32 which were causing problems. Users can
1520 auto_aliases for win32 which were causing problems. Users can
1516 define the ones they personally like.
1521 define the ones they personally like.
1517
1522
1518 2005-02-21 Fernando Perez <fperez@colorado.edu>
1523 2005-02-21 Fernando Perez <fperez@colorado.edu>
1519
1524
1520 * IPython/Magic.py (magic_time): new magic to time execution of
1525 * IPython/Magic.py (magic_time): new magic to time execution of
1521 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1526 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1522
1527
1523 2005-02-19 Fernando Perez <fperez@colorado.edu>
1528 2005-02-19 Fernando Perez <fperez@colorado.edu>
1524
1529
1525 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1530 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1526 into keys (for prompts, for example).
1531 into keys (for prompts, for example).
1527
1532
1528 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1533 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1529 prompts in case users want them. This introduces a small behavior
1534 prompts in case users want them. This introduces a small behavior
1530 change: ipython does not automatically add a space to all prompts
1535 change: ipython does not automatically add a space to all prompts
1531 anymore. To get the old prompts with a space, users should add it
1536 anymore. To get the old prompts with a space, users should add it
1532 manually to their ipythonrc file, so for example prompt_in1 should
1537 manually to their ipythonrc file, so for example prompt_in1 should
1533 now read 'In [\#]: ' instead of 'In [\#]:'.
1538 now read 'In [\#]: ' instead of 'In [\#]:'.
1534 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1539 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1535 file) to control left-padding of secondary prompts.
1540 file) to control left-padding of secondary prompts.
1536
1541
1537 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1542 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1538 the profiler can't be imported. Fix for Debian, which removed
1543 the profiler can't be imported. Fix for Debian, which removed
1539 profile.py because of License issues. I applied a slightly
1544 profile.py because of License issues. I applied a slightly
1540 modified version of the original Debian patch at
1545 modified version of the original Debian patch at
1541 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1546 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1542
1547
1543 2005-02-17 Fernando Perez <fperez@colorado.edu>
1548 2005-02-17 Fernando Perez <fperez@colorado.edu>
1544
1549
1545 * IPython/genutils.py (native_line_ends): Fix bug which would
1550 * IPython/genutils.py (native_line_ends): Fix bug which would
1546 cause improper line-ends under win32 b/c I was not opening files
1551 cause improper line-ends under win32 b/c I was not opening files
1547 in binary mode. Bug report and fix thanks to Ville.
1552 in binary mode. Bug report and fix thanks to Ville.
1548
1553
1549 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1554 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1550 trying to catch spurious foo[1] autocalls. My fix actually broke
1555 trying to catch spurious foo[1] autocalls. My fix actually broke
1551 ',/' autoquote/call with explicit escape (bad regexp).
1556 ',/' autoquote/call with explicit escape (bad regexp).
1552
1557
1553 2005-02-15 *** Released version 0.6.11
1558 2005-02-15 *** Released version 0.6.11
1554
1559
1555 2005-02-14 Fernando Perez <fperez@colorado.edu>
1560 2005-02-14 Fernando Perez <fperez@colorado.edu>
1556
1561
1557 * IPython/background_jobs.py: New background job management
1562 * IPython/background_jobs.py: New background job management
1558 subsystem. This is implemented via a new set of classes, and
1563 subsystem. This is implemented via a new set of classes, and
1559 IPython now provides a builtin 'jobs' object for background job
1564 IPython now provides a builtin 'jobs' object for background job
1560 execution. A convenience %bg magic serves as a lightweight
1565 execution. A convenience %bg magic serves as a lightweight
1561 frontend for starting the more common type of calls. This was
1566 frontend for starting the more common type of calls. This was
1562 inspired by discussions with B. Granger and the BackgroundCommand
1567 inspired by discussions with B. Granger and the BackgroundCommand
1563 class described in the book Python Scripting for Computational
1568 class described in the book Python Scripting for Computational
1564 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1569 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1565 (although ultimately no code from this text was used, as IPython's
1570 (although ultimately no code from this text was used, as IPython's
1566 system is a separate implementation).
1571 system is a separate implementation).
1567
1572
1568 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1573 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1569 to control the completion of single/double underscore names
1574 to control the completion of single/double underscore names
1570 separately. As documented in the example ipytonrc file, the
1575 separately. As documented in the example ipytonrc file, the
1571 readline_omit__names variable can now be set to 2, to omit even
1576 readline_omit__names variable can now be set to 2, to omit even
1572 single underscore names. Thanks to a patch by Brian Wong
1577 single underscore names. Thanks to a patch by Brian Wong
1573 <BrianWong-AT-AirgoNetworks.Com>.
1578 <BrianWong-AT-AirgoNetworks.Com>.
1574 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1579 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1575 be autocalled as foo([1]) if foo were callable. A problem for
1580 be autocalled as foo([1]) if foo were callable. A problem for
1576 things which are both callable and implement __getitem__.
1581 things which are both callable and implement __getitem__.
1577 (init_readline): Fix autoindentation for win32. Thanks to a patch
1582 (init_readline): Fix autoindentation for win32. Thanks to a patch
1578 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1583 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1579
1584
1580 2005-02-12 Fernando Perez <fperez@colorado.edu>
1585 2005-02-12 Fernando Perez <fperez@colorado.edu>
1581
1586
1582 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1587 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1583 which I had written long ago to sort out user error messages which
1588 which I had written long ago to sort out user error messages which
1584 may occur during startup. This seemed like a good idea initially,
1589 may occur during startup. This seemed like a good idea initially,
1585 but it has proven a disaster in retrospect. I don't want to
1590 but it has proven a disaster in retrospect. I don't want to
1586 change much code for now, so my fix is to set the internal 'debug'
1591 change much code for now, so my fix is to set the internal 'debug'
1587 flag to true everywhere, whose only job was precisely to control
1592 flag to true everywhere, whose only job was precisely to control
1588 this subsystem. This closes issue 28 (as well as avoiding all
1593 this subsystem. This closes issue 28 (as well as avoiding all
1589 sorts of strange hangups which occur from time to time).
1594 sorts of strange hangups which occur from time to time).
1590
1595
1591 2005-02-07 Fernando Perez <fperez@colorado.edu>
1596 2005-02-07 Fernando Perez <fperez@colorado.edu>
1592
1597
1593 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1598 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1594 previous call produced a syntax error.
1599 previous call produced a syntax error.
1595
1600
1596 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1601 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1597 classes without constructor.
1602 classes without constructor.
1598
1603
1599 2005-02-06 Fernando Perez <fperez@colorado.edu>
1604 2005-02-06 Fernando Perez <fperez@colorado.edu>
1600
1605
1601 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1606 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1602 completions with the results of each matcher, so we return results
1607 completions with the results of each matcher, so we return results
1603 to the user from all namespaces. This breaks with ipython
1608 to the user from all namespaces. This breaks with ipython
1604 tradition, but I think it's a nicer behavior. Now you get all
1609 tradition, but I think it's a nicer behavior. Now you get all
1605 possible completions listed, from all possible namespaces (python,
1610 possible completions listed, from all possible namespaces (python,
1606 filesystem, magics...) After a request by John Hunter
1611 filesystem, magics...) After a request by John Hunter
1607 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1612 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1608
1613
1609 2005-02-05 Fernando Perez <fperez@colorado.edu>
1614 2005-02-05 Fernando Perez <fperez@colorado.edu>
1610
1615
1611 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1616 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1612 the call had quote characters in it (the quotes were stripped).
1617 the call had quote characters in it (the quotes were stripped).
1613
1618
1614 2005-01-31 Fernando Perez <fperez@colorado.edu>
1619 2005-01-31 Fernando Perez <fperez@colorado.edu>
1615
1620
1616 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1621 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1617 Itpl.itpl() to make the code more robust against psyco
1622 Itpl.itpl() to make the code more robust against psyco
1618 optimizations.
1623 optimizations.
1619
1624
1620 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1625 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1621 of causing an exception. Quicker, cleaner.
1626 of causing an exception. Quicker, cleaner.
1622
1627
1623 2005-01-28 Fernando Perez <fperez@colorado.edu>
1628 2005-01-28 Fernando Perez <fperez@colorado.edu>
1624
1629
1625 * scripts/ipython_win_post_install.py (install): hardcode
1630 * scripts/ipython_win_post_install.py (install): hardcode
1626 sys.prefix+'python.exe' as the executable path. It turns out that
1631 sys.prefix+'python.exe' as the executable path. It turns out that
1627 during the post-installation run, sys.executable resolves to the
1632 during the post-installation run, sys.executable resolves to the
1628 name of the binary installer! I should report this as a distutils
1633 name of the binary installer! I should report this as a distutils
1629 bug, I think. I updated the .10 release with this tiny fix, to
1634 bug, I think. I updated the .10 release with this tiny fix, to
1630 avoid annoying the lists further.
1635 avoid annoying the lists further.
1631
1636
1632 2005-01-27 *** Released version 0.6.10
1637 2005-01-27 *** Released version 0.6.10
1633
1638
1634 2005-01-27 Fernando Perez <fperez@colorado.edu>
1639 2005-01-27 Fernando Perez <fperez@colorado.edu>
1635
1640
1636 * IPython/numutils.py (norm): Added 'inf' as optional name for
1641 * IPython/numutils.py (norm): Added 'inf' as optional name for
1637 L-infinity norm, included references to mathworld.com for vector
1642 L-infinity norm, included references to mathworld.com for vector
1638 norm definitions.
1643 norm definitions.
1639 (amin/amax): added amin/amax for array min/max. Similar to what
1644 (amin/amax): added amin/amax for array min/max. Similar to what
1640 pylab ships with after the recent reorganization of names.
1645 pylab ships with after the recent reorganization of names.
1641 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1646 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1642
1647
1643 * ipython.el: committed Alex's recent fixes and improvements.
1648 * ipython.el: committed Alex's recent fixes and improvements.
1644 Tested with python-mode from CVS, and it looks excellent. Since
1649 Tested with python-mode from CVS, and it looks excellent. Since
1645 python-mode hasn't released anything in a while, I'm temporarily
1650 python-mode hasn't released anything in a while, I'm temporarily
1646 putting a copy of today's CVS (v 4.70) of python-mode in:
1651 putting a copy of today's CVS (v 4.70) of python-mode in:
1647 http://ipython.scipy.org/tmp/python-mode.el
1652 http://ipython.scipy.org/tmp/python-mode.el
1648
1653
1649 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1654 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1650 sys.executable for the executable name, instead of assuming it's
1655 sys.executable for the executable name, instead of assuming it's
1651 called 'python.exe' (the post-installer would have produced broken
1656 called 'python.exe' (the post-installer would have produced broken
1652 setups on systems with a differently named python binary).
1657 setups on systems with a differently named python binary).
1653
1658
1654 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1659 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1655 references to os.linesep, to make the code more
1660 references to os.linesep, to make the code more
1656 platform-independent. This is also part of the win32 coloring
1661 platform-independent. This is also part of the win32 coloring
1657 fixes.
1662 fixes.
1658
1663
1659 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1664 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1660 lines, which actually cause coloring bugs because the length of
1665 lines, which actually cause coloring bugs because the length of
1661 the line is very difficult to correctly compute with embedded
1666 the line is very difficult to correctly compute with embedded
1662 escapes. This was the source of all the coloring problems under
1667 escapes. This was the source of all the coloring problems under
1663 Win32. I think that _finally_, Win32 users have a properly
1668 Win32. I think that _finally_, Win32 users have a properly
1664 working ipython in all respects. This would never have happened
1669 working ipython in all respects. This would never have happened
1665 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1670 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1666
1671
1667 2005-01-26 *** Released version 0.6.9
1672 2005-01-26 *** Released version 0.6.9
1668
1673
1669 2005-01-25 Fernando Perez <fperez@colorado.edu>
1674 2005-01-25 Fernando Perez <fperez@colorado.edu>
1670
1675
1671 * setup.py: finally, we have a true Windows installer, thanks to
1676 * setup.py: finally, we have a true Windows installer, thanks to
1672 the excellent work of Viktor Ransmayr
1677 the excellent work of Viktor Ransmayr
1673 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1678 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1674 Windows users. The setup routine is quite a bit cleaner thanks to
1679 Windows users. The setup routine is quite a bit cleaner thanks to
1675 this, and the post-install script uses the proper functions to
1680 this, and the post-install script uses the proper functions to
1676 allow a clean de-installation using the standard Windows Control
1681 allow a clean de-installation using the standard Windows Control
1677 Panel.
1682 Panel.
1678
1683
1679 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1684 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1680 environment variable under all OSes (including win32) if
1685 environment variable under all OSes (including win32) if
1681 available. This will give consistency to win32 users who have set
1686 available. This will give consistency to win32 users who have set
1682 this variable for any reason. If os.environ['HOME'] fails, the
1687 this variable for any reason. If os.environ['HOME'] fails, the
1683 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1688 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1684
1689
1685 2005-01-24 Fernando Perez <fperez@colorado.edu>
1690 2005-01-24 Fernando Perez <fperez@colorado.edu>
1686
1691
1687 * IPython/numutils.py (empty_like): add empty_like(), similar to
1692 * IPython/numutils.py (empty_like): add empty_like(), similar to
1688 zeros_like() but taking advantage of the new empty() Numeric routine.
1693 zeros_like() but taking advantage of the new empty() Numeric routine.
1689
1694
1690 2005-01-23 *** Released version 0.6.8
1695 2005-01-23 *** Released version 0.6.8
1691
1696
1692 2005-01-22 Fernando Perez <fperez@colorado.edu>
1697 2005-01-22 Fernando Perez <fperez@colorado.edu>
1693
1698
1694 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1699 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1695 automatic show() calls. After discussing things with JDH, it
1700 automatic show() calls. After discussing things with JDH, it
1696 turns out there are too many corner cases where this can go wrong.
1701 turns out there are too many corner cases where this can go wrong.
1697 It's best not to try to be 'too smart', and simply have ipython
1702 It's best not to try to be 'too smart', and simply have ipython
1698 reproduce as much as possible the default behavior of a normal
1703 reproduce as much as possible the default behavior of a normal
1699 python shell.
1704 python shell.
1700
1705
1701 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1706 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1702 line-splitting regexp and _prefilter() to avoid calling getattr()
1707 line-splitting regexp and _prefilter() to avoid calling getattr()
1703 on assignments. This closes
1708 on assignments. This closes
1704 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1709 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1705 readline uses getattr(), so a simple <TAB> keypress is still
1710 readline uses getattr(), so a simple <TAB> keypress is still
1706 enough to trigger getattr() calls on an object.
1711 enough to trigger getattr() calls on an object.
1707
1712
1708 2005-01-21 Fernando Perez <fperez@colorado.edu>
1713 2005-01-21 Fernando Perez <fperez@colorado.edu>
1709
1714
1710 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1715 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1711 docstring under pylab so it doesn't mask the original.
1716 docstring under pylab so it doesn't mask the original.
1712
1717
1713 2005-01-21 *** Released version 0.6.7
1718 2005-01-21 *** Released version 0.6.7
1714
1719
1715 2005-01-21 Fernando Perez <fperez@colorado.edu>
1720 2005-01-21 Fernando Perez <fperez@colorado.edu>
1716
1721
1717 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1722 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1718 signal handling for win32 users in multithreaded mode.
1723 signal handling for win32 users in multithreaded mode.
1719
1724
1720 2005-01-17 Fernando Perez <fperez@colorado.edu>
1725 2005-01-17 Fernando Perez <fperez@colorado.edu>
1721
1726
1722 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1727 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1723 instances with no __init__. After a crash report by Norbert Nemec
1728 instances with no __init__. After a crash report by Norbert Nemec
1724 <Norbert-AT-nemec-online.de>.
1729 <Norbert-AT-nemec-online.de>.
1725
1730
1726 2005-01-14 Fernando Perez <fperez@colorado.edu>
1731 2005-01-14 Fernando Perez <fperez@colorado.edu>
1727
1732
1728 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1733 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1729 names for verbose exceptions, when multiple dotted names and the
1734 names for verbose exceptions, when multiple dotted names and the
1730 'parent' object were present on the same line.
1735 'parent' object were present on the same line.
1731
1736
1732 2005-01-11 Fernando Perez <fperez@colorado.edu>
1737 2005-01-11 Fernando Perez <fperez@colorado.edu>
1733
1738
1734 * IPython/genutils.py (flag_calls): new utility to trap and flag
1739 * IPython/genutils.py (flag_calls): new utility to trap and flag
1735 calls in functions. I need it to clean up matplotlib support.
1740 calls in functions. I need it to clean up matplotlib support.
1736 Also removed some deprecated code in genutils.
1741 Also removed some deprecated code in genutils.
1737
1742
1738 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1743 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1739 that matplotlib scripts called with %run, which don't call show()
1744 that matplotlib scripts called with %run, which don't call show()
1740 themselves, still have their plotting windows open.
1745 themselves, still have their plotting windows open.
1741
1746
1742 2005-01-05 Fernando Perez <fperez@colorado.edu>
1747 2005-01-05 Fernando Perez <fperez@colorado.edu>
1743
1748
1744 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1749 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1745 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1750 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1746
1751
1747 2004-12-19 Fernando Perez <fperez@colorado.edu>
1752 2004-12-19 Fernando Perez <fperez@colorado.edu>
1748
1753
1749 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1754 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1750 parent_runcode, which was an eyesore. The same result can be
1755 parent_runcode, which was an eyesore. The same result can be
1751 obtained with Python's regular superclass mechanisms.
1756 obtained with Python's regular superclass mechanisms.
1752
1757
1753 2004-12-17 Fernando Perez <fperez@colorado.edu>
1758 2004-12-17 Fernando Perez <fperez@colorado.edu>
1754
1759
1755 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1760 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1756 reported by Prabhu.
1761 reported by Prabhu.
1757 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1762 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1758 sys.stderr) instead of explicitly calling sys.stderr. This helps
1763 sys.stderr) instead of explicitly calling sys.stderr. This helps
1759 maintain our I/O abstractions clean, for future GUI embeddings.
1764 maintain our I/O abstractions clean, for future GUI embeddings.
1760
1765
1761 * IPython/genutils.py (info): added new utility for sys.stderr
1766 * IPython/genutils.py (info): added new utility for sys.stderr
1762 unified info message handling (thin wrapper around warn()).
1767 unified info message handling (thin wrapper around warn()).
1763
1768
1764 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1769 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1765 composite (dotted) names on verbose exceptions.
1770 composite (dotted) names on verbose exceptions.
1766 (VerboseTB.nullrepr): harden against another kind of errors which
1771 (VerboseTB.nullrepr): harden against another kind of errors which
1767 Python's inspect module can trigger, and which were crashing
1772 Python's inspect module can trigger, and which were crashing
1768 IPython. Thanks to a report by Marco Lombardi
1773 IPython. Thanks to a report by Marco Lombardi
1769 <mlombard-AT-ma010192.hq.eso.org>.
1774 <mlombard-AT-ma010192.hq.eso.org>.
1770
1775
1771 2004-12-13 *** Released version 0.6.6
1776 2004-12-13 *** Released version 0.6.6
1772
1777
1773 2004-12-12 Fernando Perez <fperez@colorado.edu>
1778 2004-12-12 Fernando Perez <fperez@colorado.edu>
1774
1779
1775 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1780 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1776 generated by pygtk upon initialization if it was built without
1781 generated by pygtk upon initialization if it was built without
1777 threads (for matplotlib users). After a crash reported by
1782 threads (for matplotlib users). After a crash reported by
1778 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1783 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1779
1784
1780 * IPython/ipmaker.py (make_IPython): fix small bug in the
1785 * IPython/ipmaker.py (make_IPython): fix small bug in the
1781 import_some parameter for multiple imports.
1786 import_some parameter for multiple imports.
1782
1787
1783 * IPython/iplib.py (ipmagic): simplified the interface of
1788 * IPython/iplib.py (ipmagic): simplified the interface of
1784 ipmagic() to take a single string argument, just as it would be
1789 ipmagic() to take a single string argument, just as it would be
1785 typed at the IPython cmd line.
1790 typed at the IPython cmd line.
1786 (ipalias): Added new ipalias() with an interface identical to
1791 (ipalias): Added new ipalias() with an interface identical to
1787 ipmagic(). This completes exposing a pure python interface to the
1792 ipmagic(). This completes exposing a pure python interface to the
1788 alias and magic system, which can be used in loops or more complex
1793 alias and magic system, which can be used in loops or more complex
1789 code where IPython's automatic line mangling is not active.
1794 code where IPython's automatic line mangling is not active.
1790
1795
1791 * IPython/genutils.py (timing): changed interface of timing to
1796 * IPython/genutils.py (timing): changed interface of timing to
1792 simply run code once, which is the most common case. timings()
1797 simply run code once, which is the most common case. timings()
1793 remains unchanged, for the cases where you want multiple runs.
1798 remains unchanged, for the cases where you want multiple runs.
1794
1799
1795 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1800 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1796 bug where Python2.2 crashes with exec'ing code which does not end
1801 bug where Python2.2 crashes with exec'ing code which does not end
1797 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1802 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1798 before.
1803 before.
1799
1804
1800 2004-12-10 Fernando Perez <fperez@colorado.edu>
1805 2004-12-10 Fernando Perez <fperez@colorado.edu>
1801
1806
1802 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1807 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1803 -t to -T, to accomodate the new -t flag in %run (the %run and
1808 -t to -T, to accomodate the new -t flag in %run (the %run and
1804 %prun options are kind of intermixed, and it's not easy to change
1809 %prun options are kind of intermixed, and it's not easy to change
1805 this with the limitations of python's getopt).
1810 this with the limitations of python's getopt).
1806
1811
1807 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1812 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
1808 the execution of scripts. It's not as fine-tuned as timeit.py,
1813 the execution of scripts. It's not as fine-tuned as timeit.py,
1809 but it works from inside ipython (and under 2.2, which lacks
1814 but it works from inside ipython (and under 2.2, which lacks
1810 timeit.py). Optionally a number of runs > 1 can be given for
1815 timeit.py). Optionally a number of runs > 1 can be given for
1811 timing very short-running code.
1816 timing very short-running code.
1812
1817
1813 * IPython/genutils.py (uniq_stable): new routine which returns a
1818 * IPython/genutils.py (uniq_stable): new routine which returns a
1814 list of unique elements in any iterable, but in stable order of
1819 list of unique elements in any iterable, but in stable order of
1815 appearance. I needed this for the ultraTB fixes, and it's a handy
1820 appearance. I needed this for the ultraTB fixes, and it's a handy
1816 utility.
1821 utility.
1817
1822
1818 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1823 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
1819 dotted names in Verbose exceptions. This had been broken since
1824 dotted names in Verbose exceptions. This had been broken since
1820 the very start, now x.y will properly be printed in a Verbose
1825 the very start, now x.y will properly be printed in a Verbose
1821 traceback, instead of x being shown and y appearing always as an
1826 traceback, instead of x being shown and y appearing always as an
1822 'undefined global'. Getting this to work was a bit tricky,
1827 'undefined global'. Getting this to work was a bit tricky,
1823 because by default python tokenizers are stateless. Saved by
1828 because by default python tokenizers are stateless. Saved by
1824 python's ability to easily add a bit of state to an arbitrary
1829 python's ability to easily add a bit of state to an arbitrary
1825 function (without needing to build a full-blown callable object).
1830 function (without needing to build a full-blown callable object).
1826
1831
1827 Also big cleanup of this code, which had horrendous runtime
1832 Also big cleanup of this code, which had horrendous runtime
1828 lookups of zillions of attributes for colorization. Moved all
1833 lookups of zillions of attributes for colorization. Moved all
1829 this code into a few templates, which make it cleaner and quicker.
1834 this code into a few templates, which make it cleaner and quicker.
1830
1835
1831 Printout quality was also improved for Verbose exceptions: one
1836 Printout quality was also improved for Verbose exceptions: one
1832 variable per line, and memory addresses are printed (this can be
1837 variable per line, and memory addresses are printed (this can be
1833 quite handy in nasty debugging situations, which is what Verbose
1838 quite handy in nasty debugging situations, which is what Verbose
1834 is for).
1839 is for).
1835
1840
1836 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1841 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
1837 the command line as scripts to be loaded by embedded instances.
1842 the command line as scripts to be loaded by embedded instances.
1838 Doing so has the potential for an infinite recursion if there are
1843 Doing so has the potential for an infinite recursion if there are
1839 exceptions thrown in the process. This fixes a strange crash
1844 exceptions thrown in the process. This fixes a strange crash
1840 reported by Philippe MULLER <muller-AT-irit.fr>.
1845 reported by Philippe MULLER <muller-AT-irit.fr>.
1841
1846
1842 2004-12-09 Fernando Perez <fperez@colorado.edu>
1847 2004-12-09 Fernando Perez <fperez@colorado.edu>
1843
1848
1844 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1849 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
1845 to reflect new names in matplotlib, which now expose the
1850 to reflect new names in matplotlib, which now expose the
1846 matlab-compatible interface via a pylab module instead of the
1851 matlab-compatible interface via a pylab module instead of the
1847 'matlab' name. The new code is backwards compatible, so users of
1852 'matlab' name. The new code is backwards compatible, so users of
1848 all matplotlib versions are OK. Patch by J. Hunter.
1853 all matplotlib versions are OK. Patch by J. Hunter.
1849
1854
1850 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1855 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
1851 of __init__ docstrings for instances (class docstrings are already
1856 of __init__ docstrings for instances (class docstrings are already
1852 automatically printed). Instances with customized docstrings
1857 automatically printed). Instances with customized docstrings
1853 (indep. of the class) are also recognized and all 3 separate
1858 (indep. of the class) are also recognized and all 3 separate
1854 docstrings are printed (instance, class, constructor). After some
1859 docstrings are printed (instance, class, constructor). After some
1855 comments/suggestions by J. Hunter.
1860 comments/suggestions by J. Hunter.
1856
1861
1857 2004-12-05 Fernando Perez <fperez@colorado.edu>
1862 2004-12-05 Fernando Perez <fperez@colorado.edu>
1858
1863
1859 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1864 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
1860 warnings when tab-completion fails and triggers an exception.
1865 warnings when tab-completion fails and triggers an exception.
1861
1866
1862 2004-12-03 Fernando Perez <fperez@colorado.edu>
1867 2004-12-03 Fernando Perez <fperez@colorado.edu>
1863
1868
1864 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1869 * IPython/Magic.py (magic_prun): Fix bug where an exception would
1865 be triggered when using 'run -p'. An incorrect option flag was
1870 be triggered when using 'run -p'. An incorrect option flag was
1866 being set ('d' instead of 'D').
1871 being set ('d' instead of 'D').
1867 (manpage): fix missing escaped \- sign.
1872 (manpage): fix missing escaped \- sign.
1868
1873
1869 2004-11-30 *** Released version 0.6.5
1874 2004-11-30 *** Released version 0.6.5
1870
1875
1871 2004-11-30 Fernando Perez <fperez@colorado.edu>
1876 2004-11-30 Fernando Perez <fperez@colorado.edu>
1872
1877
1873 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1878 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
1874 setting with -d option.
1879 setting with -d option.
1875
1880
1876 * setup.py (docfiles): Fix problem where the doc glob I was using
1881 * setup.py (docfiles): Fix problem where the doc glob I was using
1877 was COMPLETELY BROKEN. It was giving the right files by pure
1882 was COMPLETELY BROKEN. It was giving the right files by pure
1878 accident, but failed once I tried to include ipython.el. Note:
1883 accident, but failed once I tried to include ipython.el. Note:
1879 glob() does NOT allow you to do exclusion on multiple endings!
1884 glob() does NOT allow you to do exclusion on multiple endings!
1880
1885
1881 2004-11-29 Fernando Perez <fperez@colorado.edu>
1886 2004-11-29 Fernando Perez <fperez@colorado.edu>
1882
1887
1883 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1888 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
1884 the manpage as the source. Better formatting & consistency.
1889 the manpage as the source. Better formatting & consistency.
1885
1890
1886 * IPython/Magic.py (magic_run): Added new -d option, to run
1891 * IPython/Magic.py (magic_run): Added new -d option, to run
1887 scripts under the control of the python pdb debugger. Note that
1892 scripts under the control of the python pdb debugger. Note that
1888 this required changing the %prun option -d to -D, to avoid a clash
1893 this required changing the %prun option -d to -D, to avoid a clash
1889 (since %run must pass options to %prun, and getopt is too dumb to
1894 (since %run must pass options to %prun, and getopt is too dumb to
1890 handle options with string values with embedded spaces). Thanks
1895 handle options with string values with embedded spaces). Thanks
1891 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1896 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
1892 (magic_who_ls): added type matching to %who and %whos, so that one
1897 (magic_who_ls): added type matching to %who and %whos, so that one
1893 can filter their output to only include variables of certain
1898 can filter their output to only include variables of certain
1894 types. Another suggestion by Matthew.
1899 types. Another suggestion by Matthew.
1895 (magic_whos): Added memory summaries in kb and Mb for arrays.
1900 (magic_whos): Added memory summaries in kb and Mb for arrays.
1896 (magic_who): Improve formatting (break lines every 9 vars).
1901 (magic_who): Improve formatting (break lines every 9 vars).
1897
1902
1898 2004-11-28 Fernando Perez <fperez@colorado.edu>
1903 2004-11-28 Fernando Perez <fperez@colorado.edu>
1899
1904
1900 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1905 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
1901 cache when empty lines were present.
1906 cache when empty lines were present.
1902
1907
1903 2004-11-24 Fernando Perez <fperez@colorado.edu>
1908 2004-11-24 Fernando Perez <fperez@colorado.edu>
1904
1909
1905 * IPython/usage.py (__doc__): document the re-activated threading
1910 * IPython/usage.py (__doc__): document the re-activated threading
1906 options for WX and GTK.
1911 options for WX and GTK.
1907
1912
1908 2004-11-23 Fernando Perez <fperez@colorado.edu>
1913 2004-11-23 Fernando Perez <fperez@colorado.edu>
1909
1914
1910 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1915 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
1911 the -wthread and -gthread options, along with a new -tk one to try
1916 the -wthread and -gthread options, along with a new -tk one to try
1912 and coordinate Tk threading with wx/gtk. The tk support is very
1917 and coordinate Tk threading with wx/gtk. The tk support is very
1913 platform dependent, since it seems to require Tcl and Tk to be
1918 platform dependent, since it seems to require Tcl and Tk to be
1914 built with threads (Fedora1/2 appears NOT to have it, but in
1919 built with threads (Fedora1/2 appears NOT to have it, but in
1915 Prabhu's Debian boxes it works OK). But even with some Tk
1920 Prabhu's Debian boxes it works OK). But even with some Tk
1916 limitations, this is a great improvement.
1921 limitations, this is a great improvement.
1917
1922
1918 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1923 * IPython/Prompts.py (prompt_specials_color): Added \t for time
1919 info in user prompts. Patch by Prabhu.
1924 info in user prompts. Patch by Prabhu.
1920
1925
1921 2004-11-18 Fernando Perez <fperez@colorado.edu>
1926 2004-11-18 Fernando Perez <fperez@colorado.edu>
1922
1927
1923 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1928 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
1924 EOFErrors and bail, to avoid infinite loops if a non-terminating
1929 EOFErrors and bail, to avoid infinite loops if a non-terminating
1925 file is fed into ipython. Patch submitted in issue 19 by user,
1930 file is fed into ipython. Patch submitted in issue 19 by user,
1926 many thanks.
1931 many thanks.
1927
1932
1928 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1933 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
1929 autoquote/parens in continuation prompts, which can cause lots of
1934 autoquote/parens in continuation prompts, which can cause lots of
1930 problems. Closes roundup issue 20.
1935 problems. Closes roundup issue 20.
1931
1936
1932 2004-11-17 Fernando Perez <fperez@colorado.edu>
1937 2004-11-17 Fernando Perez <fperez@colorado.edu>
1933
1938
1934 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1939 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
1935 reported as debian bug #280505. I'm not sure my local changelog
1940 reported as debian bug #280505. I'm not sure my local changelog
1936 entry has the proper debian format (Jack?).
1941 entry has the proper debian format (Jack?).
1937
1942
1938 2004-11-08 *** Released version 0.6.4
1943 2004-11-08 *** Released version 0.6.4
1939
1944
1940 2004-11-08 Fernando Perez <fperez@colorado.edu>
1945 2004-11-08 Fernando Perez <fperez@colorado.edu>
1941
1946
1942 * IPython/iplib.py (init_readline): Fix exit message for Windows
1947 * IPython/iplib.py (init_readline): Fix exit message for Windows
1943 when readline is active. Thanks to a report by Eric Jones
1948 when readline is active. Thanks to a report by Eric Jones
1944 <eric-AT-enthought.com>.
1949 <eric-AT-enthought.com>.
1945
1950
1946 2004-11-07 Fernando Perez <fperez@colorado.edu>
1951 2004-11-07 Fernando Perez <fperez@colorado.edu>
1947
1952
1948 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1953 * IPython/genutils.py (page): Add a trap for OSError exceptions,
1949 sometimes seen by win2k/cygwin users.
1954 sometimes seen by win2k/cygwin users.
1950
1955
1951 2004-11-06 Fernando Perez <fperez@colorado.edu>
1956 2004-11-06 Fernando Perez <fperez@colorado.edu>
1952
1957
1953 * IPython/iplib.py (interact): Change the handling of %Exit from
1958 * IPython/iplib.py (interact): Change the handling of %Exit from
1954 trying to propagate a SystemExit to an internal ipython flag.
1959 trying to propagate a SystemExit to an internal ipython flag.
1955 This is less elegant than using Python's exception mechanism, but
1960 This is less elegant than using Python's exception mechanism, but
1956 I can't get that to work reliably with threads, so under -pylab
1961 I can't get that to work reliably with threads, so under -pylab
1957 %Exit was hanging IPython. Cross-thread exception handling is
1962 %Exit was hanging IPython. Cross-thread exception handling is
1958 really a bitch. Thaks to a bug report by Stephen Walton
1963 really a bitch. Thaks to a bug report by Stephen Walton
1959 <stephen.walton-AT-csun.edu>.
1964 <stephen.walton-AT-csun.edu>.
1960
1965
1961 2004-11-04 Fernando Perez <fperez@colorado.edu>
1966 2004-11-04 Fernando Perez <fperez@colorado.edu>
1962
1967
1963 * IPython/iplib.py (raw_input_original): store a pointer to the
1968 * IPython/iplib.py (raw_input_original): store a pointer to the
1964 true raw_input to harden against code which can modify it
1969 true raw_input to harden against code which can modify it
1965 (wx.py.PyShell does this and would otherwise crash ipython).
1970 (wx.py.PyShell does this and would otherwise crash ipython).
1966 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1971 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
1967
1972
1968 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1973 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
1969 Ctrl-C problem, which does not mess up the input line.
1974 Ctrl-C problem, which does not mess up the input line.
1970
1975
1971 2004-11-03 Fernando Perez <fperez@colorado.edu>
1976 2004-11-03 Fernando Perez <fperez@colorado.edu>
1972
1977
1973 * IPython/Release.py: Changed licensing to BSD, in all files.
1978 * IPython/Release.py: Changed licensing to BSD, in all files.
1974 (name): lowercase name for tarball/RPM release.
1979 (name): lowercase name for tarball/RPM release.
1975
1980
1976 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1981 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
1977 use throughout ipython.
1982 use throughout ipython.
1978
1983
1979 * IPython/Magic.py (Magic._ofind): Switch to using the new
1984 * IPython/Magic.py (Magic._ofind): Switch to using the new
1980 OInspect.getdoc() function.
1985 OInspect.getdoc() function.
1981
1986
1982 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1987 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
1983 of the line currently being canceled via Ctrl-C. It's extremely
1988 of the line currently being canceled via Ctrl-C. It's extremely
1984 ugly, but I don't know how to do it better (the problem is one of
1989 ugly, but I don't know how to do it better (the problem is one of
1985 handling cross-thread exceptions).
1990 handling cross-thread exceptions).
1986
1991
1987 2004-10-28 Fernando Perez <fperez@colorado.edu>
1992 2004-10-28 Fernando Perez <fperez@colorado.edu>
1988
1993
1989 * IPython/Shell.py (signal_handler): add signal handlers to trap
1994 * IPython/Shell.py (signal_handler): add signal handlers to trap
1990 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1995 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
1991 report by Francesc Alted.
1996 report by Francesc Alted.
1992
1997
1993 2004-10-21 Fernando Perez <fperez@colorado.edu>
1998 2004-10-21 Fernando Perez <fperez@colorado.edu>
1994
1999
1995 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2000 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
1996 to % for pysh syntax extensions.
2001 to % for pysh syntax extensions.
1997
2002
1998 2004-10-09 Fernando Perez <fperez@colorado.edu>
2003 2004-10-09 Fernando Perez <fperez@colorado.edu>
1999
2004
2000 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2005 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2001 arrays to print a more useful summary, without calling str(arr).
2006 arrays to print a more useful summary, without calling str(arr).
2002 This avoids the problem of extremely lengthy computations which
2007 This avoids the problem of extremely lengthy computations which
2003 occur if arr is large, and appear to the user as a system lockup
2008 occur if arr is large, and appear to the user as a system lockup
2004 with 100% cpu activity. After a suggestion by Kristian Sandberg
2009 with 100% cpu activity. After a suggestion by Kristian Sandberg
2005 <Kristian.Sandberg@colorado.edu>.
2010 <Kristian.Sandberg@colorado.edu>.
2006 (Magic.__init__): fix bug in global magic escapes not being
2011 (Magic.__init__): fix bug in global magic escapes not being
2007 correctly set.
2012 correctly set.
2008
2013
2009 2004-10-08 Fernando Perez <fperez@colorado.edu>
2014 2004-10-08 Fernando Perez <fperez@colorado.edu>
2010
2015
2011 * IPython/Magic.py (__license__): change to absolute imports of
2016 * IPython/Magic.py (__license__): change to absolute imports of
2012 ipython's own internal packages, to start adapting to the absolute
2017 ipython's own internal packages, to start adapting to the absolute
2013 import requirement of PEP-328.
2018 import requirement of PEP-328.
2014
2019
2015 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2020 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2016 files, and standardize author/license marks through the Release
2021 files, and standardize author/license marks through the Release
2017 module instead of having per/file stuff (except for files with
2022 module instead of having per/file stuff (except for files with
2018 particular licenses, like the MIT/PSF-licensed codes).
2023 particular licenses, like the MIT/PSF-licensed codes).
2019
2024
2020 * IPython/Debugger.py: remove dead code for python 2.1
2025 * IPython/Debugger.py: remove dead code for python 2.1
2021
2026
2022 2004-10-04 Fernando Perez <fperez@colorado.edu>
2027 2004-10-04 Fernando Perez <fperez@colorado.edu>
2023
2028
2024 * IPython/iplib.py (ipmagic): New function for accessing magics
2029 * IPython/iplib.py (ipmagic): New function for accessing magics
2025 via a normal python function call.
2030 via a normal python function call.
2026
2031
2027 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2032 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2028 from '@' to '%', to accomodate the new @decorator syntax of python
2033 from '@' to '%', to accomodate the new @decorator syntax of python
2029 2.4.
2034 2.4.
2030
2035
2031 2004-09-29 Fernando Perez <fperez@colorado.edu>
2036 2004-09-29 Fernando Perez <fperez@colorado.edu>
2032
2037
2033 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2038 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2034 matplotlib.use to prevent running scripts which try to switch
2039 matplotlib.use to prevent running scripts which try to switch
2035 interactive backends from within ipython. This will just crash
2040 interactive backends from within ipython. This will just crash
2036 the python interpreter, so we can't allow it (but a detailed error
2041 the python interpreter, so we can't allow it (but a detailed error
2037 is given to the user).
2042 is given to the user).
2038
2043
2039 2004-09-28 Fernando Perez <fperez@colorado.edu>
2044 2004-09-28 Fernando Perez <fperez@colorado.edu>
2040
2045
2041 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2046 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2042 matplotlib-related fixes so that using @run with non-matplotlib
2047 matplotlib-related fixes so that using @run with non-matplotlib
2043 scripts doesn't pop up spurious plot windows. This requires
2048 scripts doesn't pop up spurious plot windows. This requires
2044 matplotlib >= 0.63, where I had to make some changes as well.
2049 matplotlib >= 0.63, where I had to make some changes as well.
2045
2050
2046 * IPython/ipmaker.py (make_IPython): update version requirement to
2051 * IPython/ipmaker.py (make_IPython): update version requirement to
2047 python 2.2.
2052 python 2.2.
2048
2053
2049 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2054 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2050 banner arg for embedded customization.
2055 banner arg for embedded customization.
2051
2056
2052 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2057 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2053 explicit uses of __IP as the IPython's instance name. Now things
2058 explicit uses of __IP as the IPython's instance name. Now things
2054 are properly handled via the shell.name value. The actual code
2059 are properly handled via the shell.name value. The actual code
2055 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2060 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2056 is much better than before. I'll clean things completely when the
2061 is much better than before. I'll clean things completely when the
2057 magic stuff gets a real overhaul.
2062 magic stuff gets a real overhaul.
2058
2063
2059 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2064 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2060 minor changes to debian dir.
2065 minor changes to debian dir.
2061
2066
2062 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2067 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2063 pointer to the shell itself in the interactive namespace even when
2068 pointer to the shell itself in the interactive namespace even when
2064 a user-supplied dict is provided. This is needed for embedding
2069 a user-supplied dict is provided. This is needed for embedding
2065 purposes (found by tests with Michel Sanner).
2070 purposes (found by tests with Michel Sanner).
2066
2071
2067 2004-09-27 Fernando Perez <fperez@colorado.edu>
2072 2004-09-27 Fernando Perez <fperez@colorado.edu>
2068
2073
2069 * IPython/UserConfig/ipythonrc: remove []{} from
2074 * IPython/UserConfig/ipythonrc: remove []{} from
2070 readline_remove_delims, so that things like [modname.<TAB> do
2075 readline_remove_delims, so that things like [modname.<TAB> do
2071 proper completion. This disables [].TAB, but that's a less common
2076 proper completion. This disables [].TAB, but that's a less common
2072 case than module names in list comprehensions, for example.
2077 case than module names in list comprehensions, for example.
2073 Thanks to a report by Andrea Riciputi.
2078 Thanks to a report by Andrea Riciputi.
2074
2079
2075 2004-09-09 Fernando Perez <fperez@colorado.edu>
2080 2004-09-09 Fernando Perez <fperez@colorado.edu>
2076
2081
2077 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2082 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2078 blocking problems in win32 and osx. Fix by John.
2083 blocking problems in win32 and osx. Fix by John.
2079
2084
2080 2004-09-08 Fernando Perez <fperez@colorado.edu>
2085 2004-09-08 Fernando Perez <fperez@colorado.edu>
2081
2086
2082 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2087 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2083 for Win32 and OSX. Fix by John Hunter.
2088 for Win32 and OSX. Fix by John Hunter.
2084
2089
2085 2004-08-30 *** Released version 0.6.3
2090 2004-08-30 *** Released version 0.6.3
2086
2091
2087 2004-08-30 Fernando Perez <fperez@colorado.edu>
2092 2004-08-30 Fernando Perez <fperez@colorado.edu>
2088
2093
2089 * setup.py (isfile): Add manpages to list of dependent files to be
2094 * setup.py (isfile): Add manpages to list of dependent files to be
2090 updated.
2095 updated.
2091
2096
2092 2004-08-27 Fernando Perez <fperez@colorado.edu>
2097 2004-08-27 Fernando Perez <fperez@colorado.edu>
2093
2098
2094 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2099 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2095 for now. They don't really work with standalone WX/GTK code
2100 for now. They don't really work with standalone WX/GTK code
2096 (though matplotlib IS working fine with both of those backends).
2101 (though matplotlib IS working fine with both of those backends).
2097 This will neeed much more testing. I disabled most things with
2102 This will neeed much more testing. I disabled most things with
2098 comments, so turning it back on later should be pretty easy.
2103 comments, so turning it back on later should be pretty easy.
2099
2104
2100 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2105 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2101 autocalling of expressions like r'foo', by modifying the line
2106 autocalling of expressions like r'foo', by modifying the line
2102 split regexp. Closes
2107 split regexp. Closes
2103 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2108 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2104 Riley <ipythonbugs-AT-sabi.net>.
2109 Riley <ipythonbugs-AT-sabi.net>.
2105 (InteractiveShell.mainloop): honor --nobanner with banner
2110 (InteractiveShell.mainloop): honor --nobanner with banner
2106 extensions.
2111 extensions.
2107
2112
2108 * IPython/Shell.py: Significant refactoring of all classes, so
2113 * IPython/Shell.py: Significant refactoring of all classes, so
2109 that we can really support ALL matplotlib backends and threading
2114 that we can really support ALL matplotlib backends and threading
2110 models (John spotted a bug with Tk which required this). Now we
2115 models (John spotted a bug with Tk which required this). Now we
2111 should support single-threaded, WX-threads and GTK-threads, both
2116 should support single-threaded, WX-threads and GTK-threads, both
2112 for generic code and for matplotlib.
2117 for generic code and for matplotlib.
2113
2118
2114 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2119 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2115 -pylab, to simplify things for users. Will also remove the pylab
2120 -pylab, to simplify things for users. Will also remove the pylab
2116 profile, since now all of matplotlib configuration is directly
2121 profile, since now all of matplotlib configuration is directly
2117 handled here. This also reduces startup time.
2122 handled here. This also reduces startup time.
2118
2123
2119 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2124 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2120 shell wasn't being correctly called. Also in IPShellWX.
2125 shell wasn't being correctly called. Also in IPShellWX.
2121
2126
2122 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2127 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2123 fine-tune banner.
2128 fine-tune banner.
2124
2129
2125 * IPython/numutils.py (spike): Deprecate these spike functions,
2130 * IPython/numutils.py (spike): Deprecate these spike functions,
2126 delete (long deprecated) gnuplot_exec handler.
2131 delete (long deprecated) gnuplot_exec handler.
2127
2132
2128 2004-08-26 Fernando Perez <fperez@colorado.edu>
2133 2004-08-26 Fernando Perez <fperez@colorado.edu>
2129
2134
2130 * ipython.1: Update for threading options, plus some others which
2135 * ipython.1: Update for threading options, plus some others which
2131 were missing.
2136 were missing.
2132
2137
2133 * IPython/ipmaker.py (__call__): Added -wthread option for
2138 * IPython/ipmaker.py (__call__): Added -wthread option for
2134 wxpython thread handling. Make sure threading options are only
2139 wxpython thread handling. Make sure threading options are only
2135 valid at the command line.
2140 valid at the command line.
2136
2141
2137 * scripts/ipython: moved shell selection into a factory function
2142 * scripts/ipython: moved shell selection into a factory function
2138 in Shell.py, to keep the starter script to a minimum.
2143 in Shell.py, to keep the starter script to a minimum.
2139
2144
2140 2004-08-25 Fernando Perez <fperez@colorado.edu>
2145 2004-08-25 Fernando Perez <fperez@colorado.edu>
2141
2146
2142 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2147 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2143 John. Along with some recent changes he made to matplotlib, the
2148 John. Along with some recent changes he made to matplotlib, the
2144 next versions of both systems should work very well together.
2149 next versions of both systems should work very well together.
2145
2150
2146 2004-08-24 Fernando Perez <fperez@colorado.edu>
2151 2004-08-24 Fernando Perez <fperez@colorado.edu>
2147
2152
2148 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2153 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2149 tried to switch the profiling to using hotshot, but I'm getting
2154 tried to switch the profiling to using hotshot, but I'm getting
2150 strange errors from prof.runctx() there. I may be misreading the
2155 strange errors from prof.runctx() there. I may be misreading the
2151 docs, but it looks weird. For now the profiling code will
2156 docs, but it looks weird. For now the profiling code will
2152 continue to use the standard profiler.
2157 continue to use the standard profiler.
2153
2158
2154 2004-08-23 Fernando Perez <fperez@colorado.edu>
2159 2004-08-23 Fernando Perez <fperez@colorado.edu>
2155
2160
2156 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2161 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2157 threaded shell, by John Hunter. It's not quite ready yet, but
2162 threaded shell, by John Hunter. It's not quite ready yet, but
2158 close.
2163 close.
2159
2164
2160 2004-08-22 Fernando Perez <fperez@colorado.edu>
2165 2004-08-22 Fernando Perez <fperez@colorado.edu>
2161
2166
2162 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2167 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2163 in Magic and ultraTB.
2168 in Magic and ultraTB.
2164
2169
2165 * ipython.1: document threading options in manpage.
2170 * ipython.1: document threading options in manpage.
2166
2171
2167 * scripts/ipython: Changed name of -thread option to -gthread,
2172 * scripts/ipython: Changed name of -thread option to -gthread,
2168 since this is GTK specific. I want to leave the door open for a
2173 since this is GTK specific. I want to leave the door open for a
2169 -wthread option for WX, which will most likely be necessary. This
2174 -wthread option for WX, which will most likely be necessary. This
2170 change affects usage and ipmaker as well.
2175 change affects usage and ipmaker as well.
2171
2176
2172 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2177 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2173 handle the matplotlib shell issues. Code by John Hunter
2178 handle the matplotlib shell issues. Code by John Hunter
2174 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2179 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2175 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2180 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2176 broken (and disabled for end users) for now, but it puts the
2181 broken (and disabled for end users) for now, but it puts the
2177 infrastructure in place.
2182 infrastructure in place.
2178
2183
2179 2004-08-21 Fernando Perez <fperez@colorado.edu>
2184 2004-08-21 Fernando Perez <fperez@colorado.edu>
2180
2185
2181 * ipythonrc-pylab: Add matplotlib support.
2186 * ipythonrc-pylab: Add matplotlib support.
2182
2187
2183 * matplotlib_config.py: new files for matplotlib support, part of
2188 * matplotlib_config.py: new files for matplotlib support, part of
2184 the pylab profile.
2189 the pylab profile.
2185
2190
2186 * IPython/usage.py (__doc__): documented the threading options.
2191 * IPython/usage.py (__doc__): documented the threading options.
2187
2192
2188 2004-08-20 Fernando Perez <fperez@colorado.edu>
2193 2004-08-20 Fernando Perez <fperez@colorado.edu>
2189
2194
2190 * ipython: Modified the main calling routine to handle the -thread
2195 * ipython: Modified the main calling routine to handle the -thread
2191 and -mpthread options. This needs to be done as a top-level hack,
2196 and -mpthread options. This needs to be done as a top-level hack,
2192 because it determines which class to instantiate for IPython
2197 because it determines which class to instantiate for IPython
2193 itself.
2198 itself.
2194
2199
2195 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2200 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2196 classes to support multithreaded GTK operation without blocking,
2201 classes to support multithreaded GTK operation without blocking,
2197 and matplotlib with all backends. This is a lot of still very
2202 and matplotlib with all backends. This is a lot of still very
2198 experimental code, and threads are tricky. So it may still have a
2203 experimental code, and threads are tricky. So it may still have a
2199 few rough edges... This code owes a lot to
2204 few rough edges... This code owes a lot to
2200 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2205 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2201 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2206 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2202 to John Hunter for all the matplotlib work.
2207 to John Hunter for all the matplotlib work.
2203
2208
2204 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2209 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2205 options for gtk thread and matplotlib support.
2210 options for gtk thread and matplotlib support.
2206
2211
2207 2004-08-16 Fernando Perez <fperez@colorado.edu>
2212 2004-08-16 Fernando Perez <fperez@colorado.edu>
2208
2213
2209 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2214 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2210 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2215 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2211 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2216 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2212
2217
2213 2004-08-11 Fernando Perez <fperez@colorado.edu>
2218 2004-08-11 Fernando Perez <fperez@colorado.edu>
2214
2219
2215 * setup.py (isfile): Fix build so documentation gets updated for
2220 * setup.py (isfile): Fix build so documentation gets updated for
2216 rpms (it was only done for .tgz builds).
2221 rpms (it was only done for .tgz builds).
2217
2222
2218 2004-08-10 Fernando Perez <fperez@colorado.edu>
2223 2004-08-10 Fernando Perez <fperez@colorado.edu>
2219
2224
2220 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2225 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2221
2226
2222 * iplib.py : Silence syntax error exceptions in tab-completion.
2227 * iplib.py : Silence syntax error exceptions in tab-completion.
2223
2228
2224 2004-08-05 Fernando Perez <fperez@colorado.edu>
2229 2004-08-05 Fernando Perez <fperez@colorado.edu>
2225
2230
2226 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2231 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2227 'color off' mark for continuation prompts. This was causing long
2232 'color off' mark for continuation prompts. This was causing long
2228 continuation lines to mis-wrap.
2233 continuation lines to mis-wrap.
2229
2234
2230 2004-08-01 Fernando Perez <fperez@colorado.edu>
2235 2004-08-01 Fernando Perez <fperez@colorado.edu>
2231
2236
2232 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2237 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2233 for building ipython to be a parameter. All this is necessary
2238 for building ipython to be a parameter. All this is necessary
2234 right now to have a multithreaded version, but this insane
2239 right now to have a multithreaded version, but this insane
2235 non-design will be cleaned up soon. For now, it's a hack that
2240 non-design will be cleaned up soon. For now, it's a hack that
2236 works.
2241 works.
2237
2242
2238 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2243 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2239 args in various places. No bugs so far, but it's a dangerous
2244 args in various places. No bugs so far, but it's a dangerous
2240 practice.
2245 practice.
2241
2246
2242 2004-07-31 Fernando Perez <fperez@colorado.edu>
2247 2004-07-31 Fernando Perez <fperez@colorado.edu>
2243
2248
2244 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2249 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2245 fix completion of files with dots in their names under most
2250 fix completion of files with dots in their names under most
2246 profiles (pysh was OK because the completion order is different).
2251 profiles (pysh was OK because the completion order is different).
2247
2252
2248 2004-07-27 Fernando Perez <fperez@colorado.edu>
2253 2004-07-27 Fernando Perez <fperez@colorado.edu>
2249
2254
2250 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2255 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2251 keywords manually, b/c the one in keyword.py was removed in python
2256 keywords manually, b/c the one in keyword.py was removed in python
2252 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2257 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2253 This is NOT a bug under python 2.3 and earlier.
2258 This is NOT a bug under python 2.3 and earlier.
2254
2259
2255 2004-07-26 Fernando Perez <fperez@colorado.edu>
2260 2004-07-26 Fernando Perez <fperez@colorado.edu>
2256
2261
2257 * IPython/ultraTB.py (VerboseTB.text): Add another
2262 * IPython/ultraTB.py (VerboseTB.text): Add another
2258 linecache.checkcache() call to try to prevent inspect.py from
2263 linecache.checkcache() call to try to prevent inspect.py from
2259 crashing under python 2.3. I think this fixes
2264 crashing under python 2.3. I think this fixes
2260 http://www.scipy.net/roundup/ipython/issue17.
2265 http://www.scipy.net/roundup/ipython/issue17.
2261
2266
2262 2004-07-26 *** Released version 0.6.2
2267 2004-07-26 *** Released version 0.6.2
2263
2268
2264 2004-07-26 Fernando Perez <fperez@colorado.edu>
2269 2004-07-26 Fernando Perez <fperez@colorado.edu>
2265
2270
2266 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2271 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2267 fail for any number.
2272 fail for any number.
2268 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2273 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2269 empty bookmarks.
2274 empty bookmarks.
2270
2275
2271 2004-07-26 *** Released version 0.6.1
2276 2004-07-26 *** Released version 0.6.1
2272
2277
2273 2004-07-26 Fernando Perez <fperez@colorado.edu>
2278 2004-07-26 Fernando Perez <fperez@colorado.edu>
2274
2279
2275 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2280 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2276
2281
2277 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2282 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2278 escaping '()[]{}' in filenames.
2283 escaping '()[]{}' in filenames.
2279
2284
2280 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2285 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2281 Python 2.2 users who lack a proper shlex.split.
2286 Python 2.2 users who lack a proper shlex.split.
2282
2287
2283 2004-07-19 Fernando Perez <fperez@colorado.edu>
2288 2004-07-19 Fernando Perez <fperez@colorado.edu>
2284
2289
2285 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2290 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2286 for reading readline's init file. I follow the normal chain:
2291 for reading readline's init file. I follow the normal chain:
2287 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2292 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2288 report by Mike Heeter. This closes
2293 report by Mike Heeter. This closes
2289 http://www.scipy.net/roundup/ipython/issue16.
2294 http://www.scipy.net/roundup/ipython/issue16.
2290
2295
2291 2004-07-18 Fernando Perez <fperez@colorado.edu>
2296 2004-07-18 Fernando Perez <fperez@colorado.edu>
2292
2297
2293 * IPython/iplib.py (__init__): Add better handling of '\' under
2298 * IPython/iplib.py (__init__): Add better handling of '\' under
2294 Win32 for filenames. After a patch by Ville.
2299 Win32 for filenames. After a patch by Ville.
2295
2300
2296 2004-07-17 Fernando Perez <fperez@colorado.edu>
2301 2004-07-17 Fernando Perez <fperez@colorado.edu>
2297
2302
2298 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2303 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2299 autocalling would be triggered for 'foo is bar' if foo is
2304 autocalling would be triggered for 'foo is bar' if foo is
2300 callable. I also cleaned up the autocall detection code to use a
2305 callable. I also cleaned up the autocall detection code to use a
2301 regexp, which is faster. Bug reported by Alexander Schmolck.
2306 regexp, which is faster. Bug reported by Alexander Schmolck.
2302
2307
2303 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2308 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2304 '?' in them would confuse the help system. Reported by Alex
2309 '?' in them would confuse the help system. Reported by Alex
2305 Schmolck.
2310 Schmolck.
2306
2311
2307 2004-07-16 Fernando Perez <fperez@colorado.edu>
2312 2004-07-16 Fernando Perez <fperez@colorado.edu>
2308
2313
2309 * IPython/GnuplotInteractive.py (__all__): added plot2.
2314 * IPython/GnuplotInteractive.py (__all__): added plot2.
2310
2315
2311 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2316 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2312 plotting dictionaries, lists or tuples of 1d arrays.
2317 plotting dictionaries, lists or tuples of 1d arrays.
2313
2318
2314 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2319 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2315 optimizations.
2320 optimizations.
2316
2321
2317 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2322 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2318 the information which was there from Janko's original IPP code:
2323 the information which was there from Janko's original IPP code:
2319
2324
2320 03.05.99 20:53 porto.ifm.uni-kiel.de
2325 03.05.99 20:53 porto.ifm.uni-kiel.de
2321 --Started changelog.
2326 --Started changelog.
2322 --make clear do what it say it does
2327 --make clear do what it say it does
2323 --added pretty output of lines from inputcache
2328 --added pretty output of lines from inputcache
2324 --Made Logger a mixin class, simplifies handling of switches
2329 --Made Logger a mixin class, simplifies handling of switches
2325 --Added own completer class. .string<TAB> expands to last history
2330 --Added own completer class. .string<TAB> expands to last history
2326 line which starts with string. The new expansion is also present
2331 line which starts with string. The new expansion is also present
2327 with Ctrl-r from the readline library. But this shows, who this
2332 with Ctrl-r from the readline library. But this shows, who this
2328 can be done for other cases.
2333 can be done for other cases.
2329 --Added convention that all shell functions should accept a
2334 --Added convention that all shell functions should accept a
2330 parameter_string This opens the door for different behaviour for
2335 parameter_string This opens the door for different behaviour for
2331 each function. @cd is a good example of this.
2336 each function. @cd is a good example of this.
2332
2337
2333 04.05.99 12:12 porto.ifm.uni-kiel.de
2338 04.05.99 12:12 porto.ifm.uni-kiel.de
2334 --added logfile rotation
2339 --added logfile rotation
2335 --added new mainloop method which freezes first the namespace
2340 --added new mainloop method which freezes first the namespace
2336
2341
2337 07.05.99 21:24 porto.ifm.uni-kiel.de
2342 07.05.99 21:24 porto.ifm.uni-kiel.de
2338 --added the docreader classes. Now there is a help system.
2343 --added the docreader classes. Now there is a help system.
2339 -This is only a first try. Currently it's not easy to put new
2344 -This is only a first try. Currently it's not easy to put new
2340 stuff in the indices. But this is the way to go. Info would be
2345 stuff in the indices. But this is the way to go. Info would be
2341 better, but HTML is every where and not everybody has an info
2346 better, but HTML is every where and not everybody has an info
2342 system installed and it's not so easy to change html-docs to info.
2347 system installed and it's not so easy to change html-docs to info.
2343 --added global logfile option
2348 --added global logfile option
2344 --there is now a hook for object inspection method pinfo needs to
2349 --there is now a hook for object inspection method pinfo needs to
2345 be provided for this. Can be reached by two '??'.
2350 be provided for this. Can be reached by two '??'.
2346
2351
2347 08.05.99 20:51 porto.ifm.uni-kiel.de
2352 08.05.99 20:51 porto.ifm.uni-kiel.de
2348 --added a README
2353 --added a README
2349 --bug in rc file. Something has changed so functions in the rc
2354 --bug in rc file. Something has changed so functions in the rc
2350 file need to reference the shell and not self. Not clear if it's a
2355 file need to reference the shell and not self. Not clear if it's a
2351 bug or feature.
2356 bug or feature.
2352 --changed rc file for new behavior
2357 --changed rc file for new behavior
2353
2358
2354 2004-07-15 Fernando Perez <fperez@colorado.edu>
2359 2004-07-15 Fernando Perez <fperez@colorado.edu>
2355
2360
2356 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2361 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2357 cache was falling out of sync in bizarre manners when multi-line
2362 cache was falling out of sync in bizarre manners when multi-line
2358 input was present. Minor optimizations and cleanup.
2363 input was present. Minor optimizations and cleanup.
2359
2364
2360 (Logger): Remove old Changelog info for cleanup. This is the
2365 (Logger): Remove old Changelog info for cleanup. This is the
2361 information which was there from Janko's original code:
2366 information which was there from Janko's original code:
2362
2367
2363 Changes to Logger: - made the default log filename a parameter
2368 Changes to Logger: - made the default log filename a parameter
2364
2369
2365 - put a check for lines beginning with !@? in log(). Needed
2370 - put a check for lines beginning with !@? in log(). Needed
2366 (even if the handlers properly log their lines) for mid-session
2371 (even if the handlers properly log their lines) for mid-session
2367 logging activation to work properly. Without this, lines logged
2372 logging activation to work properly. Without this, lines logged
2368 in mid session, which get read from the cache, would end up
2373 in mid session, which get read from the cache, would end up
2369 'bare' (with !@? in the open) in the log. Now they are caught
2374 'bare' (with !@? in the open) in the log. Now they are caught
2370 and prepended with a #.
2375 and prepended with a #.
2371
2376
2372 * IPython/iplib.py (InteractiveShell.init_readline): added check
2377 * IPython/iplib.py (InteractiveShell.init_readline): added check
2373 in case MagicCompleter fails to be defined, so we don't crash.
2378 in case MagicCompleter fails to be defined, so we don't crash.
2374
2379
2375 2004-07-13 Fernando Perez <fperez@colorado.edu>
2380 2004-07-13 Fernando Perez <fperez@colorado.edu>
2376
2381
2377 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2382 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2378 of EPS if the requested filename ends in '.eps'.
2383 of EPS if the requested filename ends in '.eps'.
2379
2384
2380 2004-07-04 Fernando Perez <fperez@colorado.edu>
2385 2004-07-04 Fernando Perez <fperez@colorado.edu>
2381
2386
2382 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2387 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2383 escaping of quotes when calling the shell.
2388 escaping of quotes when calling the shell.
2384
2389
2385 2004-07-02 Fernando Perez <fperez@colorado.edu>
2390 2004-07-02 Fernando Perez <fperez@colorado.edu>
2386
2391
2387 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2392 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2388 gettext not working because we were clobbering '_'. Fixes
2393 gettext not working because we were clobbering '_'. Fixes
2389 http://www.scipy.net/roundup/ipython/issue6.
2394 http://www.scipy.net/roundup/ipython/issue6.
2390
2395
2391 2004-07-01 Fernando Perez <fperez@colorado.edu>
2396 2004-07-01 Fernando Perez <fperez@colorado.edu>
2392
2397
2393 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2398 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2394 into @cd. Patch by Ville.
2399 into @cd. Patch by Ville.
2395
2400
2396 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2401 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2397 new function to store things after ipmaker runs. Patch by Ville.
2402 new function to store things after ipmaker runs. Patch by Ville.
2398 Eventually this will go away once ipmaker is removed and the class
2403 Eventually this will go away once ipmaker is removed and the class
2399 gets cleaned up, but for now it's ok. Key functionality here is
2404 gets cleaned up, but for now it's ok. Key functionality here is
2400 the addition of the persistent storage mechanism, a dict for
2405 the addition of the persistent storage mechanism, a dict for
2401 keeping data across sessions (for now just bookmarks, but more can
2406 keeping data across sessions (for now just bookmarks, but more can
2402 be implemented later).
2407 be implemented later).
2403
2408
2404 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2409 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2405 persistent across sections. Patch by Ville, I modified it
2410 persistent across sections. Patch by Ville, I modified it
2406 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2411 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2407 added a '-l' option to list all bookmarks.
2412 added a '-l' option to list all bookmarks.
2408
2413
2409 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2414 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2410 center for cleanup. Registered with atexit.register(). I moved
2415 center for cleanup. Registered with atexit.register(). I moved
2411 here the old exit_cleanup(). After a patch by Ville.
2416 here the old exit_cleanup(). After a patch by Ville.
2412
2417
2413 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2418 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2414 characters in the hacked shlex_split for python 2.2.
2419 characters in the hacked shlex_split for python 2.2.
2415
2420
2416 * IPython/iplib.py (file_matches): more fixes to filenames with
2421 * IPython/iplib.py (file_matches): more fixes to filenames with
2417 whitespace in them. It's not perfect, but limitations in python's
2422 whitespace in them. It's not perfect, but limitations in python's
2418 readline make it impossible to go further.
2423 readline make it impossible to go further.
2419
2424
2420 2004-06-29 Fernando Perez <fperez@colorado.edu>
2425 2004-06-29 Fernando Perez <fperez@colorado.edu>
2421
2426
2422 * IPython/iplib.py (file_matches): escape whitespace correctly in
2427 * IPython/iplib.py (file_matches): escape whitespace correctly in
2423 filename completions. Bug reported by Ville.
2428 filename completions. Bug reported by Ville.
2424
2429
2425 2004-06-28 Fernando Perez <fperez@colorado.edu>
2430 2004-06-28 Fernando Perez <fperez@colorado.edu>
2426
2431
2427 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2432 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2428 the history file will be called 'history-PROFNAME' (or just
2433 the history file will be called 'history-PROFNAME' (or just
2429 'history' if no profile is loaded). I was getting annoyed at
2434 'history' if no profile is loaded). I was getting annoyed at
2430 getting my Numerical work history clobbered by pysh sessions.
2435 getting my Numerical work history clobbered by pysh sessions.
2431
2436
2432 * IPython/iplib.py (InteractiveShell.__init__): Internal
2437 * IPython/iplib.py (InteractiveShell.__init__): Internal
2433 getoutputerror() function so that we can honor the system_verbose
2438 getoutputerror() function so that we can honor the system_verbose
2434 flag for _all_ system calls. I also added escaping of #
2439 flag for _all_ system calls. I also added escaping of #
2435 characters here to avoid confusing Itpl.
2440 characters here to avoid confusing Itpl.
2436
2441
2437 * IPython/Magic.py (shlex_split): removed call to shell in
2442 * IPython/Magic.py (shlex_split): removed call to shell in
2438 parse_options and replaced it with shlex.split(). The annoying
2443 parse_options and replaced it with shlex.split(). The annoying
2439 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2444 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2440 to backport it from 2.3, with several frail hacks (the shlex
2445 to backport it from 2.3, with several frail hacks (the shlex
2441 module is rather limited in 2.2). Thanks to a suggestion by Ville
2446 module is rather limited in 2.2). Thanks to a suggestion by Ville
2442 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2447 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2443 problem.
2448 problem.
2444
2449
2445 (Magic.magic_system_verbose): new toggle to print the actual
2450 (Magic.magic_system_verbose): new toggle to print the actual
2446 system calls made by ipython. Mainly for debugging purposes.
2451 system calls made by ipython. Mainly for debugging purposes.
2447
2452
2448 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2453 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2449 doesn't support persistence. Reported (and fix suggested) by
2454 doesn't support persistence. Reported (and fix suggested) by
2450 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2455 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2451
2456
2452 2004-06-26 Fernando Perez <fperez@colorado.edu>
2457 2004-06-26 Fernando Perez <fperez@colorado.edu>
2453
2458
2454 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2459 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2455 continue prompts.
2460 continue prompts.
2456
2461
2457 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2462 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2458 function (basically a big docstring) and a few more things here to
2463 function (basically a big docstring) and a few more things here to
2459 speedup startup. pysh.py is now very lightweight. We want because
2464 speedup startup. pysh.py is now very lightweight. We want because
2460 it gets execfile'd, while InterpreterExec gets imported, so
2465 it gets execfile'd, while InterpreterExec gets imported, so
2461 byte-compilation saves time.
2466 byte-compilation saves time.
2462
2467
2463 2004-06-25 Fernando Perez <fperez@colorado.edu>
2468 2004-06-25 Fernando Perez <fperez@colorado.edu>
2464
2469
2465 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2470 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2466 -NUM', which was recently broken.
2471 -NUM', which was recently broken.
2467
2472
2468 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2473 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2469 in multi-line input (but not !!, which doesn't make sense there).
2474 in multi-line input (but not !!, which doesn't make sense there).
2470
2475
2471 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2476 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2472 It's just too useful, and people can turn it off in the less
2477 It's just too useful, and people can turn it off in the less
2473 common cases where it's a problem.
2478 common cases where it's a problem.
2474
2479
2475 2004-06-24 Fernando Perez <fperez@colorado.edu>
2480 2004-06-24 Fernando Perez <fperez@colorado.edu>
2476
2481
2477 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2482 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2478 special syntaxes (like alias calling) is now allied in multi-line
2483 special syntaxes (like alias calling) is now allied in multi-line
2479 input. This is still _very_ experimental, but it's necessary for
2484 input. This is still _very_ experimental, but it's necessary for
2480 efficient shell usage combining python looping syntax with system
2485 efficient shell usage combining python looping syntax with system
2481 calls. For now it's restricted to aliases, I don't think it
2486 calls. For now it's restricted to aliases, I don't think it
2482 really even makes sense to have this for magics.
2487 really even makes sense to have this for magics.
2483
2488
2484 2004-06-23 Fernando Perez <fperez@colorado.edu>
2489 2004-06-23 Fernando Perez <fperez@colorado.edu>
2485
2490
2486 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2491 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2487 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2492 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2488
2493
2489 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2494 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2490 extensions under Windows (after code sent by Gary Bishop). The
2495 extensions under Windows (after code sent by Gary Bishop). The
2491 extensions considered 'executable' are stored in IPython's rc
2496 extensions considered 'executable' are stored in IPython's rc
2492 structure as win_exec_ext.
2497 structure as win_exec_ext.
2493
2498
2494 * IPython/genutils.py (shell): new function, like system() but
2499 * IPython/genutils.py (shell): new function, like system() but
2495 without return value. Very useful for interactive shell work.
2500 without return value. Very useful for interactive shell work.
2496
2501
2497 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2502 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2498 delete aliases.
2503 delete aliases.
2499
2504
2500 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2505 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2501 sure that the alias table doesn't contain python keywords.
2506 sure that the alias table doesn't contain python keywords.
2502
2507
2503 2004-06-21 Fernando Perez <fperez@colorado.edu>
2508 2004-06-21 Fernando Perez <fperez@colorado.edu>
2504
2509
2505 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2510 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2506 non-existent items are found in $PATH. Reported by Thorsten.
2511 non-existent items are found in $PATH. Reported by Thorsten.
2507
2512
2508 2004-06-20 Fernando Perez <fperez@colorado.edu>
2513 2004-06-20 Fernando Perez <fperez@colorado.edu>
2509
2514
2510 * IPython/iplib.py (complete): modified the completer so that the
2515 * IPython/iplib.py (complete): modified the completer so that the
2511 order of priorities can be easily changed at runtime.
2516 order of priorities can be easily changed at runtime.
2512
2517
2513 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2518 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2514 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2519 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2515
2520
2516 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2521 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2517 expand Python variables prepended with $ in all system calls. The
2522 expand Python variables prepended with $ in all system calls. The
2518 same was done to InteractiveShell.handle_shell_escape. Now all
2523 same was done to InteractiveShell.handle_shell_escape. Now all
2519 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2524 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2520 expansion of python variables and expressions according to the
2525 expansion of python variables and expressions according to the
2521 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2526 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2522
2527
2523 Though PEP-215 has been rejected, a similar (but simpler) one
2528 Though PEP-215 has been rejected, a similar (but simpler) one
2524 seems like it will go into Python 2.4, PEP-292 -
2529 seems like it will go into Python 2.4, PEP-292 -
2525 http://www.python.org/peps/pep-0292.html.
2530 http://www.python.org/peps/pep-0292.html.
2526
2531
2527 I'll keep the full syntax of PEP-215, since IPython has since the
2532 I'll keep the full syntax of PEP-215, since IPython has since the
2528 start used Ka-Ping Yee's reference implementation discussed there
2533 start used Ka-Ping Yee's reference implementation discussed there
2529 (Itpl), and I actually like the powerful semantics it offers.
2534 (Itpl), and I actually like the powerful semantics it offers.
2530
2535
2531 In order to access normal shell variables, the $ has to be escaped
2536 In order to access normal shell variables, the $ has to be escaped
2532 via an extra $. For example:
2537 via an extra $. For example:
2533
2538
2534 In [7]: PATH='a python variable'
2539 In [7]: PATH='a python variable'
2535
2540
2536 In [8]: !echo $PATH
2541 In [8]: !echo $PATH
2537 a python variable
2542 a python variable
2538
2543
2539 In [9]: !echo $$PATH
2544 In [9]: !echo $$PATH
2540 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2545 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2541
2546
2542 (Magic.parse_options): escape $ so the shell doesn't evaluate
2547 (Magic.parse_options): escape $ so the shell doesn't evaluate
2543 things prematurely.
2548 things prematurely.
2544
2549
2545 * IPython/iplib.py (InteractiveShell.call_alias): added the
2550 * IPython/iplib.py (InteractiveShell.call_alias): added the
2546 ability for aliases to expand python variables via $.
2551 ability for aliases to expand python variables via $.
2547
2552
2548 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2553 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2549 system, now there's a @rehash/@rehashx pair of magics. These work
2554 system, now there's a @rehash/@rehashx pair of magics. These work
2550 like the csh rehash command, and can be invoked at any time. They
2555 like the csh rehash command, and can be invoked at any time. They
2551 build a table of aliases to everything in the user's $PATH
2556 build a table of aliases to everything in the user's $PATH
2552 (@rehash uses everything, @rehashx is slower but only adds
2557 (@rehash uses everything, @rehashx is slower but only adds
2553 executable files). With this, the pysh.py-based shell profile can
2558 executable files). With this, the pysh.py-based shell profile can
2554 now simply call rehash upon startup, and full access to all
2559 now simply call rehash upon startup, and full access to all
2555 programs in the user's path is obtained.
2560 programs in the user's path is obtained.
2556
2561
2557 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2562 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2558 functionality is now fully in place. I removed the old dynamic
2563 functionality is now fully in place. I removed the old dynamic
2559 code generation based approach, in favor of a much lighter one
2564 code generation based approach, in favor of a much lighter one
2560 based on a simple dict. The advantage is that this allows me to
2565 based on a simple dict. The advantage is that this allows me to
2561 now have thousands of aliases with negligible cost (unthinkable
2566 now have thousands of aliases with negligible cost (unthinkable
2562 with the old system).
2567 with the old system).
2563
2568
2564 2004-06-19 Fernando Perez <fperez@colorado.edu>
2569 2004-06-19 Fernando Perez <fperez@colorado.edu>
2565
2570
2566 * IPython/iplib.py (__init__): extended MagicCompleter class to
2571 * IPython/iplib.py (__init__): extended MagicCompleter class to
2567 also complete (last in priority) on user aliases.
2572 also complete (last in priority) on user aliases.
2568
2573
2569 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2574 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2570 call to eval.
2575 call to eval.
2571 (ItplNS.__init__): Added a new class which functions like Itpl,
2576 (ItplNS.__init__): Added a new class which functions like Itpl,
2572 but allows configuring the namespace for the evaluation to occur
2577 but allows configuring the namespace for the evaluation to occur
2573 in.
2578 in.
2574
2579
2575 2004-06-18 Fernando Perez <fperez@colorado.edu>
2580 2004-06-18 Fernando Perez <fperez@colorado.edu>
2576
2581
2577 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2582 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2578 better message when 'exit' or 'quit' are typed (a common newbie
2583 better message when 'exit' or 'quit' are typed (a common newbie
2579 confusion).
2584 confusion).
2580
2585
2581 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2586 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2582 check for Windows users.
2587 check for Windows users.
2583
2588
2584 * IPython/iplib.py (InteractiveShell.user_setup): removed
2589 * IPython/iplib.py (InteractiveShell.user_setup): removed
2585 disabling of colors for Windows. I'll test at runtime and issue a
2590 disabling of colors for Windows. I'll test at runtime and issue a
2586 warning if Gary's readline isn't found, as to nudge users to
2591 warning if Gary's readline isn't found, as to nudge users to
2587 download it.
2592 download it.
2588
2593
2589 2004-06-16 Fernando Perez <fperez@colorado.edu>
2594 2004-06-16 Fernando Perez <fperez@colorado.edu>
2590
2595
2591 * IPython/genutils.py (Stream.__init__): changed to print errors
2596 * IPython/genutils.py (Stream.__init__): changed to print errors
2592 to sys.stderr. I had a circular dependency here. Now it's
2597 to sys.stderr. I had a circular dependency here. Now it's
2593 possible to run ipython as IDLE's shell (consider this pre-alpha,
2598 possible to run ipython as IDLE's shell (consider this pre-alpha,
2594 since true stdout things end up in the starting terminal instead
2599 since true stdout things end up in the starting terminal instead
2595 of IDLE's out).
2600 of IDLE's out).
2596
2601
2597 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2602 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2598 users who haven't # updated their prompt_in2 definitions. Remove
2603 users who haven't # updated their prompt_in2 definitions. Remove
2599 eventually.
2604 eventually.
2600 (multiple_replace): added credit to original ASPN recipe.
2605 (multiple_replace): added credit to original ASPN recipe.
2601
2606
2602 2004-06-15 Fernando Perez <fperez@colorado.edu>
2607 2004-06-15 Fernando Perez <fperez@colorado.edu>
2603
2608
2604 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2609 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2605 list of auto-defined aliases.
2610 list of auto-defined aliases.
2606
2611
2607 2004-06-13 Fernando Perez <fperez@colorado.edu>
2612 2004-06-13 Fernando Perez <fperez@colorado.edu>
2608
2613
2609 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2614 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2610 install was really requested (so setup.py can be used for other
2615 install was really requested (so setup.py can be used for other
2611 things under Windows).
2616 things under Windows).
2612
2617
2613 2004-06-10 Fernando Perez <fperez@colorado.edu>
2618 2004-06-10 Fernando Perez <fperez@colorado.edu>
2614
2619
2615 * IPython/Logger.py (Logger.create_log): Manually remove any old
2620 * IPython/Logger.py (Logger.create_log): Manually remove any old
2616 backup, since os.remove may fail under Windows. Fixes bug
2621 backup, since os.remove may fail under Windows. Fixes bug
2617 reported by Thorsten.
2622 reported by Thorsten.
2618
2623
2619 2004-06-09 Fernando Perez <fperez@colorado.edu>
2624 2004-06-09 Fernando Perez <fperez@colorado.edu>
2620
2625
2621 * examples/example-embed.py: fixed all references to %n (replaced
2626 * examples/example-embed.py: fixed all references to %n (replaced
2622 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2627 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2623 for all examples and the manual as well.
2628 for all examples and the manual as well.
2624
2629
2625 2004-06-08 Fernando Perez <fperez@colorado.edu>
2630 2004-06-08 Fernando Perez <fperez@colorado.edu>
2626
2631
2627 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2632 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2628 alignment and color management. All 3 prompt subsystems now
2633 alignment and color management. All 3 prompt subsystems now
2629 inherit from BasePrompt.
2634 inherit from BasePrompt.
2630
2635
2631 * tools/release: updates for windows installer build and tag rpms
2636 * tools/release: updates for windows installer build and tag rpms
2632 with python version (since paths are fixed).
2637 with python version (since paths are fixed).
2633
2638
2634 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2639 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2635 which will become eventually obsolete. Also fixed the default
2640 which will become eventually obsolete. Also fixed the default
2636 prompt_in2 to use \D, so at least new users start with the correct
2641 prompt_in2 to use \D, so at least new users start with the correct
2637 defaults.
2642 defaults.
2638 WARNING: Users with existing ipythonrc files will need to apply
2643 WARNING: Users with existing ipythonrc files will need to apply
2639 this fix manually!
2644 this fix manually!
2640
2645
2641 * setup.py: make windows installer (.exe). This is finally the
2646 * setup.py: make windows installer (.exe). This is finally the
2642 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2647 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2643 which I hadn't included because it required Python 2.3 (or recent
2648 which I hadn't included because it required Python 2.3 (or recent
2644 distutils).
2649 distutils).
2645
2650
2646 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2651 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2647 usage of new '\D' escape.
2652 usage of new '\D' escape.
2648
2653
2649 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2654 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2650 lacks os.getuid())
2655 lacks os.getuid())
2651 (CachedOutput.set_colors): Added the ability to turn coloring
2656 (CachedOutput.set_colors): Added the ability to turn coloring
2652 on/off with @colors even for manually defined prompt colors. It
2657 on/off with @colors even for manually defined prompt colors. It
2653 uses a nasty global, but it works safely and via the generic color
2658 uses a nasty global, but it works safely and via the generic color
2654 handling mechanism.
2659 handling mechanism.
2655 (Prompt2.__init__): Introduced new escape '\D' for continuation
2660 (Prompt2.__init__): Introduced new escape '\D' for continuation
2656 prompts. It represents the counter ('\#') as dots.
2661 prompts. It represents the counter ('\#') as dots.
2657 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2662 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2658 need to update their ipythonrc files and replace '%n' with '\D' in
2663 need to update their ipythonrc files and replace '%n' with '\D' in
2659 their prompt_in2 settings everywhere. Sorry, but there's
2664 their prompt_in2 settings everywhere. Sorry, but there's
2660 otherwise no clean way to get all prompts to properly align. The
2665 otherwise no clean way to get all prompts to properly align. The
2661 ipythonrc shipped with IPython has been updated.
2666 ipythonrc shipped with IPython has been updated.
2662
2667
2663 2004-06-07 Fernando Perez <fperez@colorado.edu>
2668 2004-06-07 Fernando Perez <fperez@colorado.edu>
2664
2669
2665 * setup.py (isfile): Pass local_icons option to latex2html, so the
2670 * setup.py (isfile): Pass local_icons option to latex2html, so the
2666 resulting HTML file is self-contained. Thanks to
2671 resulting HTML file is self-contained. Thanks to
2667 dryice-AT-liu.com.cn for the tip.
2672 dryice-AT-liu.com.cn for the tip.
2668
2673
2669 * pysh.py: I created a new profile 'shell', which implements a
2674 * pysh.py: I created a new profile 'shell', which implements a
2670 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2675 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2671 system shell, nor will it become one anytime soon. It's mainly
2676 system shell, nor will it become one anytime soon. It's mainly
2672 meant to illustrate the use of the new flexible bash-like prompts.
2677 meant to illustrate the use of the new flexible bash-like prompts.
2673 I guess it could be used by hardy souls for true shell management,
2678 I guess it could be used by hardy souls for true shell management,
2674 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2679 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2675 profile. This uses the InterpreterExec extension provided by
2680 profile. This uses the InterpreterExec extension provided by
2676 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2681 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2677
2682
2678 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2683 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2679 auto-align itself with the length of the previous input prompt
2684 auto-align itself with the length of the previous input prompt
2680 (taking into account the invisible color escapes).
2685 (taking into account the invisible color escapes).
2681 (CachedOutput.__init__): Large restructuring of this class. Now
2686 (CachedOutput.__init__): Large restructuring of this class. Now
2682 all three prompts (primary1, primary2, output) are proper objects,
2687 all three prompts (primary1, primary2, output) are proper objects,
2683 managed by the 'parent' CachedOutput class. The code is still a
2688 managed by the 'parent' CachedOutput class. The code is still a
2684 bit hackish (all prompts share state via a pointer to the cache),
2689 bit hackish (all prompts share state via a pointer to the cache),
2685 but it's overall far cleaner than before.
2690 but it's overall far cleaner than before.
2686
2691
2687 * IPython/genutils.py (getoutputerror): modified to add verbose,
2692 * IPython/genutils.py (getoutputerror): modified to add verbose,
2688 debug and header options. This makes the interface of all getout*
2693 debug and header options. This makes the interface of all getout*
2689 functions uniform.
2694 functions uniform.
2690 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2695 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2691
2696
2692 * IPython/Magic.py (Magic.default_option): added a function to
2697 * IPython/Magic.py (Magic.default_option): added a function to
2693 allow registering default options for any magic command. This
2698 allow registering default options for any magic command. This
2694 makes it easy to have profiles which customize the magics globally
2699 makes it easy to have profiles which customize the magics globally
2695 for a certain use. The values set through this function are
2700 for a certain use. The values set through this function are
2696 picked up by the parse_options() method, which all magics should
2701 picked up by the parse_options() method, which all magics should
2697 use to parse their options.
2702 use to parse their options.
2698
2703
2699 * IPython/genutils.py (warn): modified the warnings framework to
2704 * IPython/genutils.py (warn): modified the warnings framework to
2700 use the Term I/O class. I'm trying to slowly unify all of
2705 use the Term I/O class. I'm trying to slowly unify all of
2701 IPython's I/O operations to pass through Term.
2706 IPython's I/O operations to pass through Term.
2702
2707
2703 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2708 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2704 the secondary prompt to correctly match the length of the primary
2709 the secondary prompt to correctly match the length of the primary
2705 one for any prompt. Now multi-line code will properly line up
2710 one for any prompt. Now multi-line code will properly line up
2706 even for path dependent prompts, such as the new ones available
2711 even for path dependent prompts, such as the new ones available
2707 via the prompt_specials.
2712 via the prompt_specials.
2708
2713
2709 2004-06-06 Fernando Perez <fperez@colorado.edu>
2714 2004-06-06 Fernando Perez <fperez@colorado.edu>
2710
2715
2711 * IPython/Prompts.py (prompt_specials): Added the ability to have
2716 * IPython/Prompts.py (prompt_specials): Added the ability to have
2712 bash-like special sequences in the prompts, which get
2717 bash-like special sequences in the prompts, which get
2713 automatically expanded. Things like hostname, current working
2718 automatically expanded. Things like hostname, current working
2714 directory and username are implemented already, but it's easy to
2719 directory and username are implemented already, but it's easy to
2715 add more in the future. Thanks to a patch by W.J. van der Laan
2720 add more in the future. Thanks to a patch by W.J. van der Laan
2716 <gnufnork-AT-hetdigitalegat.nl>
2721 <gnufnork-AT-hetdigitalegat.nl>
2717 (prompt_specials): Added color support for prompt strings, so
2722 (prompt_specials): Added color support for prompt strings, so
2718 users can define arbitrary color setups for their prompts.
2723 users can define arbitrary color setups for their prompts.
2719
2724
2720 2004-06-05 Fernando Perez <fperez@colorado.edu>
2725 2004-06-05 Fernando Perez <fperez@colorado.edu>
2721
2726
2722 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2727 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2723 code to load Gary Bishop's readline and configure it
2728 code to load Gary Bishop's readline and configure it
2724 automatically. Thanks to Gary for help on this.
2729 automatically. Thanks to Gary for help on this.
2725
2730
2726 2004-06-01 Fernando Perez <fperez@colorado.edu>
2731 2004-06-01 Fernando Perez <fperez@colorado.edu>
2727
2732
2728 * IPython/Logger.py (Logger.create_log): fix bug for logging
2733 * IPython/Logger.py (Logger.create_log): fix bug for logging
2729 with no filename (previous fix was incomplete).
2734 with no filename (previous fix was incomplete).
2730
2735
2731 2004-05-25 Fernando Perez <fperez@colorado.edu>
2736 2004-05-25 Fernando Perez <fperez@colorado.edu>
2732
2737
2733 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2738 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2734 parens would get passed to the shell.
2739 parens would get passed to the shell.
2735
2740
2736 2004-05-20 Fernando Perez <fperez@colorado.edu>
2741 2004-05-20 Fernando Perez <fperez@colorado.edu>
2737
2742
2738 * IPython/Magic.py (Magic.magic_prun): changed default profile
2743 * IPython/Magic.py (Magic.magic_prun): changed default profile
2739 sort order to 'time' (the more common profiling need).
2744 sort order to 'time' (the more common profiling need).
2740
2745
2741 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2746 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2742 so that source code shown is guaranteed in sync with the file on
2747 so that source code shown is guaranteed in sync with the file on
2743 disk (also changed in psource). Similar fix to the one for
2748 disk (also changed in psource). Similar fix to the one for
2744 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2749 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2745 <yann.ledu-AT-noos.fr>.
2750 <yann.ledu-AT-noos.fr>.
2746
2751
2747 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2752 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2748 with a single option would not be correctly parsed. Closes
2753 with a single option would not be correctly parsed. Closes
2749 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2754 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2750 introduced in 0.6.0 (on 2004-05-06).
2755 introduced in 0.6.0 (on 2004-05-06).
2751
2756
2752 2004-05-13 *** Released version 0.6.0
2757 2004-05-13 *** Released version 0.6.0
2753
2758
2754 2004-05-13 Fernando Perez <fperez@colorado.edu>
2759 2004-05-13 Fernando Perez <fperez@colorado.edu>
2755
2760
2756 * debian/: Added debian/ directory to CVS, so that debian support
2761 * debian/: Added debian/ directory to CVS, so that debian support
2757 is publicly accessible. The debian package is maintained by Jack
2762 is publicly accessible. The debian package is maintained by Jack
2758 Moffit <jack-AT-xiph.org>.
2763 Moffit <jack-AT-xiph.org>.
2759
2764
2760 * Documentation: included the notes about an ipython-based system
2765 * Documentation: included the notes about an ipython-based system
2761 shell (the hypothetical 'pysh') into the new_design.pdf document,
2766 shell (the hypothetical 'pysh') into the new_design.pdf document,
2762 so that these ideas get distributed to users along with the
2767 so that these ideas get distributed to users along with the
2763 official documentation.
2768 official documentation.
2764
2769
2765 2004-05-10 Fernando Perez <fperez@colorado.edu>
2770 2004-05-10 Fernando Perez <fperez@colorado.edu>
2766
2771
2767 * IPython/Logger.py (Logger.create_log): fix recently introduced
2772 * IPython/Logger.py (Logger.create_log): fix recently introduced
2768 bug (misindented line) where logstart would fail when not given an
2773 bug (misindented line) where logstart would fail when not given an
2769 explicit filename.
2774 explicit filename.
2770
2775
2771 2004-05-09 Fernando Perez <fperez@colorado.edu>
2776 2004-05-09 Fernando Perez <fperez@colorado.edu>
2772
2777
2773 * IPython/Magic.py (Magic.parse_options): skip system call when
2778 * IPython/Magic.py (Magic.parse_options): skip system call when
2774 there are no options to look for. Faster, cleaner for the common
2779 there are no options to look for. Faster, cleaner for the common
2775 case.
2780 case.
2776
2781
2777 * Documentation: many updates to the manual: describing Windows
2782 * Documentation: many updates to the manual: describing Windows
2778 support better, Gnuplot updates, credits, misc small stuff. Also
2783 support better, Gnuplot updates, credits, misc small stuff. Also
2779 updated the new_design doc a bit.
2784 updated the new_design doc a bit.
2780
2785
2781 2004-05-06 *** Released version 0.6.0.rc1
2786 2004-05-06 *** Released version 0.6.0.rc1
2782
2787
2783 2004-05-06 Fernando Perez <fperez@colorado.edu>
2788 2004-05-06 Fernando Perez <fperez@colorado.edu>
2784
2789
2785 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2790 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2786 operations to use the vastly more efficient list/''.join() method.
2791 operations to use the vastly more efficient list/''.join() method.
2787 (FormattedTB.text): Fix
2792 (FormattedTB.text): Fix
2788 http://www.scipy.net/roundup/ipython/issue12 - exception source
2793 http://www.scipy.net/roundup/ipython/issue12 - exception source
2789 extract not updated after reload. Thanks to Mike Salib
2794 extract not updated after reload. Thanks to Mike Salib
2790 <msalib-AT-mit.edu> for pinning the source of the problem.
2795 <msalib-AT-mit.edu> for pinning the source of the problem.
2791 Fortunately, the solution works inside ipython and doesn't require
2796 Fortunately, the solution works inside ipython and doesn't require
2792 any changes to python proper.
2797 any changes to python proper.
2793
2798
2794 * IPython/Magic.py (Magic.parse_options): Improved to process the
2799 * IPython/Magic.py (Magic.parse_options): Improved to process the
2795 argument list as a true shell would (by actually using the
2800 argument list as a true shell would (by actually using the
2796 underlying system shell). This way, all @magics automatically get
2801 underlying system shell). This way, all @magics automatically get
2797 shell expansion for variables. Thanks to a comment by Alex
2802 shell expansion for variables. Thanks to a comment by Alex
2798 Schmolck.
2803 Schmolck.
2799
2804
2800 2004-04-04 Fernando Perez <fperez@colorado.edu>
2805 2004-04-04 Fernando Perez <fperez@colorado.edu>
2801
2806
2802 * IPython/iplib.py (InteractiveShell.interact): Added a special
2807 * IPython/iplib.py (InteractiveShell.interact): Added a special
2803 trap for a debugger quit exception, which is basically impossible
2808 trap for a debugger quit exception, which is basically impossible
2804 to handle by normal mechanisms, given what pdb does to the stack.
2809 to handle by normal mechanisms, given what pdb does to the stack.
2805 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2810 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
2806
2811
2807 2004-04-03 Fernando Perez <fperez@colorado.edu>
2812 2004-04-03 Fernando Perez <fperez@colorado.edu>
2808
2813
2809 * IPython/genutils.py (Term): Standardized the names of the Term
2814 * IPython/genutils.py (Term): Standardized the names of the Term
2810 class streams to cin/cout/cerr, following C++ naming conventions
2815 class streams to cin/cout/cerr, following C++ naming conventions
2811 (I can't use in/out/err because 'in' is not a valid attribute
2816 (I can't use in/out/err because 'in' is not a valid attribute
2812 name).
2817 name).
2813
2818
2814 * IPython/iplib.py (InteractiveShell.interact): don't increment
2819 * IPython/iplib.py (InteractiveShell.interact): don't increment
2815 the prompt if there's no user input. By Daniel 'Dang' Griffith
2820 the prompt if there's no user input. By Daniel 'Dang' Griffith
2816 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2821 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
2817 Francois Pinard.
2822 Francois Pinard.
2818
2823
2819 2004-04-02 Fernando Perez <fperez@colorado.edu>
2824 2004-04-02 Fernando Perez <fperez@colorado.edu>
2820
2825
2821 * IPython/genutils.py (Stream.__init__): Modified to survive at
2826 * IPython/genutils.py (Stream.__init__): Modified to survive at
2822 least importing in contexts where stdin/out/err aren't true file
2827 least importing in contexts where stdin/out/err aren't true file
2823 objects, such as PyCrust (they lack fileno() and mode). However,
2828 objects, such as PyCrust (they lack fileno() and mode). However,
2824 the recovery facilities which rely on these things existing will
2829 the recovery facilities which rely on these things existing will
2825 not work.
2830 not work.
2826
2831
2827 2004-04-01 Fernando Perez <fperez@colorado.edu>
2832 2004-04-01 Fernando Perez <fperez@colorado.edu>
2828
2833
2829 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2834 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
2830 use the new getoutputerror() function, so it properly
2835 use the new getoutputerror() function, so it properly
2831 distinguishes stdout/err.
2836 distinguishes stdout/err.
2832
2837
2833 * IPython/genutils.py (getoutputerror): added a function to
2838 * IPython/genutils.py (getoutputerror): added a function to
2834 capture separately the standard output and error of a command.
2839 capture separately the standard output and error of a command.
2835 After a comment from dang on the mailing lists. This code is
2840 After a comment from dang on the mailing lists. This code is
2836 basically a modified version of commands.getstatusoutput(), from
2841 basically a modified version of commands.getstatusoutput(), from
2837 the standard library.
2842 the standard library.
2838
2843
2839 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2844 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
2840 '!!' as a special syntax (shorthand) to access @sx.
2845 '!!' as a special syntax (shorthand) to access @sx.
2841
2846
2842 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2847 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
2843 command and return its output as a list split on '\n'.
2848 command and return its output as a list split on '\n'.
2844
2849
2845 2004-03-31 Fernando Perez <fperez@colorado.edu>
2850 2004-03-31 Fernando Perez <fperez@colorado.edu>
2846
2851
2847 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2852 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
2848 method to dictionaries used as FakeModule instances if they lack
2853 method to dictionaries used as FakeModule instances if they lack
2849 it. At least pydoc in python2.3 breaks for runtime-defined
2854 it. At least pydoc in python2.3 breaks for runtime-defined
2850 functions without this hack. At some point I need to _really_
2855 functions without this hack. At some point I need to _really_
2851 understand what FakeModule is doing, because it's a gross hack.
2856 understand what FakeModule is doing, because it's a gross hack.
2852 But it solves Arnd's problem for now...
2857 But it solves Arnd's problem for now...
2853
2858
2854 2004-02-27 Fernando Perez <fperez@colorado.edu>
2859 2004-02-27 Fernando Perez <fperez@colorado.edu>
2855
2860
2856 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2861 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
2857 mode would behave erratically. Also increased the number of
2862 mode would behave erratically. Also increased the number of
2858 possible logs in rotate mod to 999. Thanks to Rod Holland
2863 possible logs in rotate mod to 999. Thanks to Rod Holland
2859 <rhh@StructureLABS.com> for the report and fixes.
2864 <rhh@StructureLABS.com> for the report and fixes.
2860
2865
2861 2004-02-26 Fernando Perez <fperez@colorado.edu>
2866 2004-02-26 Fernando Perez <fperez@colorado.edu>
2862
2867
2863 * IPython/genutils.py (page): Check that the curses module really
2868 * IPython/genutils.py (page): Check that the curses module really
2864 has the initscr attribute before trying to use it. For some
2869 has the initscr attribute before trying to use it. For some
2865 reason, the Solaris curses module is missing this. I think this
2870 reason, the Solaris curses module is missing this. I think this
2866 should be considered a Solaris python bug, but I'm not sure.
2871 should be considered a Solaris python bug, but I'm not sure.
2867
2872
2868 2004-01-17 Fernando Perez <fperez@colorado.edu>
2873 2004-01-17 Fernando Perez <fperez@colorado.edu>
2869
2874
2870 * IPython/genutils.py (Stream.__init__): Changes to try to make
2875 * IPython/genutils.py (Stream.__init__): Changes to try to make
2871 ipython robust against stdin/out/err being closed by the user.
2876 ipython robust against stdin/out/err being closed by the user.
2872 This is 'user error' (and blocks a normal python session, at least
2877 This is 'user error' (and blocks a normal python session, at least
2873 the stdout case). However, Ipython should be able to survive such
2878 the stdout case). However, Ipython should be able to survive such
2874 instances of abuse as gracefully as possible. To simplify the
2879 instances of abuse as gracefully as possible. To simplify the
2875 coding and maintain compatibility with Gary Bishop's Term
2880 coding and maintain compatibility with Gary Bishop's Term
2876 contributions, I've made use of classmethods for this. I think
2881 contributions, I've made use of classmethods for this. I think
2877 this introduces a dependency on python 2.2.
2882 this introduces a dependency on python 2.2.
2878
2883
2879 2004-01-13 Fernando Perez <fperez@colorado.edu>
2884 2004-01-13 Fernando Perez <fperez@colorado.edu>
2880
2885
2881 * IPython/numutils.py (exp_safe): simplified the code a bit and
2886 * IPython/numutils.py (exp_safe): simplified the code a bit and
2882 removed the need for importing the kinds module altogether.
2887 removed the need for importing the kinds module altogether.
2883
2888
2884 2004-01-06 Fernando Perez <fperez@colorado.edu>
2889 2004-01-06 Fernando Perez <fperez@colorado.edu>
2885
2890
2886 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2891 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
2887 a magic function instead, after some community feedback. No
2892 a magic function instead, after some community feedback. No
2888 special syntax will exist for it, but its name is deliberately
2893 special syntax will exist for it, but its name is deliberately
2889 very short.
2894 very short.
2890
2895
2891 2003-12-20 Fernando Perez <fperez@colorado.edu>
2896 2003-12-20 Fernando Perez <fperez@colorado.edu>
2892
2897
2893 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2898 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
2894 new functionality, to automagically assign the result of a shell
2899 new functionality, to automagically assign the result of a shell
2895 command to a variable. I'll solicit some community feedback on
2900 command to a variable. I'll solicit some community feedback on
2896 this before making it permanent.
2901 this before making it permanent.
2897
2902
2898 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2903 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
2899 requested about callables for which inspect couldn't obtain a
2904 requested about callables for which inspect couldn't obtain a
2900 proper argspec. Thanks to a crash report sent by Etienne
2905 proper argspec. Thanks to a crash report sent by Etienne
2901 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2906 Posthumus <etienne-AT-apple01.cs.vu.nl>.
2902
2907
2903 2003-12-09 Fernando Perez <fperez@colorado.edu>
2908 2003-12-09 Fernando Perez <fperez@colorado.edu>
2904
2909
2905 * IPython/genutils.py (page): patch for the pager to work across
2910 * IPython/genutils.py (page): patch for the pager to work across
2906 various versions of Windows. By Gary Bishop.
2911 various versions of Windows. By Gary Bishop.
2907
2912
2908 2003-12-04 Fernando Perez <fperez@colorado.edu>
2913 2003-12-04 Fernando Perez <fperez@colorado.edu>
2909
2914
2910 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2915 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
2911 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2916 Gnuplot.py version 1.7, whose internal names changed quite a bit.
2912 While I tested this and it looks ok, there may still be corner
2917 While I tested this and it looks ok, there may still be corner
2913 cases I've missed.
2918 cases I've missed.
2914
2919
2915 2003-12-01 Fernando Perez <fperez@colorado.edu>
2920 2003-12-01 Fernando Perez <fperez@colorado.edu>
2916
2921
2917 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2922 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
2918 where a line like 'p,q=1,2' would fail because the automagic
2923 where a line like 'p,q=1,2' would fail because the automagic
2919 system would be triggered for @p.
2924 system would be triggered for @p.
2920
2925
2921 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2926 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
2922 cleanups, code unmodified.
2927 cleanups, code unmodified.
2923
2928
2924 * IPython/genutils.py (Term): added a class for IPython to handle
2929 * IPython/genutils.py (Term): added a class for IPython to handle
2925 output. In most cases it will just be a proxy for stdout/err, but
2930 output. In most cases it will just be a proxy for stdout/err, but
2926 having this allows modifications to be made for some platforms,
2931 having this allows modifications to be made for some platforms,
2927 such as handling color escapes under Windows. All of this code
2932 such as handling color escapes under Windows. All of this code
2928 was contributed by Gary Bishop, with minor modifications by me.
2933 was contributed by Gary Bishop, with minor modifications by me.
2929 The actual changes affect many files.
2934 The actual changes affect many files.
2930
2935
2931 2003-11-30 Fernando Perez <fperez@colorado.edu>
2936 2003-11-30 Fernando Perez <fperez@colorado.edu>
2932
2937
2933 * IPython/iplib.py (file_matches): new completion code, courtesy
2938 * IPython/iplib.py (file_matches): new completion code, courtesy
2934 of Jeff Collins. This enables filename completion again under
2939 of Jeff Collins. This enables filename completion again under
2935 python 2.3, which disabled it at the C level.
2940 python 2.3, which disabled it at the C level.
2936
2941
2937 2003-11-11 Fernando Perez <fperez@colorado.edu>
2942 2003-11-11 Fernando Perez <fperez@colorado.edu>
2938
2943
2939 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2944 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
2940 for Numeric.array(map(...)), but often convenient.
2945 for Numeric.array(map(...)), but often convenient.
2941
2946
2942 2003-11-05 Fernando Perez <fperez@colorado.edu>
2947 2003-11-05 Fernando Perez <fperez@colorado.edu>
2943
2948
2944 * IPython/numutils.py (frange): Changed a call from int() to
2949 * IPython/numutils.py (frange): Changed a call from int() to
2945 int(round()) to prevent a problem reported with arange() in the
2950 int(round()) to prevent a problem reported with arange() in the
2946 numpy list.
2951 numpy list.
2947
2952
2948 2003-10-06 Fernando Perez <fperez@colorado.edu>
2953 2003-10-06 Fernando Perez <fperez@colorado.edu>
2949
2954
2950 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2955 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
2951 prevent crashes if sys lacks an argv attribute (it happens with
2956 prevent crashes if sys lacks an argv attribute (it happens with
2952 embedded interpreters which build a bare-bones sys module).
2957 embedded interpreters which build a bare-bones sys module).
2953 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2958 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
2954
2959
2955 2003-09-24 Fernando Perez <fperez@colorado.edu>
2960 2003-09-24 Fernando Perez <fperez@colorado.edu>
2956
2961
2957 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2962 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
2958 to protect against poorly written user objects where __getattr__
2963 to protect against poorly written user objects where __getattr__
2959 raises exceptions other than AttributeError. Thanks to a bug
2964 raises exceptions other than AttributeError. Thanks to a bug
2960 report by Oliver Sander <osander-AT-gmx.de>.
2965 report by Oliver Sander <osander-AT-gmx.de>.
2961
2966
2962 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2967 * IPython/FakeModule.py (FakeModule.__repr__): this method was
2963 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2968 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
2964
2969
2965 2003-09-09 Fernando Perez <fperez@colorado.edu>
2970 2003-09-09 Fernando Perez <fperez@colorado.edu>
2966
2971
2967 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2972 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2968 unpacking a list whith a callable as first element would
2973 unpacking a list whith a callable as first element would
2969 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2974 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
2970 Collins.
2975 Collins.
2971
2976
2972 2003-08-25 *** Released version 0.5.0
2977 2003-08-25 *** Released version 0.5.0
2973
2978
2974 2003-08-22 Fernando Perez <fperez@colorado.edu>
2979 2003-08-22 Fernando Perez <fperez@colorado.edu>
2975
2980
2976 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2981 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
2977 improperly defined user exceptions. Thanks to feedback from Mark
2982 improperly defined user exceptions. Thanks to feedback from Mark
2978 Russell <mrussell-AT-verio.net>.
2983 Russell <mrussell-AT-verio.net>.
2979
2984
2980 2003-08-20 Fernando Perez <fperez@colorado.edu>
2985 2003-08-20 Fernando Perez <fperez@colorado.edu>
2981
2986
2982 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2987 * IPython/OInspect.py (Inspector.pinfo): changed String Form
2983 printing so that it would print multi-line string forms starting
2988 printing so that it would print multi-line string forms starting
2984 with a new line. This way the formatting is better respected for
2989 with a new line. This way the formatting is better respected for
2985 objects which work hard to make nice string forms.
2990 objects which work hard to make nice string forms.
2986
2991
2987 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2992 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
2988 autocall would overtake data access for objects with both
2993 autocall would overtake data access for objects with both
2989 __getitem__ and __call__.
2994 __getitem__ and __call__.
2990
2995
2991 2003-08-19 *** Released version 0.5.0-rc1
2996 2003-08-19 *** Released version 0.5.0-rc1
2992
2997
2993 2003-08-19 Fernando Perez <fperez@colorado.edu>
2998 2003-08-19 Fernando Perez <fperez@colorado.edu>
2994
2999
2995 * IPython/deep_reload.py (load_tail): single tiny change here
3000 * IPython/deep_reload.py (load_tail): single tiny change here
2996 seems to fix the long-standing bug of dreload() failing to work
3001 seems to fix the long-standing bug of dreload() failing to work
2997 for dotted names. But this module is pretty tricky, so I may have
3002 for dotted names. But this module is pretty tricky, so I may have
2998 missed some subtlety. Needs more testing!.
3003 missed some subtlety. Needs more testing!.
2999
3004
3000 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3005 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3001 exceptions which have badly implemented __str__ methods.
3006 exceptions which have badly implemented __str__ methods.
3002 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3007 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3003 which I've been getting reports about from Python 2.3 users. I
3008 which I've been getting reports about from Python 2.3 users. I
3004 wish I had a simple test case to reproduce the problem, so I could
3009 wish I had a simple test case to reproduce the problem, so I could
3005 either write a cleaner workaround or file a bug report if
3010 either write a cleaner workaround or file a bug report if
3006 necessary.
3011 necessary.
3007
3012
3008 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3013 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3009 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3014 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3010 a bug report by Tjabo Kloppenburg.
3015 a bug report by Tjabo Kloppenburg.
3011
3016
3012 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3017 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3013 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3018 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3014 seems rather unstable. Thanks to a bug report by Tjabo
3019 seems rather unstable. Thanks to a bug report by Tjabo
3015 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3020 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3016
3021
3017 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3022 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3018 this out soon because of the critical fixes in the inner loop for
3023 this out soon because of the critical fixes in the inner loop for
3019 generators.
3024 generators.
3020
3025
3021 * IPython/Magic.py (Magic.getargspec): removed. This (and
3026 * IPython/Magic.py (Magic.getargspec): removed. This (and
3022 _get_def) have been obsoleted by OInspect for a long time, I
3027 _get_def) have been obsoleted by OInspect for a long time, I
3023 hadn't noticed that they were dead code.
3028 hadn't noticed that they were dead code.
3024 (Magic._ofind): restored _ofind functionality for a few literals
3029 (Magic._ofind): restored _ofind functionality for a few literals
3025 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3030 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3026 for things like "hello".capitalize?, since that would require a
3031 for things like "hello".capitalize?, since that would require a
3027 potentially dangerous eval() again.
3032 potentially dangerous eval() again.
3028
3033
3029 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3034 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3030 logic a bit more to clean up the escapes handling and minimize the
3035 logic a bit more to clean up the escapes handling and minimize the
3031 use of _ofind to only necessary cases. The interactive 'feel' of
3036 use of _ofind to only necessary cases. The interactive 'feel' of
3032 IPython should have improved quite a bit with the changes in
3037 IPython should have improved quite a bit with the changes in
3033 _prefilter and _ofind (besides being far safer than before).
3038 _prefilter and _ofind (besides being far safer than before).
3034
3039
3035 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3040 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3036 obscure, never reported). Edit would fail to find the object to
3041 obscure, never reported). Edit would fail to find the object to
3037 edit under some circumstances.
3042 edit under some circumstances.
3038 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3043 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3039 which were causing double-calling of generators. Those eval calls
3044 which were causing double-calling of generators. Those eval calls
3040 were _very_ dangerous, since code with side effects could be
3045 were _very_ dangerous, since code with side effects could be
3041 triggered. As they say, 'eval is evil'... These were the
3046 triggered. As they say, 'eval is evil'... These were the
3042 nastiest evals in IPython. Besides, _ofind is now far simpler,
3047 nastiest evals in IPython. Besides, _ofind is now far simpler,
3043 and it should also be quite a bit faster. Its use of inspect is
3048 and it should also be quite a bit faster. Its use of inspect is
3044 also safer, so perhaps some of the inspect-related crashes I've
3049 also safer, so perhaps some of the inspect-related crashes I've
3045 seen lately with Python 2.3 might be taken care of. That will
3050 seen lately with Python 2.3 might be taken care of. That will
3046 need more testing.
3051 need more testing.
3047
3052
3048 2003-08-17 Fernando Perez <fperez@colorado.edu>
3053 2003-08-17 Fernando Perez <fperez@colorado.edu>
3049
3054
3050 * IPython/iplib.py (InteractiveShell._prefilter): significant
3055 * IPython/iplib.py (InteractiveShell._prefilter): significant
3051 simplifications to the logic for handling user escapes. Faster
3056 simplifications to the logic for handling user escapes. Faster
3052 and simpler code.
3057 and simpler code.
3053
3058
3054 2003-08-14 Fernando Perez <fperez@colorado.edu>
3059 2003-08-14 Fernando Perez <fperez@colorado.edu>
3055
3060
3056 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3061 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3057 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3062 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3058 but it should be quite a bit faster. And the recursive version
3063 but it should be quite a bit faster. And the recursive version
3059 generated O(log N) intermediate storage for all rank>1 arrays,
3064 generated O(log N) intermediate storage for all rank>1 arrays,
3060 even if they were contiguous.
3065 even if they were contiguous.
3061 (l1norm): Added this function.
3066 (l1norm): Added this function.
3062 (norm): Added this function for arbitrary norms (including
3067 (norm): Added this function for arbitrary norms (including
3063 l-infinity). l1 and l2 are still special cases for convenience
3068 l-infinity). l1 and l2 are still special cases for convenience
3064 and speed.
3069 and speed.
3065
3070
3066 2003-08-03 Fernando Perez <fperez@colorado.edu>
3071 2003-08-03 Fernando Perez <fperez@colorado.edu>
3067
3072
3068 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3073 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3069 exceptions, which now raise PendingDeprecationWarnings in Python
3074 exceptions, which now raise PendingDeprecationWarnings in Python
3070 2.3. There were some in Magic and some in Gnuplot2.
3075 2.3. There were some in Magic and some in Gnuplot2.
3071
3076
3072 2003-06-30 Fernando Perez <fperez@colorado.edu>
3077 2003-06-30 Fernando Perez <fperez@colorado.edu>
3073
3078
3074 * IPython/genutils.py (page): modified to call curses only for
3079 * IPython/genutils.py (page): modified to call curses only for
3075 terminals where TERM=='xterm'. After problems under many other
3080 terminals where TERM=='xterm'. After problems under many other
3076 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3081 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3077
3082
3078 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3083 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3079 would be triggered when readline was absent. This was just an old
3084 would be triggered when readline was absent. This was just an old
3080 debugging statement I'd forgotten to take out.
3085 debugging statement I'd forgotten to take out.
3081
3086
3082 2003-06-20 Fernando Perez <fperez@colorado.edu>
3087 2003-06-20 Fernando Perez <fperez@colorado.edu>
3083
3088
3084 * IPython/genutils.py (clock): modified to return only user time
3089 * IPython/genutils.py (clock): modified to return only user time
3085 (not counting system time), after a discussion on scipy. While
3090 (not counting system time), after a discussion on scipy. While
3086 system time may be a useful quantity occasionally, it may much
3091 system time may be a useful quantity occasionally, it may much
3087 more easily be skewed by occasional swapping or other similar
3092 more easily be skewed by occasional swapping or other similar
3088 activity.
3093 activity.
3089
3094
3090 2003-06-05 Fernando Perez <fperez@colorado.edu>
3095 2003-06-05 Fernando Perez <fperez@colorado.edu>
3091
3096
3092 * IPython/numutils.py (identity): new function, for building
3097 * IPython/numutils.py (identity): new function, for building
3093 arbitrary rank Kronecker deltas (mostly backwards compatible with
3098 arbitrary rank Kronecker deltas (mostly backwards compatible with
3094 Numeric.identity)
3099 Numeric.identity)
3095
3100
3096 2003-06-03 Fernando Perez <fperez@colorado.edu>
3101 2003-06-03 Fernando Perez <fperez@colorado.edu>
3097
3102
3098 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3103 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3099 arguments passed to magics with spaces, to allow trailing '\' to
3104 arguments passed to magics with spaces, to allow trailing '\' to
3100 work normally (mainly for Windows users).
3105 work normally (mainly for Windows users).
3101
3106
3102 2003-05-29 Fernando Perez <fperez@colorado.edu>
3107 2003-05-29 Fernando Perez <fperez@colorado.edu>
3103
3108
3104 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3109 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3105 instead of pydoc.help. This fixes a bizarre behavior where
3110 instead of pydoc.help. This fixes a bizarre behavior where
3106 printing '%s' % locals() would trigger the help system. Now
3111 printing '%s' % locals() would trigger the help system. Now
3107 ipython behaves like normal python does.
3112 ipython behaves like normal python does.
3108
3113
3109 Note that if one does 'from pydoc import help', the bizarre
3114 Note that if one does 'from pydoc import help', the bizarre
3110 behavior returns, but this will also happen in normal python, so
3115 behavior returns, but this will also happen in normal python, so
3111 it's not an ipython bug anymore (it has to do with how pydoc.help
3116 it's not an ipython bug anymore (it has to do with how pydoc.help
3112 is implemented).
3117 is implemented).
3113
3118
3114 2003-05-22 Fernando Perez <fperez@colorado.edu>
3119 2003-05-22 Fernando Perez <fperez@colorado.edu>
3115
3120
3116 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3121 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3117 return [] instead of None when nothing matches, also match to end
3122 return [] instead of None when nothing matches, also match to end
3118 of line. Patch by Gary Bishop.
3123 of line. Patch by Gary Bishop.
3119
3124
3120 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3125 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3121 protection as before, for files passed on the command line. This
3126 protection as before, for files passed on the command line. This
3122 prevents the CrashHandler from kicking in if user files call into
3127 prevents the CrashHandler from kicking in if user files call into
3123 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3128 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3124 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3129 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3125
3130
3126 2003-05-20 *** Released version 0.4.0
3131 2003-05-20 *** Released version 0.4.0
3127
3132
3128 2003-05-20 Fernando Perez <fperez@colorado.edu>
3133 2003-05-20 Fernando Perez <fperez@colorado.edu>
3129
3134
3130 * setup.py: added support for manpages. It's a bit hackish b/c of
3135 * setup.py: added support for manpages. It's a bit hackish b/c of
3131 a bug in the way the bdist_rpm distutils target handles gzipped
3136 a bug in the way the bdist_rpm distutils target handles gzipped
3132 manpages, but it works. After a patch by Jack.
3137 manpages, but it works. After a patch by Jack.
3133
3138
3134 2003-05-19 Fernando Perez <fperez@colorado.edu>
3139 2003-05-19 Fernando Perez <fperez@colorado.edu>
3135
3140
3136 * IPython/numutils.py: added a mockup of the kinds module, since
3141 * IPython/numutils.py: added a mockup of the kinds module, since
3137 it was recently removed from Numeric. This way, numutils will
3142 it was recently removed from Numeric. This way, numutils will
3138 work for all users even if they are missing kinds.
3143 work for all users even if they are missing kinds.
3139
3144
3140 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3145 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3141 failure, which can occur with SWIG-wrapped extensions. After a
3146 failure, which can occur with SWIG-wrapped extensions. After a
3142 crash report from Prabhu.
3147 crash report from Prabhu.
3143
3148
3144 2003-05-16 Fernando Perez <fperez@colorado.edu>
3149 2003-05-16 Fernando Perez <fperez@colorado.edu>
3145
3150
3146 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3151 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3147 protect ipython from user code which may call directly
3152 protect ipython from user code which may call directly
3148 sys.excepthook (this looks like an ipython crash to the user, even
3153 sys.excepthook (this looks like an ipython crash to the user, even
3149 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3154 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3150 This is especially important to help users of WxWindows, but may
3155 This is especially important to help users of WxWindows, but may
3151 also be useful in other cases.
3156 also be useful in other cases.
3152
3157
3153 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3158 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3154 an optional tb_offset to be specified, and to preserve exception
3159 an optional tb_offset to be specified, and to preserve exception
3155 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3160 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3156
3161
3157 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3162 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3158
3163
3159 2003-05-15 Fernando Perez <fperez@colorado.edu>
3164 2003-05-15 Fernando Perez <fperez@colorado.edu>
3160
3165
3161 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3166 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3162 installing for a new user under Windows.
3167 installing for a new user under Windows.
3163
3168
3164 2003-05-12 Fernando Perez <fperez@colorado.edu>
3169 2003-05-12 Fernando Perez <fperez@colorado.edu>
3165
3170
3166 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3171 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3167 handler for Emacs comint-based lines. Currently it doesn't do
3172 handler for Emacs comint-based lines. Currently it doesn't do
3168 much (but importantly, it doesn't update the history cache). In
3173 much (but importantly, it doesn't update the history cache). In
3169 the future it may be expanded if Alex needs more functionality
3174 the future it may be expanded if Alex needs more functionality
3170 there.
3175 there.
3171
3176
3172 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3177 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3173 info to crash reports.
3178 info to crash reports.
3174
3179
3175 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3180 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3176 just like Python's -c. Also fixed crash with invalid -color
3181 just like Python's -c. Also fixed crash with invalid -color
3177 option value at startup. Thanks to Will French
3182 option value at startup. Thanks to Will French
3178 <wfrench-AT-bestweb.net> for the bug report.
3183 <wfrench-AT-bestweb.net> for the bug report.
3179
3184
3180 2003-05-09 Fernando Perez <fperez@colorado.edu>
3185 2003-05-09 Fernando Perez <fperez@colorado.edu>
3181
3186
3182 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3187 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3183 to EvalDict (it's a mapping, after all) and simplified its code
3188 to EvalDict (it's a mapping, after all) and simplified its code
3184 quite a bit, after a nice discussion on c.l.py where Gustavo
3189 quite a bit, after a nice discussion on c.l.py where Gustavo
3185 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3190 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3186
3191
3187 2003-04-30 Fernando Perez <fperez@colorado.edu>
3192 2003-04-30 Fernando Perez <fperez@colorado.edu>
3188
3193
3189 * IPython/genutils.py (timings_out): modified it to reduce its
3194 * IPython/genutils.py (timings_out): modified it to reduce its
3190 overhead in the common reps==1 case.
3195 overhead in the common reps==1 case.
3191
3196
3192 2003-04-29 Fernando Perez <fperez@colorado.edu>
3197 2003-04-29 Fernando Perez <fperez@colorado.edu>
3193
3198
3194 * IPython/genutils.py (timings_out): Modified to use the resource
3199 * IPython/genutils.py (timings_out): Modified to use the resource
3195 module, which avoids the wraparound problems of time.clock().
3200 module, which avoids the wraparound problems of time.clock().
3196
3201
3197 2003-04-17 *** Released version 0.2.15pre4
3202 2003-04-17 *** Released version 0.2.15pre4
3198
3203
3199 2003-04-17 Fernando Perez <fperez@colorado.edu>
3204 2003-04-17 Fernando Perez <fperez@colorado.edu>
3200
3205
3201 * setup.py (scriptfiles): Split windows-specific stuff over to a
3206 * setup.py (scriptfiles): Split windows-specific stuff over to a
3202 separate file, in an attempt to have a Windows GUI installer.
3207 separate file, in an attempt to have a Windows GUI installer.
3203 That didn't work, but part of the groundwork is done.
3208 That didn't work, but part of the groundwork is done.
3204
3209
3205 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3210 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3206 indent/unindent with 4 spaces. Particularly useful in combination
3211 indent/unindent with 4 spaces. Particularly useful in combination
3207 with the new auto-indent option.
3212 with the new auto-indent option.
3208
3213
3209 2003-04-16 Fernando Perez <fperez@colorado.edu>
3214 2003-04-16 Fernando Perez <fperez@colorado.edu>
3210
3215
3211 * IPython/Magic.py: various replacements of self.rc for
3216 * IPython/Magic.py: various replacements of self.rc for
3212 self.shell.rc. A lot more remains to be done to fully disentangle
3217 self.shell.rc. A lot more remains to be done to fully disentangle
3213 this class from the main Shell class.
3218 this class from the main Shell class.
3214
3219
3215 * IPython/GnuplotRuntime.py: added checks for mouse support so
3220 * IPython/GnuplotRuntime.py: added checks for mouse support so
3216 that we don't try to enable it if the current gnuplot doesn't
3221 that we don't try to enable it if the current gnuplot doesn't
3217 really support it. Also added checks so that we don't try to
3222 really support it. Also added checks so that we don't try to
3218 enable persist under Windows (where Gnuplot doesn't recognize the
3223 enable persist under Windows (where Gnuplot doesn't recognize the
3219 option).
3224 option).
3220
3225
3221 * IPython/iplib.py (InteractiveShell.interact): Added optional
3226 * IPython/iplib.py (InteractiveShell.interact): Added optional
3222 auto-indenting code, after a patch by King C. Shu
3227 auto-indenting code, after a patch by King C. Shu
3223 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3228 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3224 get along well with pasting indented code. If I ever figure out
3229 get along well with pasting indented code. If I ever figure out
3225 how to make that part go well, it will become on by default.
3230 how to make that part go well, it will become on by default.
3226
3231
3227 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3232 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3228 crash ipython if there was an unmatched '%' in the user's prompt
3233 crash ipython if there was an unmatched '%' in the user's prompt
3229 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3234 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3230
3235
3231 * IPython/iplib.py (InteractiveShell.interact): removed the
3236 * IPython/iplib.py (InteractiveShell.interact): removed the
3232 ability to ask the user whether he wants to crash or not at the
3237 ability to ask the user whether he wants to crash or not at the
3233 'last line' exception handler. Calling functions at that point
3238 'last line' exception handler. Calling functions at that point
3234 changes the stack, and the error reports would have incorrect
3239 changes the stack, and the error reports would have incorrect
3235 tracebacks.
3240 tracebacks.
3236
3241
3237 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3242 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3238 pass through a peger a pretty-printed form of any object. After a
3243 pass through a peger a pretty-printed form of any object. After a
3239 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3244 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3240
3245
3241 2003-04-14 Fernando Perez <fperez@colorado.edu>
3246 2003-04-14 Fernando Perez <fperez@colorado.edu>
3242
3247
3243 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3248 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3244 all files in ~ would be modified at first install (instead of
3249 all files in ~ would be modified at first install (instead of
3245 ~/.ipython). This could be potentially disastrous, as the
3250 ~/.ipython). This could be potentially disastrous, as the
3246 modification (make line-endings native) could damage binary files.
3251 modification (make line-endings native) could damage binary files.
3247
3252
3248 2003-04-10 Fernando Perez <fperez@colorado.edu>
3253 2003-04-10 Fernando Perez <fperez@colorado.edu>
3249
3254
3250 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3255 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3251 handle only lines which are invalid python. This now means that
3256 handle only lines which are invalid python. This now means that
3252 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3257 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3253 for the bug report.
3258 for the bug report.
3254
3259
3255 2003-04-01 Fernando Perez <fperez@colorado.edu>
3260 2003-04-01 Fernando Perez <fperez@colorado.edu>
3256
3261
3257 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3262 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3258 where failing to set sys.last_traceback would crash pdb.pm().
3263 where failing to set sys.last_traceback would crash pdb.pm().
3259 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3264 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3260 report.
3265 report.
3261
3266
3262 2003-03-25 Fernando Perez <fperez@colorado.edu>
3267 2003-03-25 Fernando Perez <fperez@colorado.edu>
3263
3268
3264 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3269 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3265 before printing it (it had a lot of spurious blank lines at the
3270 before printing it (it had a lot of spurious blank lines at the
3266 end).
3271 end).
3267
3272
3268 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3273 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3269 output would be sent 21 times! Obviously people don't use this
3274 output would be sent 21 times! Obviously people don't use this
3270 too often, or I would have heard about it.
3275 too often, or I would have heard about it.
3271
3276
3272 2003-03-24 Fernando Perez <fperez@colorado.edu>
3277 2003-03-24 Fernando Perez <fperez@colorado.edu>
3273
3278
3274 * setup.py (scriptfiles): renamed the data_files parameter from
3279 * setup.py (scriptfiles): renamed the data_files parameter from
3275 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3280 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3276 for the patch.
3281 for the patch.
3277
3282
3278 2003-03-20 Fernando Perez <fperez@colorado.edu>
3283 2003-03-20 Fernando Perez <fperez@colorado.edu>
3279
3284
3280 * IPython/genutils.py (error): added error() and fatal()
3285 * IPython/genutils.py (error): added error() and fatal()
3281 functions.
3286 functions.
3282
3287
3283 2003-03-18 *** Released version 0.2.15pre3
3288 2003-03-18 *** Released version 0.2.15pre3
3284
3289
3285 2003-03-18 Fernando Perez <fperez@colorado.edu>
3290 2003-03-18 Fernando Perez <fperez@colorado.edu>
3286
3291
3287 * setupext/install_data_ext.py
3292 * setupext/install_data_ext.py
3288 (install_data_ext.initialize_options): Class contributed by Jack
3293 (install_data_ext.initialize_options): Class contributed by Jack
3289 Moffit for fixing the old distutils hack. He is sending this to
3294 Moffit for fixing the old distutils hack. He is sending this to
3290 the distutils folks so in the future we may not need it as a
3295 the distutils folks so in the future we may not need it as a
3291 private fix.
3296 private fix.
3292
3297
3293 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3298 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3294 changes for Debian packaging. See his patch for full details.
3299 changes for Debian packaging. See his patch for full details.
3295 The old distutils hack of making the ipythonrc* files carry a
3300 The old distutils hack of making the ipythonrc* files carry a
3296 bogus .py extension is gone, at last. Examples were moved to a
3301 bogus .py extension is gone, at last. Examples were moved to a
3297 separate subdir under doc/, and the separate executable scripts
3302 separate subdir under doc/, and the separate executable scripts
3298 now live in their own directory. Overall a great cleanup. The
3303 now live in their own directory. Overall a great cleanup. The
3299 manual was updated to use the new files, and setup.py has been
3304 manual was updated to use the new files, and setup.py has been
3300 fixed for this setup.
3305 fixed for this setup.
3301
3306
3302 * IPython/PyColorize.py (Parser.usage): made non-executable and
3307 * IPython/PyColorize.py (Parser.usage): made non-executable and
3303 created a pycolor wrapper around it to be included as a script.
3308 created a pycolor wrapper around it to be included as a script.
3304
3309
3305 2003-03-12 *** Released version 0.2.15pre2
3310 2003-03-12 *** Released version 0.2.15pre2
3306
3311
3307 2003-03-12 Fernando Perez <fperez@colorado.edu>
3312 2003-03-12 Fernando Perez <fperez@colorado.edu>
3308
3313
3309 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3314 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3310 long-standing problem with garbage characters in some terminals.
3315 long-standing problem with garbage characters in some terminals.
3311 The issue was really that the \001 and \002 escapes must _only_ be
3316 The issue was really that the \001 and \002 escapes must _only_ be
3312 passed to input prompts (which call readline), but _never_ to
3317 passed to input prompts (which call readline), but _never_ to
3313 normal text to be printed on screen. I changed ColorANSI to have
3318 normal text to be printed on screen. I changed ColorANSI to have
3314 two classes: TermColors and InputTermColors, each with the
3319 two classes: TermColors and InputTermColors, each with the
3315 appropriate escapes for input prompts or normal text. The code in
3320 appropriate escapes for input prompts or normal text. The code in
3316 Prompts.py got slightly more complicated, but this very old and
3321 Prompts.py got slightly more complicated, but this very old and
3317 annoying bug is finally fixed.
3322 annoying bug is finally fixed.
3318
3323
3319 All the credit for nailing down the real origin of this problem
3324 All the credit for nailing down the real origin of this problem
3320 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3325 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3321 *Many* thanks to him for spending quite a bit of effort on this.
3326 *Many* thanks to him for spending quite a bit of effort on this.
3322
3327
3323 2003-03-05 *** Released version 0.2.15pre1
3328 2003-03-05 *** Released version 0.2.15pre1
3324
3329
3325 2003-03-03 Fernando Perez <fperez@colorado.edu>
3330 2003-03-03 Fernando Perez <fperez@colorado.edu>
3326
3331
3327 * IPython/FakeModule.py: Moved the former _FakeModule to a
3332 * IPython/FakeModule.py: Moved the former _FakeModule to a
3328 separate file, because it's also needed by Magic (to fix a similar
3333 separate file, because it's also needed by Magic (to fix a similar
3329 pickle-related issue in @run).
3334 pickle-related issue in @run).
3330
3335
3331 2003-03-02 Fernando Perez <fperez@colorado.edu>
3336 2003-03-02 Fernando Perez <fperez@colorado.edu>
3332
3337
3333 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3338 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3334 the autocall option at runtime.
3339 the autocall option at runtime.
3335 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3340 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3336 across Magic.py to start separating Magic from InteractiveShell.
3341 across Magic.py to start separating Magic from InteractiveShell.
3337 (Magic._ofind): Fixed to return proper namespace for dotted
3342 (Magic._ofind): Fixed to return proper namespace for dotted
3338 names. Before, a dotted name would always return 'not currently
3343 names. Before, a dotted name would always return 'not currently
3339 defined', because it would find the 'parent'. s.x would be found,
3344 defined', because it would find the 'parent'. s.x would be found,
3340 but since 'x' isn't defined by itself, it would get confused.
3345 but since 'x' isn't defined by itself, it would get confused.
3341 (Magic.magic_run): Fixed pickling problems reported by Ralf
3346 (Magic.magic_run): Fixed pickling problems reported by Ralf
3342 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3347 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3343 that I'd used when Mike Heeter reported similar issues at the
3348 that I'd used when Mike Heeter reported similar issues at the
3344 top-level, but now for @run. It boils down to injecting the
3349 top-level, but now for @run. It boils down to injecting the
3345 namespace where code is being executed with something that looks
3350 namespace where code is being executed with something that looks
3346 enough like a module to fool pickle.dump(). Since a pickle stores
3351 enough like a module to fool pickle.dump(). Since a pickle stores
3347 a named reference to the importing module, we need this for
3352 a named reference to the importing module, we need this for
3348 pickles to save something sensible.
3353 pickles to save something sensible.
3349
3354
3350 * IPython/ipmaker.py (make_IPython): added an autocall option.
3355 * IPython/ipmaker.py (make_IPython): added an autocall option.
3351
3356
3352 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3357 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3353 the auto-eval code. Now autocalling is an option, and the code is
3358 the auto-eval code. Now autocalling is an option, and the code is
3354 also vastly safer. There is no more eval() involved at all.
3359 also vastly safer. There is no more eval() involved at all.
3355
3360
3356 2003-03-01 Fernando Perez <fperez@colorado.edu>
3361 2003-03-01 Fernando Perez <fperez@colorado.edu>
3357
3362
3358 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3363 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3359 dict with named keys instead of a tuple.
3364 dict with named keys instead of a tuple.
3360
3365
3361 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3366 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3362
3367
3363 * setup.py (make_shortcut): Fixed message about directories
3368 * setup.py (make_shortcut): Fixed message about directories
3364 created during Windows installation (the directories were ok, just
3369 created during Windows installation (the directories were ok, just
3365 the printed message was misleading). Thanks to Chris Liechti
3370 the printed message was misleading). Thanks to Chris Liechti
3366 <cliechti-AT-gmx.net> for the heads up.
3371 <cliechti-AT-gmx.net> for the heads up.
3367
3372
3368 2003-02-21 Fernando Perez <fperez@colorado.edu>
3373 2003-02-21 Fernando Perez <fperez@colorado.edu>
3369
3374
3370 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3375 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3371 of ValueError exception when checking for auto-execution. This
3376 of ValueError exception when checking for auto-execution. This
3372 one is raised by things like Numeric arrays arr.flat when the
3377 one is raised by things like Numeric arrays arr.flat when the
3373 array is non-contiguous.
3378 array is non-contiguous.
3374
3379
3375 2003-01-31 Fernando Perez <fperez@colorado.edu>
3380 2003-01-31 Fernando Perez <fperez@colorado.edu>
3376
3381
3377 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3382 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3378 not return any value at all (even though the command would get
3383 not return any value at all (even though the command would get
3379 executed).
3384 executed).
3380 (xsys): Flush stdout right after printing the command to ensure
3385 (xsys): Flush stdout right after printing the command to ensure
3381 proper ordering of commands and command output in the total
3386 proper ordering of commands and command output in the total
3382 output.
3387 output.
3383 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3388 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3384 system/getoutput as defaults. The old ones are kept for
3389 system/getoutput as defaults. The old ones are kept for
3385 compatibility reasons, so no code which uses this library needs
3390 compatibility reasons, so no code which uses this library needs
3386 changing.
3391 changing.
3387
3392
3388 2003-01-27 *** Released version 0.2.14
3393 2003-01-27 *** Released version 0.2.14
3389
3394
3390 2003-01-25 Fernando Perez <fperez@colorado.edu>
3395 2003-01-25 Fernando Perez <fperez@colorado.edu>
3391
3396
3392 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3397 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3393 functions defined in previous edit sessions could not be re-edited
3398 functions defined in previous edit sessions could not be re-edited
3394 (because the temp files were immediately removed). Now temp files
3399 (because the temp files were immediately removed). Now temp files
3395 are removed only at IPython's exit.
3400 are removed only at IPython's exit.
3396 (Magic.magic_run): Improved @run to perform shell-like expansions
3401 (Magic.magic_run): Improved @run to perform shell-like expansions
3397 on its arguments (~users and $VARS). With this, @run becomes more
3402 on its arguments (~users and $VARS). With this, @run becomes more
3398 like a normal command-line.
3403 like a normal command-line.
3399
3404
3400 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3405 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3401 bugs related to embedding and cleaned up that code. A fairly
3406 bugs related to embedding and cleaned up that code. A fairly
3402 important one was the impossibility to access the global namespace
3407 important one was the impossibility to access the global namespace
3403 through the embedded IPython (only local variables were visible).
3408 through the embedded IPython (only local variables were visible).
3404
3409
3405 2003-01-14 Fernando Perez <fperez@colorado.edu>
3410 2003-01-14 Fernando Perez <fperez@colorado.edu>
3406
3411
3407 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3412 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3408 auto-calling to be a bit more conservative. Now it doesn't get
3413 auto-calling to be a bit more conservative. Now it doesn't get
3409 triggered if any of '!=()<>' are in the rest of the input line, to
3414 triggered if any of '!=()<>' are in the rest of the input line, to
3410 allow comparing callables. Thanks to Alex for the heads up.
3415 allow comparing callables. Thanks to Alex for the heads up.
3411
3416
3412 2003-01-07 Fernando Perez <fperez@colorado.edu>
3417 2003-01-07 Fernando Perez <fperez@colorado.edu>
3413
3418
3414 * IPython/genutils.py (page): fixed estimation of the number of
3419 * IPython/genutils.py (page): fixed estimation of the number of
3415 lines in a string to be paged to simply count newlines. This
3420 lines in a string to be paged to simply count newlines. This
3416 prevents over-guessing due to embedded escape sequences. A better
3421 prevents over-guessing due to embedded escape sequences. A better
3417 long-term solution would involve stripping out the control chars
3422 long-term solution would involve stripping out the control chars
3418 for the count, but it's potentially so expensive I just don't
3423 for the count, but it's potentially so expensive I just don't
3419 think it's worth doing.
3424 think it's worth doing.
3420
3425
3421 2002-12-19 *** Released version 0.2.14pre50
3426 2002-12-19 *** Released version 0.2.14pre50
3422
3427
3423 2002-12-19 Fernando Perez <fperez@colorado.edu>
3428 2002-12-19 Fernando Perez <fperez@colorado.edu>
3424
3429
3425 * tools/release (version): Changed release scripts to inform
3430 * tools/release (version): Changed release scripts to inform
3426 Andrea and build a NEWS file with a list of recent changes.
3431 Andrea and build a NEWS file with a list of recent changes.
3427
3432
3428 * IPython/ColorANSI.py (__all__): changed terminal detection
3433 * IPython/ColorANSI.py (__all__): changed terminal detection
3429 code. Seems to work better for xterms without breaking
3434 code. Seems to work better for xterms without breaking
3430 konsole. Will need more testing to determine if WinXP and Mac OSX
3435 konsole. Will need more testing to determine if WinXP and Mac OSX
3431 also work ok.
3436 also work ok.
3432
3437
3433 2002-12-18 *** Released version 0.2.14pre49
3438 2002-12-18 *** Released version 0.2.14pre49
3434
3439
3435 2002-12-18 Fernando Perez <fperez@colorado.edu>
3440 2002-12-18 Fernando Perez <fperez@colorado.edu>
3436
3441
3437 * Docs: added new info about Mac OSX, from Andrea.
3442 * Docs: added new info about Mac OSX, from Andrea.
3438
3443
3439 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3444 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3440 allow direct plotting of python strings whose format is the same
3445 allow direct plotting of python strings whose format is the same
3441 of gnuplot data files.
3446 of gnuplot data files.
3442
3447
3443 2002-12-16 Fernando Perez <fperez@colorado.edu>
3448 2002-12-16 Fernando Perez <fperez@colorado.edu>
3444
3449
3445 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3450 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3446 value of exit question to be acknowledged.
3451 value of exit question to be acknowledged.
3447
3452
3448 2002-12-03 Fernando Perez <fperez@colorado.edu>
3453 2002-12-03 Fernando Perez <fperez@colorado.edu>
3449
3454
3450 * IPython/ipmaker.py: removed generators, which had been added
3455 * IPython/ipmaker.py: removed generators, which had been added
3451 by mistake in an earlier debugging run. This was causing trouble
3456 by mistake in an earlier debugging run. This was causing trouble
3452 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3457 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3453 for pointing this out.
3458 for pointing this out.
3454
3459
3455 2002-11-17 Fernando Perez <fperez@colorado.edu>
3460 2002-11-17 Fernando Perez <fperez@colorado.edu>
3456
3461
3457 * Manual: updated the Gnuplot section.
3462 * Manual: updated the Gnuplot section.
3458
3463
3459 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3464 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3460 a much better split of what goes in Runtime and what goes in
3465 a much better split of what goes in Runtime and what goes in
3461 Interactive.
3466 Interactive.
3462
3467
3463 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3468 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3464 being imported from iplib.
3469 being imported from iplib.
3465
3470
3466 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3471 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3467 for command-passing. Now the global Gnuplot instance is called
3472 for command-passing. Now the global Gnuplot instance is called
3468 'gp' instead of 'g', which was really a far too fragile and
3473 'gp' instead of 'g', which was really a far too fragile and
3469 common name.
3474 common name.
3470
3475
3471 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3476 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3472 bounding boxes generated by Gnuplot for square plots.
3477 bounding boxes generated by Gnuplot for square plots.
3473
3478
3474 * IPython/genutils.py (popkey): new function added. I should
3479 * IPython/genutils.py (popkey): new function added. I should
3475 suggest this on c.l.py as a dict method, it seems useful.
3480 suggest this on c.l.py as a dict method, it seems useful.
3476
3481
3477 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3482 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3478 to transparently handle PostScript generation. MUCH better than
3483 to transparently handle PostScript generation. MUCH better than
3479 the previous plot_eps/replot_eps (which I removed now). The code
3484 the previous plot_eps/replot_eps (which I removed now). The code
3480 is also fairly clean and well documented now (including
3485 is also fairly clean and well documented now (including
3481 docstrings).
3486 docstrings).
3482
3487
3483 2002-11-13 Fernando Perez <fperez@colorado.edu>
3488 2002-11-13 Fernando Perez <fperez@colorado.edu>
3484
3489
3485 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3490 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3486 (inconsistent with options).
3491 (inconsistent with options).
3487
3492
3488 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3493 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3489 manually disabled, I don't know why. Fixed it.
3494 manually disabled, I don't know why. Fixed it.
3490 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3495 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3491 eps output.
3496 eps output.
3492
3497
3493 2002-11-12 Fernando Perez <fperez@colorado.edu>
3498 2002-11-12 Fernando Perez <fperez@colorado.edu>
3494
3499
3495 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3500 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3496 don't propagate up to caller. Fixes crash reported by François
3501 don't propagate up to caller. Fixes crash reported by François
3497 Pinard.
3502 Pinard.
3498
3503
3499 2002-11-09 Fernando Perez <fperez@colorado.edu>
3504 2002-11-09 Fernando Perez <fperez@colorado.edu>
3500
3505
3501 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3506 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3502 history file for new users.
3507 history file for new users.
3503 (make_IPython): fixed bug where initial install would leave the
3508 (make_IPython): fixed bug where initial install would leave the
3504 user running in the .ipython dir.
3509 user running in the .ipython dir.
3505 (make_IPython): fixed bug where config dir .ipython would be
3510 (make_IPython): fixed bug where config dir .ipython would be
3506 created regardless of the given -ipythondir option. Thanks to Cory
3511 created regardless of the given -ipythondir option. Thanks to Cory
3507 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3512 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3508
3513
3509 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3514 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3510 type confirmations. Will need to use it in all of IPython's code
3515 type confirmations. Will need to use it in all of IPython's code
3511 consistently.
3516 consistently.
3512
3517
3513 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3518 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3514 context to print 31 lines instead of the default 5. This will make
3519 context to print 31 lines instead of the default 5. This will make
3515 the crash reports extremely detailed in case the problem is in
3520 the crash reports extremely detailed in case the problem is in
3516 libraries I don't have access to.
3521 libraries I don't have access to.
3517
3522
3518 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3523 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3519 line of defense' code to still crash, but giving users fair
3524 line of defense' code to still crash, but giving users fair
3520 warning. I don't want internal errors to go unreported: if there's
3525 warning. I don't want internal errors to go unreported: if there's
3521 an internal problem, IPython should crash and generate a full
3526 an internal problem, IPython should crash and generate a full
3522 report.
3527 report.
3523
3528
3524 2002-11-08 Fernando Perez <fperez@colorado.edu>
3529 2002-11-08 Fernando Perez <fperez@colorado.edu>
3525
3530
3526 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3531 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3527 otherwise uncaught exceptions which can appear if people set
3532 otherwise uncaught exceptions which can appear if people set
3528 sys.stdout to something badly broken. Thanks to a crash report
3533 sys.stdout to something badly broken. Thanks to a crash report
3529 from henni-AT-mail.brainbot.com.
3534 from henni-AT-mail.brainbot.com.
3530
3535
3531 2002-11-04 Fernando Perez <fperez@colorado.edu>
3536 2002-11-04 Fernando Perez <fperez@colorado.edu>
3532
3537
3533 * IPython/iplib.py (InteractiveShell.interact): added
3538 * IPython/iplib.py (InteractiveShell.interact): added
3534 __IPYTHON__active to the builtins. It's a flag which goes on when
3539 __IPYTHON__active to the builtins. It's a flag which goes on when
3535 the interaction starts and goes off again when it stops. This
3540 the interaction starts and goes off again when it stops. This
3536 allows embedding code to detect being inside IPython. Before this
3541 allows embedding code to detect being inside IPython. Before this
3537 was done via __IPYTHON__, but that only shows that an IPython
3542 was done via __IPYTHON__, but that only shows that an IPython
3538 instance has been created.
3543 instance has been created.
3539
3544
3540 * IPython/Magic.py (Magic.magic_env): I realized that in a
3545 * IPython/Magic.py (Magic.magic_env): I realized that in a
3541 UserDict, instance.data holds the data as a normal dict. So I
3546 UserDict, instance.data holds the data as a normal dict. So I
3542 modified @env to return os.environ.data instead of rebuilding a
3547 modified @env to return os.environ.data instead of rebuilding a
3543 dict by hand.
3548 dict by hand.
3544
3549
3545 2002-11-02 Fernando Perez <fperez@colorado.edu>
3550 2002-11-02 Fernando Perez <fperez@colorado.edu>
3546
3551
3547 * IPython/genutils.py (warn): changed so that level 1 prints no
3552 * IPython/genutils.py (warn): changed so that level 1 prints no
3548 header. Level 2 is now the default (with 'WARNING' header, as
3553 header. Level 2 is now the default (with 'WARNING' header, as
3549 before). I think I tracked all places where changes were needed in
3554 before). I think I tracked all places where changes were needed in
3550 IPython, but outside code using the old level numbering may have
3555 IPython, but outside code using the old level numbering may have
3551 broken.
3556 broken.
3552
3557
3553 * IPython/iplib.py (InteractiveShell.runcode): added this to
3558 * IPython/iplib.py (InteractiveShell.runcode): added this to
3554 handle the tracebacks in SystemExit traps correctly. The previous
3559 handle the tracebacks in SystemExit traps correctly. The previous
3555 code (through interact) was printing more of the stack than
3560 code (through interact) was printing more of the stack than
3556 necessary, showing IPython internal code to the user.
3561 necessary, showing IPython internal code to the user.
3557
3562
3558 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3563 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3559 default. Now that the default at the confirmation prompt is yes,
3564 default. Now that the default at the confirmation prompt is yes,
3560 it's not so intrusive. François' argument that ipython sessions
3565 it's not so intrusive. François' argument that ipython sessions
3561 tend to be complex enough not to lose them from an accidental C-d,
3566 tend to be complex enough not to lose them from an accidental C-d,
3562 is a valid one.
3567 is a valid one.
3563
3568
3564 * IPython/iplib.py (InteractiveShell.interact): added a
3569 * IPython/iplib.py (InteractiveShell.interact): added a
3565 showtraceback() call to the SystemExit trap, and modified the exit
3570 showtraceback() call to the SystemExit trap, and modified the exit
3566 confirmation to have yes as the default.
3571 confirmation to have yes as the default.
3567
3572
3568 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3573 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3569 this file. It's been gone from the code for a long time, this was
3574 this file. It's been gone from the code for a long time, this was
3570 simply leftover junk.
3575 simply leftover junk.
3571
3576
3572 2002-11-01 Fernando Perez <fperez@colorado.edu>
3577 2002-11-01 Fernando Perez <fperez@colorado.edu>
3573
3578
3574 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3579 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3575 added. If set, IPython now traps EOF and asks for
3580 added. If set, IPython now traps EOF and asks for
3576 confirmation. After a request by François Pinard.
3581 confirmation. After a request by François Pinard.
3577
3582
3578 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3583 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3579 of @abort, and with a new (better) mechanism for handling the
3584 of @abort, and with a new (better) mechanism for handling the
3580 exceptions.
3585 exceptions.
3581
3586
3582 2002-10-27 Fernando Perez <fperez@colorado.edu>
3587 2002-10-27 Fernando Perez <fperez@colorado.edu>
3583
3588
3584 * IPython/usage.py (__doc__): updated the --help information and
3589 * IPython/usage.py (__doc__): updated the --help information and
3585 the ipythonrc file to indicate that -log generates
3590 the ipythonrc file to indicate that -log generates
3586 ./ipython.log. Also fixed the corresponding info in @logstart.
3591 ./ipython.log. Also fixed the corresponding info in @logstart.
3587 This and several other fixes in the manuals thanks to reports by
3592 This and several other fixes in the manuals thanks to reports by
3588 François Pinard <pinard-AT-iro.umontreal.ca>.
3593 François Pinard <pinard-AT-iro.umontreal.ca>.
3589
3594
3590 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3595 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3591 refer to @logstart (instead of @log, which doesn't exist).
3596 refer to @logstart (instead of @log, which doesn't exist).
3592
3597
3593 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3598 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3594 AttributeError crash. Thanks to Christopher Armstrong
3599 AttributeError crash. Thanks to Christopher Armstrong
3595 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3600 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3596 introduced recently (in 0.2.14pre37) with the fix to the eval
3601 introduced recently (in 0.2.14pre37) with the fix to the eval
3597 problem mentioned below.
3602 problem mentioned below.
3598
3603
3599 2002-10-17 Fernando Perez <fperez@colorado.edu>
3604 2002-10-17 Fernando Perez <fperez@colorado.edu>
3600
3605
3601 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3606 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3602 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3607 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3603
3608
3604 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3609 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3605 this function to fix a problem reported by Alex Schmolck. He saw
3610 this function to fix a problem reported by Alex Schmolck. He saw
3606 it with list comprehensions and generators, which were getting
3611 it with list comprehensions and generators, which were getting
3607 called twice. The real problem was an 'eval' call in testing for
3612 called twice. The real problem was an 'eval' call in testing for
3608 automagic which was evaluating the input line silently.
3613 automagic which was evaluating the input line silently.
3609
3614
3610 This is a potentially very nasty bug, if the input has side
3615 This is a potentially very nasty bug, if the input has side
3611 effects which must not be repeated. The code is much cleaner now,
3616 effects which must not be repeated. The code is much cleaner now,
3612 without any blanket 'except' left and with a regexp test for
3617 without any blanket 'except' left and with a regexp test for
3613 actual function names.
3618 actual function names.
3614
3619
3615 But an eval remains, which I'm not fully comfortable with. I just
3620 But an eval remains, which I'm not fully comfortable with. I just
3616 don't know how to find out if an expression could be a callable in
3621 don't know how to find out if an expression could be a callable in
3617 the user's namespace without doing an eval on the string. However
3622 the user's namespace without doing an eval on the string. However
3618 that string is now much more strictly checked so that no code
3623 that string is now much more strictly checked so that no code
3619 slips by, so the eval should only happen for things that can
3624 slips by, so the eval should only happen for things that can
3620 really be only function/method names.
3625 really be only function/method names.
3621
3626
3622 2002-10-15 Fernando Perez <fperez@colorado.edu>
3627 2002-10-15 Fernando Perez <fperez@colorado.edu>
3623
3628
3624 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3629 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3625 OSX information to main manual, removed README_Mac_OSX file from
3630 OSX information to main manual, removed README_Mac_OSX file from
3626 distribution. Also updated credits for recent additions.
3631 distribution. Also updated credits for recent additions.
3627
3632
3628 2002-10-10 Fernando Perez <fperez@colorado.edu>
3633 2002-10-10 Fernando Perez <fperez@colorado.edu>
3629
3634
3630 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3635 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3631 terminal-related issues. Many thanks to Andrea Riciputi
3636 terminal-related issues. Many thanks to Andrea Riciputi
3632 <andrea.riciputi-AT-libero.it> for writing it.
3637 <andrea.riciputi-AT-libero.it> for writing it.
3633
3638
3634 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3639 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3635 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3640 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3636
3641
3637 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3642 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3638 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3643 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3639 <syver-en-AT-online.no> who both submitted patches for this problem.
3644 <syver-en-AT-online.no> who both submitted patches for this problem.
3640
3645
3641 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3646 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3642 global embedding to make sure that things don't overwrite user
3647 global embedding to make sure that things don't overwrite user
3643 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3648 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3644
3649
3645 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3650 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3646 compatibility. Thanks to Hayden Callow
3651 compatibility. Thanks to Hayden Callow
3647 <h.callow-AT-elec.canterbury.ac.nz>
3652 <h.callow-AT-elec.canterbury.ac.nz>
3648
3653
3649 2002-10-04 Fernando Perez <fperez@colorado.edu>
3654 2002-10-04 Fernando Perez <fperez@colorado.edu>
3650
3655
3651 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3656 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3652 Gnuplot.File objects.
3657 Gnuplot.File objects.
3653
3658
3654 2002-07-23 Fernando Perez <fperez@colorado.edu>
3659 2002-07-23 Fernando Perez <fperez@colorado.edu>
3655
3660
3656 * IPython/genutils.py (timing): Added timings() and timing() for
3661 * IPython/genutils.py (timing): Added timings() and timing() for
3657 quick access to the most commonly needed data, the execution
3662 quick access to the most commonly needed data, the execution
3658 times. Old timing() renamed to timings_out().
3663 times. Old timing() renamed to timings_out().
3659
3664
3660 2002-07-18 Fernando Perez <fperez@colorado.edu>
3665 2002-07-18 Fernando Perez <fperez@colorado.edu>
3661
3666
3662 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3667 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3663 bug with nested instances disrupting the parent's tab completion.
3668 bug with nested instances disrupting the parent's tab completion.
3664
3669
3665 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3670 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3666 all_completions code to begin the emacs integration.
3671 all_completions code to begin the emacs integration.
3667
3672
3668 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3673 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3669 argument to allow titling individual arrays when plotting.
3674 argument to allow titling individual arrays when plotting.
3670
3675
3671 2002-07-15 Fernando Perez <fperez@colorado.edu>
3676 2002-07-15 Fernando Perez <fperez@colorado.edu>
3672
3677
3673 * setup.py (make_shortcut): changed to retrieve the value of
3678 * setup.py (make_shortcut): changed to retrieve the value of
3674 'Program Files' directory from the registry (this value changes in
3679 'Program Files' directory from the registry (this value changes in
3675 non-english versions of Windows). Thanks to Thomas Fanslau
3680 non-english versions of Windows). Thanks to Thomas Fanslau
3676 <tfanslau-AT-gmx.de> for the report.
3681 <tfanslau-AT-gmx.de> for the report.
3677
3682
3678 2002-07-10 Fernando Perez <fperez@colorado.edu>
3683 2002-07-10 Fernando Perez <fperez@colorado.edu>
3679
3684
3680 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3685 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3681 a bug in pdb, which crashes if a line with only whitespace is
3686 a bug in pdb, which crashes if a line with only whitespace is
3682 entered. Bug report submitted to sourceforge.
3687 entered. Bug report submitted to sourceforge.
3683
3688
3684 2002-07-09 Fernando Perez <fperez@colorado.edu>
3689 2002-07-09 Fernando Perez <fperez@colorado.edu>
3685
3690
3686 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3691 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3687 reporting exceptions (it's a bug in inspect.py, I just set a
3692 reporting exceptions (it's a bug in inspect.py, I just set a
3688 workaround).
3693 workaround).
3689
3694
3690 2002-07-08 Fernando Perez <fperez@colorado.edu>
3695 2002-07-08 Fernando Perez <fperez@colorado.edu>
3691
3696
3692 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3697 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3693 __IPYTHON__ in __builtins__ to show up in user_ns.
3698 __IPYTHON__ in __builtins__ to show up in user_ns.
3694
3699
3695 2002-07-03 Fernando Perez <fperez@colorado.edu>
3700 2002-07-03 Fernando Perez <fperez@colorado.edu>
3696
3701
3697 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3702 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3698 name from @gp_set_instance to @gp_set_default.
3703 name from @gp_set_instance to @gp_set_default.
3699
3704
3700 * IPython/ipmaker.py (make_IPython): default editor value set to
3705 * IPython/ipmaker.py (make_IPython): default editor value set to
3701 '0' (a string), to match the rc file. Otherwise will crash when
3706 '0' (a string), to match the rc file. Otherwise will crash when
3702 .strip() is called on it.
3707 .strip() is called on it.
3703
3708
3704
3709
3705 2002-06-28 Fernando Perez <fperez@colorado.edu>
3710 2002-06-28 Fernando Perez <fperez@colorado.edu>
3706
3711
3707 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3712 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3708 of files in current directory when a file is executed via
3713 of files in current directory when a file is executed via
3709 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3714 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3710
3715
3711 * setup.py (manfiles): fix for rpm builds, submitted by RA
3716 * setup.py (manfiles): fix for rpm builds, submitted by RA
3712 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3717 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3713
3718
3714 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3719 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3715 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3720 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3716 string!). A. Schmolck caught this one.
3721 string!). A. Schmolck caught this one.
3717
3722
3718 2002-06-27 Fernando Perez <fperez@colorado.edu>
3723 2002-06-27 Fernando Perez <fperez@colorado.edu>
3719
3724
3720 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3725 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3721 defined files at the cmd line. __name__ wasn't being set to
3726 defined files at the cmd line. __name__ wasn't being set to
3722 __main__.
3727 __main__.
3723
3728
3724 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3729 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3725 regular lists and tuples besides Numeric arrays.
3730 regular lists and tuples besides Numeric arrays.
3726
3731
3727 * IPython/Prompts.py (CachedOutput.__call__): Added output
3732 * IPython/Prompts.py (CachedOutput.__call__): Added output
3728 supression for input ending with ';'. Similar to Mathematica and
3733 supression for input ending with ';'. Similar to Mathematica and
3729 Matlab. The _* vars and Out[] list are still updated, just like
3734 Matlab. The _* vars and Out[] list are still updated, just like
3730 Mathematica behaves.
3735 Mathematica behaves.
3731
3736
3732 2002-06-25 Fernando Perez <fperez@colorado.edu>
3737 2002-06-25 Fernando Perez <fperez@colorado.edu>
3733
3738
3734 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3739 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3735 .ini extensions for profiels under Windows.
3740 .ini extensions for profiels under Windows.
3736
3741
3737 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3742 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3738 string form. Fix contributed by Alexander Schmolck
3743 string form. Fix contributed by Alexander Schmolck
3739 <a.schmolck-AT-gmx.net>
3744 <a.schmolck-AT-gmx.net>
3740
3745
3741 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3746 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3742 pre-configured Gnuplot instance.
3747 pre-configured Gnuplot instance.
3743
3748
3744 2002-06-21 Fernando Perez <fperez@colorado.edu>
3749 2002-06-21 Fernando Perez <fperez@colorado.edu>
3745
3750
3746 * IPython/numutils.py (exp_safe): new function, works around the
3751 * IPython/numutils.py (exp_safe): new function, works around the
3747 underflow problems in Numeric.
3752 underflow problems in Numeric.
3748 (log2): New fn. Safe log in base 2: returns exact integer answer
3753 (log2): New fn. Safe log in base 2: returns exact integer answer
3749 for exact integer powers of 2.
3754 for exact integer powers of 2.
3750
3755
3751 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3756 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3752 properly.
3757 properly.
3753
3758
3754 2002-06-20 Fernando Perez <fperez@colorado.edu>
3759 2002-06-20 Fernando Perez <fperez@colorado.edu>
3755
3760
3756 * IPython/genutils.py (timing): new function like
3761 * IPython/genutils.py (timing): new function like
3757 Mathematica's. Similar to time_test, but returns more info.
3762 Mathematica's. Similar to time_test, but returns more info.
3758
3763
3759 2002-06-18 Fernando Perez <fperez@colorado.edu>
3764 2002-06-18 Fernando Perez <fperez@colorado.edu>
3760
3765
3761 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3766 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3762 according to Mike Heeter's suggestions.
3767 according to Mike Heeter's suggestions.
3763
3768
3764 2002-06-16 Fernando Perez <fperez@colorado.edu>
3769 2002-06-16 Fernando Perez <fperez@colorado.edu>
3765
3770
3766 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3771 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3767 system. GnuplotMagic is gone as a user-directory option. New files
3772 system. GnuplotMagic is gone as a user-directory option. New files
3768 make it easier to use all the gnuplot stuff both from external
3773 make it easier to use all the gnuplot stuff both from external
3769 programs as well as from IPython. Had to rewrite part of
3774 programs as well as from IPython. Had to rewrite part of
3770 hardcopy() b/c of a strange bug: often the ps files simply don't
3775 hardcopy() b/c of a strange bug: often the ps files simply don't
3771 get created, and require a repeat of the command (often several
3776 get created, and require a repeat of the command (often several
3772 times).
3777 times).
3773
3778
3774 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3779 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3775 resolve output channel at call time, so that if sys.stderr has
3780 resolve output channel at call time, so that if sys.stderr has
3776 been redirected by user this gets honored.
3781 been redirected by user this gets honored.
3777
3782
3778 2002-06-13 Fernando Perez <fperez@colorado.edu>
3783 2002-06-13 Fernando Perez <fperez@colorado.edu>
3779
3784
3780 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3785 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3781 IPShell. Kept a copy with the old names to avoid breaking people's
3786 IPShell. Kept a copy with the old names to avoid breaking people's
3782 embedded code.
3787 embedded code.
3783
3788
3784 * IPython/ipython: simplified it to the bare minimum after
3789 * IPython/ipython: simplified it to the bare minimum after
3785 Holger's suggestions. Added info about how to use it in
3790 Holger's suggestions. Added info about how to use it in
3786 PYTHONSTARTUP.
3791 PYTHONSTARTUP.
3787
3792
3788 * IPython/Shell.py (IPythonShell): changed the options passing
3793 * IPython/Shell.py (IPythonShell): changed the options passing
3789 from a string with funky %s replacements to a straight list. Maybe
3794 from a string with funky %s replacements to a straight list. Maybe
3790 a bit more typing, but it follows sys.argv conventions, so there's
3795 a bit more typing, but it follows sys.argv conventions, so there's
3791 less special-casing to remember.
3796 less special-casing to remember.
3792
3797
3793 2002-06-12 Fernando Perez <fperez@colorado.edu>
3798 2002-06-12 Fernando Perez <fperez@colorado.edu>
3794
3799
3795 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3800 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3796 command. Thanks to a suggestion by Mike Heeter.
3801 command. Thanks to a suggestion by Mike Heeter.
3797 (Magic.magic_pfile): added behavior to look at filenames if given
3802 (Magic.magic_pfile): added behavior to look at filenames if given
3798 arg is not a defined object.
3803 arg is not a defined object.
3799 (Magic.magic_save): New @save function to save code snippets. Also
3804 (Magic.magic_save): New @save function to save code snippets. Also
3800 a Mike Heeter idea.
3805 a Mike Heeter idea.
3801
3806
3802 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3807 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3803 plot() and replot(). Much more convenient now, especially for
3808 plot() and replot(). Much more convenient now, especially for
3804 interactive use.
3809 interactive use.
3805
3810
3806 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3811 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
3807 filenames.
3812 filenames.
3808
3813
3809 2002-06-02 Fernando Perez <fperez@colorado.edu>
3814 2002-06-02 Fernando Perez <fperez@colorado.edu>
3810
3815
3811 * IPython/Struct.py (Struct.__init__): modified to admit
3816 * IPython/Struct.py (Struct.__init__): modified to admit
3812 initialization via another struct.
3817 initialization via another struct.
3813
3818
3814 * IPython/genutils.py (SystemExec.__init__): New stateful
3819 * IPython/genutils.py (SystemExec.__init__): New stateful
3815 interface to xsys and bq. Useful for writing system scripts.
3820 interface to xsys and bq. Useful for writing system scripts.
3816
3821
3817 2002-05-30 Fernando Perez <fperez@colorado.edu>
3822 2002-05-30 Fernando Perez <fperez@colorado.edu>
3818
3823
3819 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3824 * MANIFEST.in: Changed docfile selection to exclude all the lyx
3820 documents. This will make the user download smaller (it's getting
3825 documents. This will make the user download smaller (it's getting
3821 too big).
3826 too big).
3822
3827
3823 2002-05-29 Fernando Perez <fperez@colorado.edu>
3828 2002-05-29 Fernando Perez <fperez@colorado.edu>
3824
3829
3825 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3830 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
3826 fix problems with shelve and pickle. Seems to work, but I don't
3831 fix problems with shelve and pickle. Seems to work, but I don't
3827 know if corner cases break it. Thanks to Mike Heeter
3832 know if corner cases break it. Thanks to Mike Heeter
3828 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3833 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
3829
3834
3830 2002-05-24 Fernando Perez <fperez@colorado.edu>
3835 2002-05-24 Fernando Perez <fperez@colorado.edu>
3831
3836
3832 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3837 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
3833 macros having broken.
3838 macros having broken.
3834
3839
3835 2002-05-21 Fernando Perez <fperez@colorado.edu>
3840 2002-05-21 Fernando Perez <fperez@colorado.edu>
3836
3841
3837 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3842 * IPython/Magic.py (Magic.magic_logstart): fixed recently
3838 introduced logging bug: all history before logging started was
3843 introduced logging bug: all history before logging started was
3839 being written one character per line! This came from the redesign
3844 being written one character per line! This came from the redesign
3840 of the input history as a special list which slices to strings,
3845 of the input history as a special list which slices to strings,
3841 not to lists.
3846 not to lists.
3842
3847
3843 2002-05-20 Fernando Perez <fperez@colorado.edu>
3848 2002-05-20 Fernando Perez <fperez@colorado.edu>
3844
3849
3845 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3850 * IPython/Prompts.py (CachedOutput.__init__): made the color table
3846 be an attribute of all classes in this module. The design of these
3851 be an attribute of all classes in this module. The design of these
3847 classes needs some serious overhauling.
3852 classes needs some serious overhauling.
3848
3853
3849 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3854 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
3850 which was ignoring '_' in option names.
3855 which was ignoring '_' in option names.
3851
3856
3852 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3857 * IPython/ultraTB.py (FormattedTB.__init__): Changed
3853 'Verbose_novars' to 'Context' and made it the new default. It's a
3858 'Verbose_novars' to 'Context' and made it the new default. It's a
3854 bit more readable and also safer than verbose.
3859 bit more readable and also safer than verbose.
3855
3860
3856 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3861 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
3857 triple-quoted strings.
3862 triple-quoted strings.
3858
3863
3859 * IPython/OInspect.py (__all__): new module exposing the object
3864 * IPython/OInspect.py (__all__): new module exposing the object
3860 introspection facilities. Now the corresponding magics are dummy
3865 introspection facilities. Now the corresponding magics are dummy
3861 wrappers around this. Having this module will make it much easier
3866 wrappers around this. Having this module will make it much easier
3862 to put these functions into our modified pdb.
3867 to put these functions into our modified pdb.
3863 This new object inspector system uses the new colorizing module,
3868 This new object inspector system uses the new colorizing module,
3864 so source code and other things are nicely syntax highlighted.
3869 so source code and other things are nicely syntax highlighted.
3865
3870
3866 2002-05-18 Fernando Perez <fperez@colorado.edu>
3871 2002-05-18 Fernando Perez <fperez@colorado.edu>
3867
3872
3868 * IPython/ColorANSI.py: Split the coloring tools into a separate
3873 * IPython/ColorANSI.py: Split the coloring tools into a separate
3869 module so I can use them in other code easier (they were part of
3874 module so I can use them in other code easier (they were part of
3870 ultraTB).
3875 ultraTB).
3871
3876
3872 2002-05-17 Fernando Perez <fperez@colorado.edu>
3877 2002-05-17 Fernando Perez <fperez@colorado.edu>
3873
3878
3874 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3879 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3875 fixed it to set the global 'g' also to the called instance, as
3880 fixed it to set the global 'g' also to the called instance, as
3876 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3881 long as 'g' was still a gnuplot instance (so it doesn't overwrite
3877 user's 'g' variables).
3882 user's 'g' variables).
3878
3883
3879 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3884 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
3880 global variables (aliases to _ih,_oh) so that users which expect
3885 global variables (aliases to _ih,_oh) so that users which expect
3881 In[5] or Out[7] to work aren't unpleasantly surprised.
3886 In[5] or Out[7] to work aren't unpleasantly surprised.
3882 (InputList.__getslice__): new class to allow executing slices of
3887 (InputList.__getslice__): new class to allow executing slices of
3883 input history directly. Very simple class, complements the use of
3888 input history directly. Very simple class, complements the use of
3884 macros.
3889 macros.
3885
3890
3886 2002-05-16 Fernando Perez <fperez@colorado.edu>
3891 2002-05-16 Fernando Perez <fperez@colorado.edu>
3887
3892
3888 * setup.py (docdirbase): make doc directory be just doc/IPython
3893 * setup.py (docdirbase): make doc directory be just doc/IPython
3889 without version numbers, it will reduce clutter for users.
3894 without version numbers, it will reduce clutter for users.
3890
3895
3891 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3896 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
3892 execfile call to prevent possible memory leak. See for details:
3897 execfile call to prevent possible memory leak. See for details:
3893 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3898 http://mail.python.org/pipermail/python-list/2002-February/088476.html
3894
3899
3895 2002-05-15 Fernando Perez <fperez@colorado.edu>
3900 2002-05-15 Fernando Perez <fperez@colorado.edu>
3896
3901
3897 * IPython/Magic.py (Magic.magic_psource): made the object
3902 * IPython/Magic.py (Magic.magic_psource): made the object
3898 introspection names be more standard: pdoc, pdef, pfile and
3903 introspection names be more standard: pdoc, pdef, pfile and
3899 psource. They all print/page their output, and it makes
3904 psource. They all print/page their output, and it makes
3900 remembering them easier. Kept old names for compatibility as
3905 remembering them easier. Kept old names for compatibility as
3901 aliases.
3906 aliases.
3902
3907
3903 2002-05-14 Fernando Perez <fperez@colorado.edu>
3908 2002-05-14 Fernando Perez <fperez@colorado.edu>
3904
3909
3905 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3910 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
3906 what the mouse problem was. The trick is to use gnuplot with temp
3911 what the mouse problem was. The trick is to use gnuplot with temp
3907 files and NOT with pipes (for data communication), because having
3912 files and NOT with pipes (for data communication), because having
3908 both pipes and the mouse on is bad news.
3913 both pipes and the mouse on is bad news.
3909
3914
3910 2002-05-13 Fernando Perez <fperez@colorado.edu>
3915 2002-05-13 Fernando Perez <fperez@colorado.edu>
3911
3916
3912 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3917 * IPython/Magic.py (Magic._ofind): fixed namespace order search
3913 bug. Information would be reported about builtins even when
3918 bug. Information would be reported about builtins even when
3914 user-defined functions overrode them.
3919 user-defined functions overrode them.
3915
3920
3916 2002-05-11 Fernando Perez <fperez@colorado.edu>
3921 2002-05-11 Fernando Perez <fperez@colorado.edu>
3917
3922
3918 * IPython/__init__.py (__all__): removed FlexCompleter from
3923 * IPython/__init__.py (__all__): removed FlexCompleter from
3919 __all__ so that things don't fail in platforms without readline.
3924 __all__ so that things don't fail in platforms without readline.
3920
3925
3921 2002-05-10 Fernando Perez <fperez@colorado.edu>
3926 2002-05-10 Fernando Perez <fperez@colorado.edu>
3922
3927
3923 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3928 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
3924 it requires Numeric, effectively making Numeric a dependency for
3929 it requires Numeric, effectively making Numeric a dependency for
3925 IPython.
3930 IPython.
3926
3931
3927 * Released 0.2.13
3932 * Released 0.2.13
3928
3933
3929 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3934 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
3930 profiler interface. Now all the major options from the profiler
3935 profiler interface. Now all the major options from the profiler
3931 module are directly supported in IPython, both for single
3936 module are directly supported in IPython, both for single
3932 expressions (@prun) and for full programs (@run -p).
3937 expressions (@prun) and for full programs (@run -p).
3933
3938
3934 2002-05-09 Fernando Perez <fperez@colorado.edu>
3939 2002-05-09 Fernando Perez <fperez@colorado.edu>
3935
3940
3936 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3941 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
3937 magic properly formatted for screen.
3942 magic properly formatted for screen.
3938
3943
3939 * setup.py (make_shortcut): Changed things to put pdf version in
3944 * setup.py (make_shortcut): Changed things to put pdf version in
3940 doc/ instead of doc/manual (had to change lyxport a bit).
3945 doc/ instead of doc/manual (had to change lyxport a bit).
3941
3946
3942 * IPython/Magic.py (Profile.string_stats): made profile runs go
3947 * IPython/Magic.py (Profile.string_stats): made profile runs go
3943 through pager (they are long and a pager allows searching, saving,
3948 through pager (they are long and a pager allows searching, saving,
3944 etc.)
3949 etc.)
3945
3950
3946 2002-05-08 Fernando Perez <fperez@colorado.edu>
3951 2002-05-08 Fernando Perez <fperez@colorado.edu>
3947
3952
3948 * Released 0.2.12
3953 * Released 0.2.12
3949
3954
3950 2002-05-06 Fernando Perez <fperez@colorado.edu>
3955 2002-05-06 Fernando Perez <fperez@colorado.edu>
3951
3956
3952 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3957 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
3953 introduced); 'hist n1 n2' was broken.
3958 introduced); 'hist n1 n2' was broken.
3954 (Magic.magic_pdb): added optional on/off arguments to @pdb
3959 (Magic.magic_pdb): added optional on/off arguments to @pdb
3955 (Magic.magic_run): added option -i to @run, which executes code in
3960 (Magic.magic_run): added option -i to @run, which executes code in
3956 the IPython namespace instead of a clean one. Also added @irun as
3961 the IPython namespace instead of a clean one. Also added @irun as
3957 an alias to @run -i.
3962 an alias to @run -i.
3958
3963
3959 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3964 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
3960 fixed (it didn't really do anything, the namespaces were wrong).
3965 fixed (it didn't really do anything, the namespaces were wrong).
3961
3966
3962 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3967 * IPython/Debugger.py (__init__): Added workaround for python 2.1
3963
3968
3964 * IPython/__init__.py (__all__): Fixed package namespace, now
3969 * IPython/__init__.py (__all__): Fixed package namespace, now
3965 'import IPython' does give access to IPython.<all> as
3970 'import IPython' does give access to IPython.<all> as
3966 expected. Also renamed __release__ to Release.
3971 expected. Also renamed __release__ to Release.
3967
3972
3968 * IPython/Debugger.py (__license__): created new Pdb class which
3973 * IPython/Debugger.py (__license__): created new Pdb class which
3969 functions like a drop-in for the normal pdb.Pdb but does NOT
3974 functions like a drop-in for the normal pdb.Pdb but does NOT
3970 import readline by default. This way it doesn't muck up IPython's
3975 import readline by default. This way it doesn't muck up IPython's
3971 readline handling, and now tab-completion finally works in the
3976 readline handling, and now tab-completion finally works in the
3972 debugger -- sort of. It completes things globally visible, but the
3977 debugger -- sort of. It completes things globally visible, but the
3973 completer doesn't track the stack as pdb walks it. That's a bit
3978 completer doesn't track the stack as pdb walks it. That's a bit
3974 tricky, and I'll have to implement it later.
3979 tricky, and I'll have to implement it later.
3975
3980
3976 2002-05-05 Fernando Perez <fperez@colorado.edu>
3981 2002-05-05 Fernando Perez <fperez@colorado.edu>
3977
3982
3978 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3983 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
3979 magic docstrings when printed via ? (explicit \'s were being
3984 magic docstrings when printed via ? (explicit \'s were being
3980 printed).
3985 printed).
3981
3986
3982 * IPython/ipmaker.py (make_IPython): fixed namespace
3987 * IPython/ipmaker.py (make_IPython): fixed namespace
3983 identification bug. Now variables loaded via logs or command-line
3988 identification bug. Now variables loaded via logs or command-line
3984 files are recognized in the interactive namespace by @who.
3989 files are recognized in the interactive namespace by @who.
3985
3990
3986 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3991 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
3987 log replay system stemming from the string form of Structs.
3992 log replay system stemming from the string form of Structs.
3988
3993
3989 * IPython/Magic.py (Macro.__init__): improved macros to properly
3994 * IPython/Magic.py (Macro.__init__): improved macros to properly
3990 handle magic commands in them.
3995 handle magic commands in them.
3991 (Magic.magic_logstart): usernames are now expanded so 'logstart
3996 (Magic.magic_logstart): usernames are now expanded so 'logstart
3992 ~/mylog' now works.
3997 ~/mylog' now works.
3993
3998
3994 * IPython/iplib.py (complete): fixed bug where paths starting with
3999 * IPython/iplib.py (complete): fixed bug where paths starting with
3995 '/' would be completed as magic names.
4000 '/' would be completed as magic names.
3996
4001
3997 2002-05-04 Fernando Perez <fperez@colorado.edu>
4002 2002-05-04 Fernando Perez <fperez@colorado.edu>
3998
4003
3999 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4004 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4000 allow running full programs under the profiler's control.
4005 allow running full programs under the profiler's control.
4001
4006
4002 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4007 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4003 mode to report exceptions verbosely but without formatting
4008 mode to report exceptions verbosely but without formatting
4004 variables. This addresses the issue of ipython 'freezing' (it's
4009 variables. This addresses the issue of ipython 'freezing' (it's
4005 not frozen, but caught in an expensive formatting loop) when huge
4010 not frozen, but caught in an expensive formatting loop) when huge
4006 variables are in the context of an exception.
4011 variables are in the context of an exception.
4007 (VerboseTB.text): Added '--->' markers at line where exception was
4012 (VerboseTB.text): Added '--->' markers at line where exception was
4008 triggered. Much clearer to read, especially in NoColor modes.
4013 triggered. Much clearer to read, especially in NoColor modes.
4009
4014
4010 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4015 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4011 implemented in reverse when changing to the new parse_options().
4016 implemented in reverse when changing to the new parse_options().
4012
4017
4013 2002-05-03 Fernando Perez <fperez@colorado.edu>
4018 2002-05-03 Fernando Perez <fperez@colorado.edu>
4014
4019
4015 * IPython/Magic.py (Magic.parse_options): new function so that
4020 * IPython/Magic.py (Magic.parse_options): new function so that
4016 magics can parse options easier.
4021 magics can parse options easier.
4017 (Magic.magic_prun): new function similar to profile.run(),
4022 (Magic.magic_prun): new function similar to profile.run(),
4018 suggested by Chris Hart.
4023 suggested by Chris Hart.
4019 (Magic.magic_cd): fixed behavior so that it only changes if
4024 (Magic.magic_cd): fixed behavior so that it only changes if
4020 directory actually is in history.
4025 directory actually is in history.
4021
4026
4022 * IPython/usage.py (__doc__): added information about potential
4027 * IPython/usage.py (__doc__): added information about potential
4023 slowness of Verbose exception mode when there are huge data
4028 slowness of Verbose exception mode when there are huge data
4024 structures to be formatted (thanks to Archie Paulson).
4029 structures to be formatted (thanks to Archie Paulson).
4025
4030
4026 * IPython/ipmaker.py (make_IPython): Changed default logging
4031 * IPython/ipmaker.py (make_IPython): Changed default logging
4027 (when simply called with -log) to use curr_dir/ipython.log in
4032 (when simply called with -log) to use curr_dir/ipython.log in
4028 rotate mode. Fixed crash which was occuring with -log before
4033 rotate mode. Fixed crash which was occuring with -log before
4029 (thanks to Jim Boyle).
4034 (thanks to Jim Boyle).
4030
4035
4031 2002-05-01 Fernando Perez <fperez@colorado.edu>
4036 2002-05-01 Fernando Perez <fperez@colorado.edu>
4032
4037
4033 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4038 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4034 was nasty -- though somewhat of a corner case).
4039 was nasty -- though somewhat of a corner case).
4035
4040
4036 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4041 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4037 text (was a bug).
4042 text (was a bug).
4038
4043
4039 2002-04-30 Fernando Perez <fperez@colorado.edu>
4044 2002-04-30 Fernando Perez <fperez@colorado.edu>
4040
4045
4041 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4046 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4042 a print after ^D or ^C from the user so that the In[] prompt
4047 a print after ^D or ^C from the user so that the In[] prompt
4043 doesn't over-run the gnuplot one.
4048 doesn't over-run the gnuplot one.
4044
4049
4045 2002-04-29 Fernando Perez <fperez@colorado.edu>
4050 2002-04-29 Fernando Perez <fperez@colorado.edu>
4046
4051
4047 * Released 0.2.10
4052 * Released 0.2.10
4048
4053
4049 * IPython/__release__.py (version): get date dynamically.
4054 * IPython/__release__.py (version): get date dynamically.
4050
4055
4051 * Misc. documentation updates thanks to Arnd's comments. Also ran
4056 * Misc. documentation updates thanks to Arnd's comments. Also ran
4052 a full spellcheck on the manual (hadn't been done in a while).
4057 a full spellcheck on the manual (hadn't been done in a while).
4053
4058
4054 2002-04-27 Fernando Perez <fperez@colorado.edu>
4059 2002-04-27 Fernando Perez <fperez@colorado.edu>
4055
4060
4056 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4061 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4057 starting a log in mid-session would reset the input history list.
4062 starting a log in mid-session would reset the input history list.
4058
4063
4059 2002-04-26 Fernando Perez <fperez@colorado.edu>
4064 2002-04-26 Fernando Perez <fperez@colorado.edu>
4060
4065
4061 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4066 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4062 all files were being included in an update. Now anything in
4067 all files were being included in an update. Now anything in
4063 UserConfig that matches [A-Za-z]*.py will go (this excludes
4068 UserConfig that matches [A-Za-z]*.py will go (this excludes
4064 __init__.py)
4069 __init__.py)
4065
4070
4066 2002-04-25 Fernando Perez <fperez@colorado.edu>
4071 2002-04-25 Fernando Perez <fperez@colorado.edu>
4067
4072
4068 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4073 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4069 to __builtins__ so that any form of embedded or imported code can
4074 to __builtins__ so that any form of embedded or imported code can
4070 test for being inside IPython.
4075 test for being inside IPython.
4071
4076
4072 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4077 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4073 changed to GnuplotMagic because it's now an importable module,
4078 changed to GnuplotMagic because it's now an importable module,
4074 this makes the name follow that of the standard Gnuplot module.
4079 this makes the name follow that of the standard Gnuplot module.
4075 GnuplotMagic can now be loaded at any time in mid-session.
4080 GnuplotMagic can now be loaded at any time in mid-session.
4076
4081
4077 2002-04-24 Fernando Perez <fperez@colorado.edu>
4082 2002-04-24 Fernando Perez <fperez@colorado.edu>
4078
4083
4079 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4084 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4080 the globals (IPython has its own namespace) and the
4085 the globals (IPython has its own namespace) and the
4081 PhysicalQuantity stuff is much better anyway.
4086 PhysicalQuantity stuff is much better anyway.
4082
4087
4083 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4088 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4084 embedding example to standard user directory for
4089 embedding example to standard user directory for
4085 distribution. Also put it in the manual.
4090 distribution. Also put it in the manual.
4086
4091
4087 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4092 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4088 instance as first argument (so it doesn't rely on some obscure
4093 instance as first argument (so it doesn't rely on some obscure
4089 hidden global).
4094 hidden global).
4090
4095
4091 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4096 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4092 delimiters. While it prevents ().TAB from working, it allows
4097 delimiters. While it prevents ().TAB from working, it allows
4093 completions in open (... expressions. This is by far a more common
4098 completions in open (... expressions. This is by far a more common
4094 case.
4099 case.
4095
4100
4096 2002-04-23 Fernando Perez <fperez@colorado.edu>
4101 2002-04-23 Fernando Perez <fperez@colorado.edu>
4097
4102
4098 * IPython/Extensions/InterpreterPasteInput.py: new
4103 * IPython/Extensions/InterpreterPasteInput.py: new
4099 syntax-processing module for pasting lines with >>> or ... at the
4104 syntax-processing module for pasting lines with >>> or ... at the
4100 start.
4105 start.
4101
4106
4102 * IPython/Extensions/PhysicalQ_Interactive.py
4107 * IPython/Extensions/PhysicalQ_Interactive.py
4103 (PhysicalQuantityInteractive.__int__): fixed to work with either
4108 (PhysicalQuantityInteractive.__int__): fixed to work with either
4104 Numeric or math.
4109 Numeric or math.
4105
4110
4106 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4111 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4107 provided profiles. Now we have:
4112 provided profiles. Now we have:
4108 -math -> math module as * and cmath with its own namespace.
4113 -math -> math module as * and cmath with its own namespace.
4109 -numeric -> Numeric as *, plus gnuplot & grace
4114 -numeric -> Numeric as *, plus gnuplot & grace
4110 -physics -> same as before
4115 -physics -> same as before
4111
4116
4112 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4117 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4113 user-defined magics wouldn't be found by @magic if they were
4118 user-defined magics wouldn't be found by @magic if they were
4114 defined as class methods. Also cleaned up the namespace search
4119 defined as class methods. Also cleaned up the namespace search
4115 logic and the string building (to use %s instead of many repeated
4120 logic and the string building (to use %s instead of many repeated
4116 string adds).
4121 string adds).
4117
4122
4118 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4123 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4119 of user-defined magics to operate with class methods (cleaner, in
4124 of user-defined magics to operate with class methods (cleaner, in
4120 line with the gnuplot code).
4125 line with the gnuplot code).
4121
4126
4122 2002-04-22 Fernando Perez <fperez@colorado.edu>
4127 2002-04-22 Fernando Perez <fperez@colorado.edu>
4123
4128
4124 * setup.py: updated dependency list so that manual is updated when
4129 * setup.py: updated dependency list so that manual is updated when
4125 all included files change.
4130 all included files change.
4126
4131
4127 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4132 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4128 the delimiter removal option (the fix is ugly right now).
4133 the delimiter removal option (the fix is ugly right now).
4129
4134
4130 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4135 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4131 all of the math profile (quicker loading, no conflict between
4136 all of the math profile (quicker loading, no conflict between
4132 g-9.8 and g-gnuplot).
4137 g-9.8 and g-gnuplot).
4133
4138
4134 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4139 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4135 name of post-mortem files to IPython_crash_report.txt.
4140 name of post-mortem files to IPython_crash_report.txt.
4136
4141
4137 * Cleanup/update of the docs. Added all the new readline info and
4142 * Cleanup/update of the docs. Added all the new readline info and
4138 formatted all lists as 'real lists'.
4143 formatted all lists as 'real lists'.
4139
4144
4140 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4145 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4141 tab-completion options, since the full readline parse_and_bind is
4146 tab-completion options, since the full readline parse_and_bind is
4142 now accessible.
4147 now accessible.
4143
4148
4144 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4149 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4145 handling of readline options. Now users can specify any string to
4150 handling of readline options. Now users can specify any string to
4146 be passed to parse_and_bind(), as well as the delimiters to be
4151 be passed to parse_and_bind(), as well as the delimiters to be
4147 removed.
4152 removed.
4148 (InteractiveShell.__init__): Added __name__ to the global
4153 (InteractiveShell.__init__): Added __name__ to the global
4149 namespace so that things like Itpl which rely on its existence
4154 namespace so that things like Itpl which rely on its existence
4150 don't crash.
4155 don't crash.
4151 (InteractiveShell._prefilter): Defined the default with a _ so
4156 (InteractiveShell._prefilter): Defined the default with a _ so
4152 that prefilter() is easier to override, while the default one
4157 that prefilter() is easier to override, while the default one
4153 remains available.
4158 remains available.
4154
4159
4155 2002-04-18 Fernando Perez <fperez@colorado.edu>
4160 2002-04-18 Fernando Perez <fperez@colorado.edu>
4156
4161
4157 * Added information about pdb in the docs.
4162 * Added information about pdb in the docs.
4158
4163
4159 2002-04-17 Fernando Perez <fperez@colorado.edu>
4164 2002-04-17 Fernando Perez <fperez@colorado.edu>
4160
4165
4161 * IPython/ipmaker.py (make_IPython): added rc_override option to
4166 * IPython/ipmaker.py (make_IPython): added rc_override option to
4162 allow passing config options at creation time which may override
4167 allow passing config options at creation time which may override
4163 anything set in the config files or command line. This is
4168 anything set in the config files or command line. This is
4164 particularly useful for configuring embedded instances.
4169 particularly useful for configuring embedded instances.
4165
4170
4166 2002-04-15 Fernando Perez <fperez@colorado.edu>
4171 2002-04-15 Fernando Perez <fperez@colorado.edu>
4167
4172
4168 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4173 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4169 crash embedded instances because of the input cache falling out of
4174 crash embedded instances because of the input cache falling out of
4170 sync with the output counter.
4175 sync with the output counter.
4171
4176
4172 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4177 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4173 mode which calls pdb after an uncaught exception in IPython itself.
4178 mode which calls pdb after an uncaught exception in IPython itself.
4174
4179
4175 2002-04-14 Fernando Perez <fperez@colorado.edu>
4180 2002-04-14 Fernando Perez <fperez@colorado.edu>
4176
4181
4177 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4182 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4178 readline, fix it back after each call.
4183 readline, fix it back after each call.
4179
4184
4180 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4185 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4181 method to force all access via __call__(), which guarantees that
4186 method to force all access via __call__(), which guarantees that
4182 traceback references are properly deleted.
4187 traceback references are properly deleted.
4183
4188
4184 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4189 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4185 improve printing when pprint is in use.
4190 improve printing when pprint is in use.
4186
4191
4187 2002-04-13 Fernando Perez <fperez@colorado.edu>
4192 2002-04-13 Fernando Perez <fperez@colorado.edu>
4188
4193
4189 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4194 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4190 exceptions aren't caught anymore. If the user triggers one, he
4195 exceptions aren't caught anymore. If the user triggers one, he
4191 should know why he's doing it and it should go all the way up,
4196 should know why he's doing it and it should go all the way up,
4192 just like any other exception. So now @abort will fully kill the
4197 just like any other exception. So now @abort will fully kill the
4193 embedded interpreter and the embedding code (unless that happens
4198 embedded interpreter and the embedding code (unless that happens
4194 to catch SystemExit).
4199 to catch SystemExit).
4195
4200
4196 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4201 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4197 and a debugger() method to invoke the interactive pdb debugger
4202 and a debugger() method to invoke the interactive pdb debugger
4198 after printing exception information. Also added the corresponding
4203 after printing exception information. Also added the corresponding
4199 -pdb option and @pdb magic to control this feature, and updated
4204 -pdb option and @pdb magic to control this feature, and updated
4200 the docs. After a suggestion from Christopher Hart
4205 the docs. After a suggestion from Christopher Hart
4201 (hart-AT-caltech.edu).
4206 (hart-AT-caltech.edu).
4202
4207
4203 2002-04-12 Fernando Perez <fperez@colorado.edu>
4208 2002-04-12 Fernando Perez <fperez@colorado.edu>
4204
4209
4205 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4210 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4206 the exception handlers defined by the user (not the CrashHandler)
4211 the exception handlers defined by the user (not the CrashHandler)
4207 so that user exceptions don't trigger an ipython bug report.
4212 so that user exceptions don't trigger an ipython bug report.
4208
4213
4209 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4214 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4210 configurable (it should have always been so).
4215 configurable (it should have always been so).
4211
4216
4212 2002-03-26 Fernando Perez <fperez@colorado.edu>
4217 2002-03-26 Fernando Perez <fperez@colorado.edu>
4213
4218
4214 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4219 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4215 and there to fix embedding namespace issues. This should all be
4220 and there to fix embedding namespace issues. This should all be
4216 done in a more elegant way.
4221 done in a more elegant way.
4217
4222
4218 2002-03-25 Fernando Perez <fperez@colorado.edu>
4223 2002-03-25 Fernando Perez <fperez@colorado.edu>
4219
4224
4220 * IPython/genutils.py (get_home_dir): Try to make it work under
4225 * IPython/genutils.py (get_home_dir): Try to make it work under
4221 win9x also.
4226 win9x also.
4222
4227
4223 2002-03-20 Fernando Perez <fperez@colorado.edu>
4228 2002-03-20 Fernando Perez <fperez@colorado.edu>
4224
4229
4225 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4230 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4226 sys.displayhook untouched upon __init__.
4231 sys.displayhook untouched upon __init__.
4227
4232
4228 2002-03-19 Fernando Perez <fperez@colorado.edu>
4233 2002-03-19 Fernando Perez <fperez@colorado.edu>
4229
4234
4230 * Released 0.2.9 (for embedding bug, basically).
4235 * Released 0.2.9 (for embedding bug, basically).
4231
4236
4232 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4237 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4233 exceptions so that enclosing shell's state can be restored.
4238 exceptions so that enclosing shell's state can be restored.
4234
4239
4235 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4240 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4236 naming conventions in the .ipython/ dir.
4241 naming conventions in the .ipython/ dir.
4237
4242
4238 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4243 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4239 from delimiters list so filenames with - in them get expanded.
4244 from delimiters list so filenames with - in them get expanded.
4240
4245
4241 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4246 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4242 sys.displayhook not being properly restored after an embedded call.
4247 sys.displayhook not being properly restored after an embedded call.
4243
4248
4244 2002-03-18 Fernando Perez <fperez@colorado.edu>
4249 2002-03-18 Fernando Perez <fperez@colorado.edu>
4245
4250
4246 * Released 0.2.8
4251 * Released 0.2.8
4247
4252
4248 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4253 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4249 some files weren't being included in a -upgrade.
4254 some files weren't being included in a -upgrade.
4250 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4255 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4251 on' so that the first tab completes.
4256 on' so that the first tab completes.
4252 (InteractiveShell.handle_magic): fixed bug with spaces around
4257 (InteractiveShell.handle_magic): fixed bug with spaces around
4253 quotes breaking many magic commands.
4258 quotes breaking many magic commands.
4254
4259
4255 * setup.py: added note about ignoring the syntax error messages at
4260 * setup.py: added note about ignoring the syntax error messages at
4256 installation.
4261 installation.
4257
4262
4258 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4263 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4259 streamlining the gnuplot interface, now there's only one magic @gp.
4264 streamlining the gnuplot interface, now there's only one magic @gp.
4260
4265
4261 2002-03-17 Fernando Perez <fperez@colorado.edu>
4266 2002-03-17 Fernando Perez <fperez@colorado.edu>
4262
4267
4263 * IPython/UserConfig/magic_gnuplot.py: new name for the
4268 * IPython/UserConfig/magic_gnuplot.py: new name for the
4264 example-magic_pm.py file. Much enhanced system, now with a shell
4269 example-magic_pm.py file. Much enhanced system, now with a shell
4265 for communicating directly with gnuplot, one command at a time.
4270 for communicating directly with gnuplot, one command at a time.
4266
4271
4267 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4272 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4268 setting __name__=='__main__'.
4273 setting __name__=='__main__'.
4269
4274
4270 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4275 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4271 mini-shell for accessing gnuplot from inside ipython. Should
4276 mini-shell for accessing gnuplot from inside ipython. Should
4272 extend it later for grace access too. Inspired by Arnd's
4277 extend it later for grace access too. Inspired by Arnd's
4273 suggestion.
4278 suggestion.
4274
4279
4275 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4280 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4276 calling magic functions with () in their arguments. Thanks to Arnd
4281 calling magic functions with () in their arguments. Thanks to Arnd
4277 Baecker for pointing this to me.
4282 Baecker for pointing this to me.
4278
4283
4279 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4284 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4280 infinitely for integer or complex arrays (only worked with floats).
4285 infinitely for integer or complex arrays (only worked with floats).
4281
4286
4282 2002-03-16 Fernando Perez <fperez@colorado.edu>
4287 2002-03-16 Fernando Perez <fperez@colorado.edu>
4283
4288
4284 * setup.py: Merged setup and setup_windows into a single script
4289 * setup.py: Merged setup and setup_windows into a single script
4285 which properly handles things for windows users.
4290 which properly handles things for windows users.
4286
4291
4287 2002-03-15 Fernando Perez <fperez@colorado.edu>
4292 2002-03-15 Fernando Perez <fperez@colorado.edu>
4288
4293
4289 * Big change to the manual: now the magics are all automatically
4294 * Big change to the manual: now the magics are all automatically
4290 documented. This information is generated from their docstrings
4295 documented. This information is generated from their docstrings
4291 and put in a latex file included by the manual lyx file. This way
4296 and put in a latex file included by the manual lyx file. This way
4292 we get always up to date information for the magics. The manual
4297 we get always up to date information for the magics. The manual
4293 now also has proper version information, also auto-synced.
4298 now also has proper version information, also auto-synced.
4294
4299
4295 For this to work, an undocumented --magic_docstrings option was added.
4300 For this to work, an undocumented --magic_docstrings option was added.
4296
4301
4297 2002-03-13 Fernando Perez <fperez@colorado.edu>
4302 2002-03-13 Fernando Perez <fperez@colorado.edu>
4298
4303
4299 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4304 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4300 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4305 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4301
4306
4302 2002-03-12 Fernando Perez <fperez@colorado.edu>
4307 2002-03-12 Fernando Perez <fperez@colorado.edu>
4303
4308
4304 * IPython/ultraTB.py (TermColors): changed color escapes again to
4309 * IPython/ultraTB.py (TermColors): changed color escapes again to
4305 fix the (old, reintroduced) line-wrapping bug. Basically, if
4310 fix the (old, reintroduced) line-wrapping bug. Basically, if
4306 \001..\002 aren't given in the color escapes, lines get wrapped
4311 \001..\002 aren't given in the color escapes, lines get wrapped
4307 weirdly. But giving those screws up old xterms and emacs terms. So
4312 weirdly. But giving those screws up old xterms and emacs terms. So
4308 I added some logic for emacs terms to be ok, but I can't identify old
4313 I added some logic for emacs terms to be ok, but I can't identify old
4309 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4314 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4310
4315
4311 2002-03-10 Fernando Perez <fperez@colorado.edu>
4316 2002-03-10 Fernando Perez <fperez@colorado.edu>
4312
4317
4313 * IPython/usage.py (__doc__): Various documentation cleanups and
4318 * IPython/usage.py (__doc__): Various documentation cleanups and
4314 updates, both in usage docstrings and in the manual.
4319 updates, both in usage docstrings and in the manual.
4315
4320
4316 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4321 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4317 handling of caching. Set minimum acceptabe value for having a
4322 handling of caching. Set minimum acceptabe value for having a
4318 cache at 20 values.
4323 cache at 20 values.
4319
4324
4320 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4325 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4321 install_first_time function to a method, renamed it and added an
4326 install_first_time function to a method, renamed it and added an
4322 'upgrade' mode. Now people can update their config directory with
4327 'upgrade' mode. Now people can update their config directory with
4323 a simple command line switch (-upgrade, also new).
4328 a simple command line switch (-upgrade, also new).
4324
4329
4325 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4330 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4326 @file (convenient for automagic users under Python >= 2.2).
4331 @file (convenient for automagic users under Python >= 2.2).
4327 Removed @files (it seemed more like a plural than an abbrev. of
4332 Removed @files (it seemed more like a plural than an abbrev. of
4328 'file show').
4333 'file show').
4329
4334
4330 * IPython/iplib.py (install_first_time): Fixed crash if there were
4335 * IPython/iplib.py (install_first_time): Fixed crash if there were
4331 backup files ('~') in .ipython/ install directory.
4336 backup files ('~') in .ipython/ install directory.
4332
4337
4333 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4338 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4334 system. Things look fine, but these changes are fairly
4339 system. Things look fine, but these changes are fairly
4335 intrusive. Test them for a few days.
4340 intrusive. Test them for a few days.
4336
4341
4337 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4342 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4338 the prompts system. Now all in/out prompt strings are user
4343 the prompts system. Now all in/out prompt strings are user
4339 controllable. This is particularly useful for embedding, as one
4344 controllable. This is particularly useful for embedding, as one
4340 can tag embedded instances with particular prompts.
4345 can tag embedded instances with particular prompts.
4341
4346
4342 Also removed global use of sys.ps1/2, which now allows nested
4347 Also removed global use of sys.ps1/2, which now allows nested
4343 embeddings without any problems. Added command-line options for
4348 embeddings without any problems. Added command-line options for
4344 the prompt strings.
4349 the prompt strings.
4345
4350
4346 2002-03-08 Fernando Perez <fperez@colorado.edu>
4351 2002-03-08 Fernando Perez <fperez@colorado.edu>
4347
4352
4348 * IPython/UserConfig/example-embed-short.py (ipshell): added
4353 * IPython/UserConfig/example-embed-short.py (ipshell): added
4349 example file with the bare minimum code for embedding.
4354 example file with the bare minimum code for embedding.
4350
4355
4351 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4356 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4352 functionality for the embeddable shell to be activated/deactivated
4357 functionality for the embeddable shell to be activated/deactivated
4353 either globally or at each call.
4358 either globally or at each call.
4354
4359
4355 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4360 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4356 rewriting the prompt with '--->' for auto-inputs with proper
4361 rewriting the prompt with '--->' for auto-inputs with proper
4357 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4362 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4358 this is handled by the prompts class itself, as it should.
4363 this is handled by the prompts class itself, as it should.
4359
4364
4360 2002-03-05 Fernando Perez <fperez@colorado.edu>
4365 2002-03-05 Fernando Perez <fperez@colorado.edu>
4361
4366
4362 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4367 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4363 @logstart to avoid name clashes with the math log function.
4368 @logstart to avoid name clashes with the math log function.
4364
4369
4365 * Big updates to X/Emacs section of the manual.
4370 * Big updates to X/Emacs section of the manual.
4366
4371
4367 * Removed ipython_emacs. Milan explained to me how to pass
4372 * Removed ipython_emacs. Milan explained to me how to pass
4368 arguments to ipython through Emacs. Some day I'm going to end up
4373 arguments to ipython through Emacs. Some day I'm going to end up
4369 learning some lisp...
4374 learning some lisp...
4370
4375
4371 2002-03-04 Fernando Perez <fperez@colorado.edu>
4376 2002-03-04 Fernando Perez <fperez@colorado.edu>
4372
4377
4373 * IPython/ipython_emacs: Created script to be used as the
4378 * IPython/ipython_emacs: Created script to be used as the
4374 py-python-command Emacs variable so we can pass IPython
4379 py-python-command Emacs variable so we can pass IPython
4375 parameters. I can't figure out how to tell Emacs directly to pass
4380 parameters. I can't figure out how to tell Emacs directly to pass
4376 parameters to IPython, so a dummy shell script will do it.
4381 parameters to IPython, so a dummy shell script will do it.
4377
4382
4378 Other enhancements made for things to work better under Emacs'
4383 Other enhancements made for things to work better under Emacs'
4379 various types of terminals. Many thanks to Milan Zamazal
4384 various types of terminals. Many thanks to Milan Zamazal
4380 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4385 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4381
4386
4382 2002-03-01 Fernando Perez <fperez@colorado.edu>
4387 2002-03-01 Fernando Perez <fperez@colorado.edu>
4383
4388
4384 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4389 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4385 that loading of readline is now optional. This gives better
4390 that loading of readline is now optional. This gives better
4386 control to emacs users.
4391 control to emacs users.
4387
4392
4388 * IPython/ultraTB.py (__date__): Modified color escape sequences
4393 * IPython/ultraTB.py (__date__): Modified color escape sequences
4389 and now things work fine under xterm and in Emacs' term buffers
4394 and now things work fine under xterm and in Emacs' term buffers
4390 (though not shell ones). Well, in emacs you get colors, but all
4395 (though not shell ones). Well, in emacs you get colors, but all
4391 seem to be 'light' colors (no difference between dark and light
4396 seem to be 'light' colors (no difference between dark and light
4392 ones). But the garbage chars are gone, and also in xterms. It
4397 ones). But the garbage chars are gone, and also in xterms. It
4393 seems that now I'm using 'cleaner' ansi sequences.
4398 seems that now I'm using 'cleaner' ansi sequences.
4394
4399
4395 2002-02-21 Fernando Perez <fperez@colorado.edu>
4400 2002-02-21 Fernando Perez <fperez@colorado.edu>
4396
4401
4397 * Released 0.2.7 (mainly to publish the scoping fix).
4402 * Released 0.2.7 (mainly to publish the scoping fix).
4398
4403
4399 * IPython/Logger.py (Logger.logstate): added. A corresponding
4404 * IPython/Logger.py (Logger.logstate): added. A corresponding
4400 @logstate magic was created.
4405 @logstate magic was created.
4401
4406
4402 * IPython/Magic.py: fixed nested scoping problem under Python
4407 * IPython/Magic.py: fixed nested scoping problem under Python
4403 2.1.x (automagic wasn't working).
4408 2.1.x (automagic wasn't working).
4404
4409
4405 2002-02-20 Fernando Perez <fperez@colorado.edu>
4410 2002-02-20 Fernando Perez <fperez@colorado.edu>
4406
4411
4407 * Released 0.2.6.
4412 * Released 0.2.6.
4408
4413
4409 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4414 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4410 option so that logs can come out without any headers at all.
4415 option so that logs can come out without any headers at all.
4411
4416
4412 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4417 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4413 SciPy.
4418 SciPy.
4414
4419
4415 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4420 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4416 that embedded IPython calls don't require vars() to be explicitly
4421 that embedded IPython calls don't require vars() to be explicitly
4417 passed. Now they are extracted from the caller's frame (code
4422 passed. Now they are extracted from the caller's frame (code
4418 snatched from Eric Jones' weave). Added better documentation to
4423 snatched from Eric Jones' weave). Added better documentation to
4419 the section on embedding and the example file.
4424 the section on embedding and the example file.
4420
4425
4421 * IPython/genutils.py (page): Changed so that under emacs, it just
4426 * IPython/genutils.py (page): Changed so that under emacs, it just
4422 prints the string. You can then page up and down in the emacs
4427 prints the string. You can then page up and down in the emacs
4423 buffer itself. This is how the builtin help() works.
4428 buffer itself. This is how the builtin help() works.
4424
4429
4425 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4430 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4426 macro scoping: macros need to be executed in the user's namespace
4431 macro scoping: macros need to be executed in the user's namespace
4427 to work as if they had been typed by the user.
4432 to work as if they had been typed by the user.
4428
4433
4429 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4434 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4430 execute automatically (no need to type 'exec...'). They then
4435 execute automatically (no need to type 'exec...'). They then
4431 behave like 'true macros'. The printing system was also modified
4436 behave like 'true macros'. The printing system was also modified
4432 for this to work.
4437 for this to work.
4433
4438
4434 2002-02-19 Fernando Perez <fperez@colorado.edu>
4439 2002-02-19 Fernando Perez <fperez@colorado.edu>
4435
4440
4436 * IPython/genutils.py (page_file): new function for paging files
4441 * IPython/genutils.py (page_file): new function for paging files
4437 in an OS-independent way. Also necessary for file viewing to work
4442 in an OS-independent way. Also necessary for file viewing to work
4438 well inside Emacs buffers.
4443 well inside Emacs buffers.
4439 (page): Added checks for being in an emacs buffer.
4444 (page): Added checks for being in an emacs buffer.
4440 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4445 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4441 same bug in iplib.
4446 same bug in iplib.
4442
4447
4443 2002-02-18 Fernando Perez <fperez@colorado.edu>
4448 2002-02-18 Fernando Perez <fperez@colorado.edu>
4444
4449
4445 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4450 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4446 of readline so that IPython can work inside an Emacs buffer.
4451 of readline so that IPython can work inside an Emacs buffer.
4447
4452
4448 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4453 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4449 method signatures (they weren't really bugs, but it looks cleaner
4454 method signatures (they weren't really bugs, but it looks cleaner
4450 and keeps PyChecker happy).
4455 and keeps PyChecker happy).
4451
4456
4452 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4457 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4453 for implementing various user-defined hooks. Currently only
4458 for implementing various user-defined hooks. Currently only
4454 display is done.
4459 display is done.
4455
4460
4456 * IPython/Prompts.py (CachedOutput._display): changed display
4461 * IPython/Prompts.py (CachedOutput._display): changed display
4457 functions so that they can be dynamically changed by users easily.
4462 functions so that they can be dynamically changed by users easily.
4458
4463
4459 * IPython/Extensions/numeric_formats.py (num_display): added an
4464 * IPython/Extensions/numeric_formats.py (num_display): added an
4460 extension for printing NumPy arrays in flexible manners. It
4465 extension for printing NumPy arrays in flexible manners. It
4461 doesn't do anything yet, but all the structure is in
4466 doesn't do anything yet, but all the structure is in
4462 place. Ultimately the plan is to implement output format control
4467 place. Ultimately the plan is to implement output format control
4463 like in Octave.
4468 like in Octave.
4464
4469
4465 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4470 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4466 methods are found at run-time by all the automatic machinery.
4471 methods are found at run-time by all the automatic machinery.
4467
4472
4468 2002-02-17 Fernando Perez <fperez@colorado.edu>
4473 2002-02-17 Fernando Perez <fperez@colorado.edu>
4469
4474
4470 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4475 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4471 whole file a little.
4476 whole file a little.
4472
4477
4473 * ToDo: closed this document. Now there's a new_design.lyx
4478 * ToDo: closed this document. Now there's a new_design.lyx
4474 document for all new ideas. Added making a pdf of it for the
4479 document for all new ideas. Added making a pdf of it for the
4475 end-user distro.
4480 end-user distro.
4476
4481
4477 * IPython/Logger.py (Logger.switch_log): Created this to replace
4482 * IPython/Logger.py (Logger.switch_log): Created this to replace
4478 logon() and logoff(). It also fixes a nasty crash reported by
4483 logon() and logoff(). It also fixes a nasty crash reported by
4479 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4484 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4480
4485
4481 * IPython/iplib.py (complete): got auto-completion to work with
4486 * IPython/iplib.py (complete): got auto-completion to work with
4482 automagic (I had wanted this for a long time).
4487 automagic (I had wanted this for a long time).
4483
4488
4484 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4489 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4485 to @file, since file() is now a builtin and clashes with automagic
4490 to @file, since file() is now a builtin and clashes with automagic
4486 for @file.
4491 for @file.
4487
4492
4488 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4493 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4489 of this was previously in iplib, which had grown to more than 2000
4494 of this was previously in iplib, which had grown to more than 2000
4490 lines, way too long. No new functionality, but it makes managing
4495 lines, way too long. No new functionality, but it makes managing
4491 the code a bit easier.
4496 the code a bit easier.
4492
4497
4493 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4498 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4494 information to crash reports.
4499 information to crash reports.
4495
4500
4496 2002-02-12 Fernando Perez <fperez@colorado.edu>
4501 2002-02-12 Fernando Perez <fperez@colorado.edu>
4497
4502
4498 * Released 0.2.5.
4503 * Released 0.2.5.
4499
4504
4500 2002-02-11 Fernando Perez <fperez@colorado.edu>
4505 2002-02-11 Fernando Perez <fperez@colorado.edu>
4501
4506
4502 * Wrote a relatively complete Windows installer. It puts
4507 * Wrote a relatively complete Windows installer. It puts
4503 everything in place, creates Start Menu entries and fixes the
4508 everything in place, creates Start Menu entries and fixes the
4504 color issues. Nothing fancy, but it works.
4509 color issues. Nothing fancy, but it works.
4505
4510
4506 2002-02-10 Fernando Perez <fperez@colorado.edu>
4511 2002-02-10 Fernando Perez <fperez@colorado.edu>
4507
4512
4508 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4513 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4509 os.path.expanduser() call so that we can type @run ~/myfile.py and
4514 os.path.expanduser() call so that we can type @run ~/myfile.py and
4510 have thigs work as expected.
4515 have thigs work as expected.
4511
4516
4512 * IPython/genutils.py (page): fixed exception handling so things
4517 * IPython/genutils.py (page): fixed exception handling so things
4513 work both in Unix and Windows correctly. Quitting a pager triggers
4518 work both in Unix and Windows correctly. Quitting a pager triggers
4514 an IOError/broken pipe in Unix, and in windows not finding a pager
4519 an IOError/broken pipe in Unix, and in windows not finding a pager
4515 is also an IOError, so I had to actually look at the return value
4520 is also an IOError, so I had to actually look at the return value
4516 of the exception, not just the exception itself. Should be ok now.
4521 of the exception, not just the exception itself. Should be ok now.
4517
4522
4518 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4523 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4519 modified to allow case-insensitive color scheme changes.
4524 modified to allow case-insensitive color scheme changes.
4520
4525
4521 2002-02-09 Fernando Perez <fperez@colorado.edu>
4526 2002-02-09 Fernando Perez <fperez@colorado.edu>
4522
4527
4523 * IPython/genutils.py (native_line_ends): new function to leave
4528 * IPython/genutils.py (native_line_ends): new function to leave
4524 user config files with os-native line-endings.
4529 user config files with os-native line-endings.
4525
4530
4526 * README and manual updates.
4531 * README and manual updates.
4527
4532
4528 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4533 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4529 instead of StringType to catch Unicode strings.
4534 instead of StringType to catch Unicode strings.
4530
4535
4531 * IPython/genutils.py (filefind): fixed bug for paths with
4536 * IPython/genutils.py (filefind): fixed bug for paths with
4532 embedded spaces (very common in Windows).
4537 embedded spaces (very common in Windows).
4533
4538
4534 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4539 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4535 files under Windows, so that they get automatically associated
4540 files under Windows, so that they get automatically associated
4536 with a text editor. Windows makes it a pain to handle
4541 with a text editor. Windows makes it a pain to handle
4537 extension-less files.
4542 extension-less files.
4538
4543
4539 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4544 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4540 warning about readline only occur for Posix. In Windows there's no
4545 warning about readline only occur for Posix. In Windows there's no
4541 way to get readline, so why bother with the warning.
4546 way to get readline, so why bother with the warning.
4542
4547
4543 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4548 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4544 for __str__ instead of dir(self), since dir() changed in 2.2.
4549 for __str__ instead of dir(self), since dir() changed in 2.2.
4545
4550
4546 * Ported to Windows! Tested on XP, I suspect it should work fine
4551 * Ported to Windows! Tested on XP, I suspect it should work fine
4547 on NT/2000, but I don't think it will work on 98 et al. That
4552 on NT/2000, but I don't think it will work on 98 et al. That
4548 series of Windows is such a piece of junk anyway that I won't try
4553 series of Windows is such a piece of junk anyway that I won't try
4549 porting it there. The XP port was straightforward, showed a few
4554 porting it there. The XP port was straightforward, showed a few
4550 bugs here and there (fixed all), in particular some string
4555 bugs here and there (fixed all), in particular some string
4551 handling stuff which required considering Unicode strings (which
4556 handling stuff which required considering Unicode strings (which
4552 Windows uses). This is good, but hasn't been too tested :) No
4557 Windows uses). This is good, but hasn't been too tested :) No
4553 fancy installer yet, I'll put a note in the manual so people at
4558 fancy installer yet, I'll put a note in the manual so people at
4554 least make manually a shortcut.
4559 least make manually a shortcut.
4555
4560
4556 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4561 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4557 into a single one, "colors". This now controls both prompt and
4562 into a single one, "colors". This now controls both prompt and
4558 exception color schemes, and can be changed both at startup
4563 exception color schemes, and can be changed both at startup
4559 (either via command-line switches or via ipythonrc files) and at
4564 (either via command-line switches or via ipythonrc files) and at
4560 runtime, with @colors.
4565 runtime, with @colors.
4561 (Magic.magic_run): renamed @prun to @run and removed the old
4566 (Magic.magic_run): renamed @prun to @run and removed the old
4562 @run. The two were too similar to warrant keeping both.
4567 @run. The two were too similar to warrant keeping both.
4563
4568
4564 2002-02-03 Fernando Perez <fperez@colorado.edu>
4569 2002-02-03 Fernando Perez <fperez@colorado.edu>
4565
4570
4566 * IPython/iplib.py (install_first_time): Added comment on how to
4571 * IPython/iplib.py (install_first_time): Added comment on how to
4567 configure the color options for first-time users. Put a <return>
4572 configure the color options for first-time users. Put a <return>
4568 request at the end so that small-terminal users get a chance to
4573 request at the end so that small-terminal users get a chance to
4569 read the startup info.
4574 read the startup info.
4570
4575
4571 2002-01-23 Fernando Perez <fperez@colorado.edu>
4576 2002-01-23 Fernando Perez <fperez@colorado.edu>
4572
4577
4573 * IPython/iplib.py (CachedOutput.update): Changed output memory
4578 * IPython/iplib.py (CachedOutput.update): Changed output memory
4574 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4579 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4575 input history we still use _i. Did this b/c these variable are
4580 input history we still use _i. Did this b/c these variable are
4576 very commonly used in interactive work, so the less we need to
4581 very commonly used in interactive work, so the less we need to
4577 type the better off we are.
4582 type the better off we are.
4578 (Magic.magic_prun): updated @prun to better handle the namespaces
4583 (Magic.magic_prun): updated @prun to better handle the namespaces
4579 the file will run in, including a fix for __name__ not being set
4584 the file will run in, including a fix for __name__ not being set
4580 before.
4585 before.
4581
4586
4582 2002-01-20 Fernando Perez <fperez@colorado.edu>
4587 2002-01-20 Fernando Perez <fperez@colorado.edu>
4583
4588
4584 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4589 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4585 extra garbage for Python 2.2. Need to look more carefully into
4590 extra garbage for Python 2.2. Need to look more carefully into
4586 this later.
4591 this later.
4587
4592
4588 2002-01-19 Fernando Perez <fperez@colorado.edu>
4593 2002-01-19 Fernando Perez <fperez@colorado.edu>
4589
4594
4590 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4595 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4591 display SyntaxError exceptions properly formatted when they occur
4596 display SyntaxError exceptions properly formatted when they occur
4592 (they can be triggered by imported code).
4597 (they can be triggered by imported code).
4593
4598
4594 2002-01-18 Fernando Perez <fperez@colorado.edu>
4599 2002-01-18 Fernando Perez <fperez@colorado.edu>
4595
4600
4596 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4601 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4597 SyntaxError exceptions are reported nicely formatted, instead of
4602 SyntaxError exceptions are reported nicely formatted, instead of
4598 spitting out only offset information as before.
4603 spitting out only offset information as before.
4599 (Magic.magic_prun): Added the @prun function for executing
4604 (Magic.magic_prun): Added the @prun function for executing
4600 programs with command line args inside IPython.
4605 programs with command line args inside IPython.
4601
4606
4602 2002-01-16 Fernando Perez <fperez@colorado.edu>
4607 2002-01-16 Fernando Perez <fperez@colorado.edu>
4603
4608
4604 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4609 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4605 to *not* include the last item given in a range. This brings their
4610 to *not* include the last item given in a range. This brings their
4606 behavior in line with Python's slicing:
4611 behavior in line with Python's slicing:
4607 a[n1:n2] -> a[n1]...a[n2-1]
4612 a[n1:n2] -> a[n1]...a[n2-1]
4608 It may be a bit less convenient, but I prefer to stick to Python's
4613 It may be a bit less convenient, but I prefer to stick to Python's
4609 conventions *everywhere*, so users never have to wonder.
4614 conventions *everywhere*, so users never have to wonder.
4610 (Magic.magic_macro): Added @macro function to ease the creation of
4615 (Magic.magic_macro): Added @macro function to ease the creation of
4611 macros.
4616 macros.
4612
4617
4613 2002-01-05 Fernando Perez <fperez@colorado.edu>
4618 2002-01-05 Fernando Perez <fperez@colorado.edu>
4614
4619
4615 * Released 0.2.4.
4620 * Released 0.2.4.
4616
4621
4617 * IPython/iplib.py (Magic.magic_pdef):
4622 * IPython/iplib.py (Magic.magic_pdef):
4618 (InteractiveShell.safe_execfile): report magic lines and error
4623 (InteractiveShell.safe_execfile): report magic lines and error
4619 lines without line numbers so one can easily copy/paste them for
4624 lines without line numbers so one can easily copy/paste them for
4620 re-execution.
4625 re-execution.
4621
4626
4622 * Updated manual with recent changes.
4627 * Updated manual with recent changes.
4623
4628
4624 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4629 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4625 docstring printing when class? is called. Very handy for knowing
4630 docstring printing when class? is called. Very handy for knowing
4626 how to create class instances (as long as __init__ is well
4631 how to create class instances (as long as __init__ is well
4627 documented, of course :)
4632 documented, of course :)
4628 (Magic.magic_doc): print both class and constructor docstrings.
4633 (Magic.magic_doc): print both class and constructor docstrings.
4629 (Magic.magic_pdef): give constructor info if passed a class and
4634 (Magic.magic_pdef): give constructor info if passed a class and
4630 __call__ info for callable object instances.
4635 __call__ info for callable object instances.
4631
4636
4632 2002-01-04 Fernando Perez <fperez@colorado.edu>
4637 2002-01-04 Fernando Perez <fperez@colorado.edu>
4633
4638
4634 * Made deep_reload() off by default. It doesn't always work
4639 * Made deep_reload() off by default. It doesn't always work
4635 exactly as intended, so it's probably safer to have it off. It's
4640 exactly as intended, so it's probably safer to have it off. It's
4636 still available as dreload() anyway, so nothing is lost.
4641 still available as dreload() anyway, so nothing is lost.
4637
4642
4638 2002-01-02 Fernando Perez <fperez@colorado.edu>
4643 2002-01-02 Fernando Perez <fperez@colorado.edu>
4639
4644
4640 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4645 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4641 so I wanted an updated release).
4646 so I wanted an updated release).
4642
4647
4643 2001-12-27 Fernando Perez <fperez@colorado.edu>
4648 2001-12-27 Fernando Perez <fperez@colorado.edu>
4644
4649
4645 * IPython/iplib.py (InteractiveShell.interact): Added the original
4650 * IPython/iplib.py (InteractiveShell.interact): Added the original
4646 code from 'code.py' for this module in order to change the
4651 code from 'code.py' for this module in order to change the
4647 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4652 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4648 the history cache would break when the user hit Ctrl-C, and
4653 the history cache would break when the user hit Ctrl-C, and
4649 interact() offers no way to add any hooks to it.
4654 interact() offers no way to add any hooks to it.
4650
4655
4651 2001-12-23 Fernando Perez <fperez@colorado.edu>
4656 2001-12-23 Fernando Perez <fperez@colorado.edu>
4652
4657
4653 * setup.py: added check for 'MANIFEST' before trying to remove
4658 * setup.py: added check for 'MANIFEST' before trying to remove
4654 it. Thanks to Sean Reifschneider.
4659 it. Thanks to Sean Reifschneider.
4655
4660
4656 2001-12-22 Fernando Perez <fperez@colorado.edu>
4661 2001-12-22 Fernando Perez <fperez@colorado.edu>
4657
4662
4658 * Released 0.2.2.
4663 * Released 0.2.2.
4659
4664
4660 * Finished (reasonably) writing the manual. Later will add the
4665 * Finished (reasonably) writing the manual. Later will add the
4661 python-standard navigation stylesheets, but for the time being
4666 python-standard navigation stylesheets, but for the time being
4662 it's fairly complete. Distribution will include html and pdf
4667 it's fairly complete. Distribution will include html and pdf
4663 versions.
4668 versions.
4664
4669
4665 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4670 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4666 (MayaVi author).
4671 (MayaVi author).
4667
4672
4668 2001-12-21 Fernando Perez <fperez@colorado.edu>
4673 2001-12-21 Fernando Perez <fperez@colorado.edu>
4669
4674
4670 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4675 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4671 good public release, I think (with the manual and the distutils
4676 good public release, I think (with the manual and the distutils
4672 installer). The manual can use some work, but that can go
4677 installer). The manual can use some work, but that can go
4673 slowly. Otherwise I think it's quite nice for end users. Next
4678 slowly. Otherwise I think it's quite nice for end users. Next
4674 summer, rewrite the guts of it...
4679 summer, rewrite the guts of it...
4675
4680
4676 * Changed format of ipythonrc files to use whitespace as the
4681 * Changed format of ipythonrc files to use whitespace as the
4677 separator instead of an explicit '='. Cleaner.
4682 separator instead of an explicit '='. Cleaner.
4678
4683
4679 2001-12-20 Fernando Perez <fperez@colorado.edu>
4684 2001-12-20 Fernando Perez <fperez@colorado.edu>
4680
4685
4681 * Started a manual in LyX. For now it's just a quick merge of the
4686 * Started a manual in LyX. For now it's just a quick merge of the
4682 various internal docstrings and READMEs. Later it may grow into a
4687 various internal docstrings and READMEs. Later it may grow into a
4683 nice, full-blown manual.
4688 nice, full-blown manual.
4684
4689
4685 * Set up a distutils based installer. Installation should now be
4690 * Set up a distutils based installer. Installation should now be
4686 trivially simple for end-users.
4691 trivially simple for end-users.
4687
4692
4688 2001-12-11 Fernando Perez <fperez@colorado.edu>
4693 2001-12-11 Fernando Perez <fperez@colorado.edu>
4689
4694
4690 * Released 0.2.0. First public release, announced it at
4695 * Released 0.2.0. First public release, announced it at
4691 comp.lang.python. From now on, just bugfixes...
4696 comp.lang.python. From now on, just bugfixes...
4692
4697
4693 * Went through all the files, set copyright/license notices and
4698 * Went through all the files, set copyright/license notices and
4694 cleaned up things. Ready for release.
4699 cleaned up things. Ready for release.
4695
4700
4696 2001-12-10 Fernando Perez <fperez@colorado.edu>
4701 2001-12-10 Fernando Perez <fperez@colorado.edu>
4697
4702
4698 * Changed the first-time installer not to use tarfiles. It's more
4703 * Changed the first-time installer not to use tarfiles. It's more
4699 robust now and less unix-dependent. Also makes it easier for
4704 robust now and less unix-dependent. Also makes it easier for
4700 people to later upgrade versions.
4705 people to later upgrade versions.
4701
4706
4702 * Changed @exit to @abort to reflect the fact that it's pretty
4707 * Changed @exit to @abort to reflect the fact that it's pretty
4703 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4708 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4704 becomes significant only when IPyhton is embedded: in that case,
4709 becomes significant only when IPyhton is embedded: in that case,
4705 C-D closes IPython only, but @abort kills the enclosing program
4710 C-D closes IPython only, but @abort kills the enclosing program
4706 too (unless it had called IPython inside a try catching
4711 too (unless it had called IPython inside a try catching
4707 SystemExit).
4712 SystemExit).
4708
4713
4709 * Created Shell module which exposes the actuall IPython Shell
4714 * Created Shell module which exposes the actuall IPython Shell
4710 classes, currently the normal and the embeddable one. This at
4715 classes, currently the normal and the embeddable one. This at
4711 least offers a stable interface we won't need to change when
4716 least offers a stable interface we won't need to change when
4712 (later) the internals are rewritten. That rewrite will be confined
4717 (later) the internals are rewritten. That rewrite will be confined
4713 to iplib and ipmaker, but the Shell interface should remain as is.
4718 to iplib and ipmaker, but the Shell interface should remain as is.
4714
4719
4715 * Added embed module which offers an embeddable IPShell object,
4720 * Added embed module which offers an embeddable IPShell object,
4716 useful to fire up IPython *inside* a running program. Great for
4721 useful to fire up IPython *inside* a running program. Great for
4717 debugging or dynamical data analysis.
4722 debugging or dynamical data analysis.
4718
4723
4719 2001-12-08 Fernando Perez <fperez@colorado.edu>
4724 2001-12-08 Fernando Perez <fperez@colorado.edu>
4720
4725
4721 * Fixed small bug preventing seeing info from methods of defined
4726 * Fixed small bug preventing seeing info from methods of defined
4722 objects (incorrect namespace in _ofind()).
4727 objects (incorrect namespace in _ofind()).
4723
4728
4724 * Documentation cleanup. Moved the main usage docstrings to a
4729 * Documentation cleanup. Moved the main usage docstrings to a
4725 separate file, usage.py (cleaner to maintain, and hopefully in the
4730 separate file, usage.py (cleaner to maintain, and hopefully in the
4726 future some perlpod-like way of producing interactive, man and
4731 future some perlpod-like way of producing interactive, man and
4727 html docs out of it will be found).
4732 html docs out of it will be found).
4728
4733
4729 * Added @profile to see your profile at any time.
4734 * Added @profile to see your profile at any time.
4730
4735
4731 * Added @p as an alias for 'print'. It's especially convenient if
4736 * Added @p as an alias for 'print'. It's especially convenient if
4732 using automagic ('p x' prints x).
4737 using automagic ('p x' prints x).
4733
4738
4734 * Small cleanups and fixes after a pychecker run.
4739 * Small cleanups and fixes after a pychecker run.
4735
4740
4736 * Changed the @cd command to handle @cd - and @cd -<n> for
4741 * Changed the @cd command to handle @cd - and @cd -<n> for
4737 visiting any directory in _dh.
4742 visiting any directory in _dh.
4738
4743
4739 * Introduced _dh, a history of visited directories. @dhist prints
4744 * Introduced _dh, a history of visited directories. @dhist prints
4740 it out with numbers.
4745 it out with numbers.
4741
4746
4742 2001-12-07 Fernando Perez <fperez@colorado.edu>
4747 2001-12-07 Fernando Perez <fperez@colorado.edu>
4743
4748
4744 * Released 0.1.22
4749 * Released 0.1.22
4745
4750
4746 * Made initialization a bit more robust against invalid color
4751 * Made initialization a bit more robust against invalid color
4747 options in user input (exit, not traceback-crash).
4752 options in user input (exit, not traceback-crash).
4748
4753
4749 * Changed the bug crash reporter to write the report only in the
4754 * Changed the bug crash reporter to write the report only in the
4750 user's .ipython directory. That way IPython won't litter people's
4755 user's .ipython directory. That way IPython won't litter people's
4751 hard disks with crash files all over the place. Also print on
4756 hard disks with crash files all over the place. Also print on
4752 screen the necessary mail command.
4757 screen the necessary mail command.
4753
4758
4754 * With the new ultraTB, implemented LightBG color scheme for light
4759 * With the new ultraTB, implemented LightBG color scheme for light
4755 background terminals. A lot of people like white backgrounds, so I
4760 background terminals. A lot of people like white backgrounds, so I
4756 guess we should at least give them something readable.
4761 guess we should at least give them something readable.
4757
4762
4758 2001-12-06 Fernando Perez <fperez@colorado.edu>
4763 2001-12-06 Fernando Perez <fperez@colorado.edu>
4759
4764
4760 * Modified the structure of ultraTB. Now there's a proper class
4765 * Modified the structure of ultraTB. Now there's a proper class
4761 for tables of color schemes which allow adding schemes easily and
4766 for tables of color schemes which allow adding schemes easily and
4762 switching the active scheme without creating a new instance every
4767 switching the active scheme without creating a new instance every
4763 time (which was ridiculous). The syntax for creating new schemes
4768 time (which was ridiculous). The syntax for creating new schemes
4764 is also cleaner. I think ultraTB is finally done, with a clean
4769 is also cleaner. I think ultraTB is finally done, with a clean
4765 class structure. Names are also much cleaner (now there's proper
4770 class structure. Names are also much cleaner (now there's proper
4766 color tables, no need for every variable to also have 'color' in
4771 color tables, no need for every variable to also have 'color' in
4767 its name).
4772 its name).
4768
4773
4769 * Broke down genutils into separate files. Now genutils only
4774 * Broke down genutils into separate files. Now genutils only
4770 contains utility functions, and classes have been moved to their
4775 contains utility functions, and classes have been moved to their
4771 own files (they had enough independent functionality to warrant
4776 own files (they had enough independent functionality to warrant
4772 it): ConfigLoader, OutputTrap, Struct.
4777 it): ConfigLoader, OutputTrap, Struct.
4773
4778
4774 2001-12-05 Fernando Perez <fperez@colorado.edu>
4779 2001-12-05 Fernando Perez <fperez@colorado.edu>
4775
4780
4776 * IPython turns 21! Released version 0.1.21, as a candidate for
4781 * IPython turns 21! Released version 0.1.21, as a candidate for
4777 public consumption. If all goes well, release in a few days.
4782 public consumption. If all goes well, release in a few days.
4778
4783
4779 * Fixed path bug (files in Extensions/ directory wouldn't be found
4784 * Fixed path bug (files in Extensions/ directory wouldn't be found
4780 unless IPython/ was explicitly in sys.path).
4785 unless IPython/ was explicitly in sys.path).
4781
4786
4782 * Extended the FlexCompleter class as MagicCompleter to allow
4787 * Extended the FlexCompleter class as MagicCompleter to allow
4783 completion of @-starting lines.
4788 completion of @-starting lines.
4784
4789
4785 * Created __release__.py file as a central repository for release
4790 * Created __release__.py file as a central repository for release
4786 info that other files can read from.
4791 info that other files can read from.
4787
4792
4788 * Fixed small bug in logging: when logging was turned on in
4793 * Fixed small bug in logging: when logging was turned on in
4789 mid-session, old lines with special meanings (!@?) were being
4794 mid-session, old lines with special meanings (!@?) were being
4790 logged without the prepended comment, which is necessary since
4795 logged without the prepended comment, which is necessary since
4791 they are not truly valid python syntax. This should make session
4796 they are not truly valid python syntax. This should make session
4792 restores produce less errors.
4797 restores produce less errors.
4793
4798
4794 * The namespace cleanup forced me to make a FlexCompleter class
4799 * The namespace cleanup forced me to make a FlexCompleter class
4795 which is nothing but a ripoff of rlcompleter, but with selectable
4800 which is nothing but a ripoff of rlcompleter, but with selectable
4796 namespace (rlcompleter only works in __main__.__dict__). I'll try
4801 namespace (rlcompleter only works in __main__.__dict__). I'll try
4797 to submit a note to the authors to see if this change can be
4802 to submit a note to the authors to see if this change can be
4798 incorporated in future rlcompleter releases (Dec.6: done)
4803 incorporated in future rlcompleter releases (Dec.6: done)
4799
4804
4800 * More fixes to namespace handling. It was a mess! Now all
4805 * More fixes to namespace handling. It was a mess! Now all
4801 explicit references to __main__.__dict__ are gone (except when
4806 explicit references to __main__.__dict__ are gone (except when
4802 really needed) and everything is handled through the namespace
4807 really needed) and everything is handled through the namespace
4803 dicts in the IPython instance. We seem to be getting somewhere
4808 dicts in the IPython instance. We seem to be getting somewhere
4804 with this, finally...
4809 with this, finally...
4805
4810
4806 * Small documentation updates.
4811 * Small documentation updates.
4807
4812
4808 * Created the Extensions directory under IPython (with an
4813 * Created the Extensions directory under IPython (with an
4809 __init__.py). Put the PhysicalQ stuff there. This directory should
4814 __init__.py). Put the PhysicalQ stuff there. This directory should
4810 be used for all special-purpose extensions.
4815 be used for all special-purpose extensions.
4811
4816
4812 * File renaming:
4817 * File renaming:
4813 ipythonlib --> ipmaker
4818 ipythonlib --> ipmaker
4814 ipplib --> iplib
4819 ipplib --> iplib
4815 This makes a bit more sense in terms of what these files actually do.
4820 This makes a bit more sense in terms of what these files actually do.
4816
4821
4817 * Moved all the classes and functions in ipythonlib to ipplib, so
4822 * Moved all the classes and functions in ipythonlib to ipplib, so
4818 now ipythonlib only has make_IPython(). This will ease up its
4823 now ipythonlib only has make_IPython(). This will ease up its
4819 splitting in smaller functional chunks later.
4824 splitting in smaller functional chunks later.
4820
4825
4821 * Cleaned up (done, I think) output of @whos. Better column
4826 * Cleaned up (done, I think) output of @whos. Better column
4822 formatting, and now shows str(var) for as much as it can, which is
4827 formatting, and now shows str(var) for as much as it can, which is
4823 typically what one gets with a 'print var'.
4828 typically what one gets with a 'print var'.
4824
4829
4825 2001-12-04 Fernando Perez <fperez@colorado.edu>
4830 2001-12-04 Fernando Perez <fperez@colorado.edu>
4826
4831
4827 * Fixed namespace problems. Now builtin/IPyhton/user names get
4832 * Fixed namespace problems. Now builtin/IPyhton/user names get
4828 properly reported in their namespace. Internal namespace handling
4833 properly reported in their namespace. Internal namespace handling
4829 is finally getting decent (not perfect yet, but much better than
4834 is finally getting decent (not perfect yet, but much better than
4830 the ad-hoc mess we had).
4835 the ad-hoc mess we had).
4831
4836
4832 * Removed -exit option. If people just want to run a python
4837 * Removed -exit option. If people just want to run a python
4833 script, that's what the normal interpreter is for. Less
4838 script, that's what the normal interpreter is for. Less
4834 unnecessary options, less chances for bugs.
4839 unnecessary options, less chances for bugs.
4835
4840
4836 * Added a crash handler which generates a complete post-mortem if
4841 * Added a crash handler which generates a complete post-mortem if
4837 IPython crashes. This will help a lot in tracking bugs down the
4842 IPython crashes. This will help a lot in tracking bugs down the
4838 road.
4843 road.
4839
4844
4840 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4845 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
4841 which were boud to functions being reassigned would bypass the
4846 which were boud to functions being reassigned would bypass the
4842 logger, breaking the sync of _il with the prompt counter. This
4847 logger, breaking the sync of _il with the prompt counter. This
4843 would then crash IPython later when a new line was logged.
4848 would then crash IPython later when a new line was logged.
4844
4849
4845 2001-12-02 Fernando Perez <fperez@colorado.edu>
4850 2001-12-02 Fernando Perez <fperez@colorado.edu>
4846
4851
4847 * Made IPython a package. This means people don't have to clutter
4852 * Made IPython a package. This means people don't have to clutter
4848 their sys.path with yet another directory. Changed the INSTALL
4853 their sys.path with yet another directory. Changed the INSTALL
4849 file accordingly.
4854 file accordingly.
4850
4855
4851 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4856 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
4852 sorts its output (so @who shows it sorted) and @whos formats the
4857 sorts its output (so @who shows it sorted) and @whos formats the
4853 table according to the width of the first column. Nicer, easier to
4858 table according to the width of the first column. Nicer, easier to
4854 read. Todo: write a generic table_format() which takes a list of
4859 read. Todo: write a generic table_format() which takes a list of
4855 lists and prints it nicely formatted, with optional row/column
4860 lists and prints it nicely formatted, with optional row/column
4856 separators and proper padding and justification.
4861 separators and proper padding and justification.
4857
4862
4858 * Released 0.1.20
4863 * Released 0.1.20
4859
4864
4860 * Fixed bug in @log which would reverse the inputcache list (a
4865 * Fixed bug in @log which would reverse the inputcache list (a
4861 copy operation was missing).
4866 copy operation was missing).
4862
4867
4863 * Code cleanup. @config was changed to use page(). Better, since
4868 * Code cleanup. @config was changed to use page(). Better, since
4864 its output is always quite long.
4869 its output is always quite long.
4865
4870
4866 * Itpl is back as a dependency. I was having too many problems
4871 * Itpl is back as a dependency. I was having too many problems
4867 getting the parametric aliases to work reliably, and it's just
4872 getting the parametric aliases to work reliably, and it's just
4868 easier to code weird string operations with it than playing %()s
4873 easier to code weird string operations with it than playing %()s
4869 games. It's only ~6k, so I don't think it's too big a deal.
4874 games. It's only ~6k, so I don't think it's too big a deal.
4870
4875
4871 * Found (and fixed) a very nasty bug with history. !lines weren't
4876 * Found (and fixed) a very nasty bug with history. !lines weren't
4872 getting cached, and the out of sync caches would crash
4877 getting cached, and the out of sync caches would crash
4873 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4878 IPython. Fixed it by reorganizing the prefilter/handlers/logger
4874 division of labor a bit better. Bug fixed, cleaner structure.
4879 division of labor a bit better. Bug fixed, cleaner structure.
4875
4880
4876 2001-12-01 Fernando Perez <fperez@colorado.edu>
4881 2001-12-01 Fernando Perez <fperez@colorado.edu>
4877
4882
4878 * Released 0.1.19
4883 * Released 0.1.19
4879
4884
4880 * Added option -n to @hist to prevent line number printing. Much
4885 * Added option -n to @hist to prevent line number printing. Much
4881 easier to copy/paste code this way.
4886 easier to copy/paste code this way.
4882
4887
4883 * Created global _il to hold the input list. Allows easy
4888 * Created global _il to hold the input list. Allows easy
4884 re-execution of blocks of code by slicing it (inspired by Janko's
4889 re-execution of blocks of code by slicing it (inspired by Janko's
4885 comment on 'macros').
4890 comment on 'macros').
4886
4891
4887 * Small fixes and doc updates.
4892 * Small fixes and doc updates.
4888
4893
4889 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4894 * Rewrote @history function (was @h). Renamed it to @hist, @h is
4890 much too fragile with automagic. Handles properly multi-line
4895 much too fragile with automagic. Handles properly multi-line
4891 statements and takes parameters.
4896 statements and takes parameters.
4892
4897
4893 2001-11-30 Fernando Perez <fperez@colorado.edu>
4898 2001-11-30 Fernando Perez <fperez@colorado.edu>
4894
4899
4895 * Version 0.1.18 released.
4900 * Version 0.1.18 released.
4896
4901
4897 * Fixed nasty namespace bug in initial module imports.
4902 * Fixed nasty namespace bug in initial module imports.
4898
4903
4899 * Added copyright/license notes to all code files (except
4904 * Added copyright/license notes to all code files (except
4900 DPyGetOpt). For the time being, LGPL. That could change.
4905 DPyGetOpt). For the time being, LGPL. That could change.
4901
4906
4902 * Rewrote a much nicer README, updated INSTALL, cleaned up
4907 * Rewrote a much nicer README, updated INSTALL, cleaned up
4903 ipythonrc-* samples.
4908 ipythonrc-* samples.
4904
4909
4905 * Overall code/documentation cleanup. Basically ready for
4910 * Overall code/documentation cleanup. Basically ready for
4906 release. Only remaining thing: licence decision (LGPL?).
4911 release. Only remaining thing: licence decision (LGPL?).
4907
4912
4908 * Converted load_config to a class, ConfigLoader. Now recursion
4913 * Converted load_config to a class, ConfigLoader. Now recursion
4909 control is better organized. Doesn't include the same file twice.
4914 control is better organized. Doesn't include the same file twice.
4910
4915
4911 2001-11-29 Fernando Perez <fperez@colorado.edu>
4916 2001-11-29 Fernando Perez <fperez@colorado.edu>
4912
4917
4913 * Got input history working. Changed output history variables from
4918 * Got input history working. Changed output history variables from
4914 _p to _o so that _i is for input and _o for output. Just cleaner
4919 _p to _o so that _i is for input and _o for output. Just cleaner
4915 convention.
4920 convention.
4916
4921
4917 * Implemented parametric aliases. This pretty much allows the
4922 * Implemented parametric aliases. This pretty much allows the
4918 alias system to offer full-blown shell convenience, I think.
4923 alias system to offer full-blown shell convenience, I think.
4919
4924
4920 * Version 0.1.17 released, 0.1.18 opened.
4925 * Version 0.1.17 released, 0.1.18 opened.
4921
4926
4922 * dot_ipython/ipythonrc (alias): added documentation.
4927 * dot_ipython/ipythonrc (alias): added documentation.
4923 (xcolor): Fixed small bug (xcolors -> xcolor)
4928 (xcolor): Fixed small bug (xcolors -> xcolor)
4924
4929
4925 * Changed the alias system. Now alias is a magic command to define
4930 * Changed the alias system. Now alias is a magic command to define
4926 aliases just like the shell. Rationale: the builtin magics should
4931 aliases just like the shell. Rationale: the builtin magics should
4927 be there for things deeply connected to IPython's
4932 be there for things deeply connected to IPython's
4928 architecture. And this is a much lighter system for what I think
4933 architecture. And this is a much lighter system for what I think
4929 is the really important feature: allowing users to define quickly
4934 is the really important feature: allowing users to define quickly
4930 magics that will do shell things for them, so they can customize
4935 magics that will do shell things for them, so they can customize
4931 IPython easily to match their work habits. If someone is really
4936 IPython easily to match their work habits. If someone is really
4932 desperate to have another name for a builtin alias, they can
4937 desperate to have another name for a builtin alias, they can
4933 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4938 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
4934 works.
4939 works.
4935
4940
4936 2001-11-28 Fernando Perez <fperez@colorado.edu>
4941 2001-11-28 Fernando Perez <fperez@colorado.edu>
4937
4942
4938 * Changed @file so that it opens the source file at the proper
4943 * Changed @file so that it opens the source file at the proper
4939 line. Since it uses less, if your EDITOR environment is
4944 line. Since it uses less, if your EDITOR environment is
4940 configured, typing v will immediately open your editor of choice
4945 configured, typing v will immediately open your editor of choice
4941 right at the line where the object is defined. Not as quick as
4946 right at the line where the object is defined. Not as quick as
4942 having a direct @edit command, but for all intents and purposes it
4947 having a direct @edit command, but for all intents and purposes it
4943 works. And I don't have to worry about writing @edit to deal with
4948 works. And I don't have to worry about writing @edit to deal with
4944 all the editors, less does that.
4949 all the editors, less does that.
4945
4950
4946 * Version 0.1.16 released, 0.1.17 opened.
4951 * Version 0.1.16 released, 0.1.17 opened.
4947
4952
4948 * Fixed some nasty bugs in the page/page_dumb combo that could
4953 * Fixed some nasty bugs in the page/page_dumb combo that could
4949 crash IPython.
4954 crash IPython.
4950
4955
4951 2001-11-27 Fernando Perez <fperez@colorado.edu>
4956 2001-11-27 Fernando Perez <fperez@colorado.edu>
4952
4957
4953 * Version 0.1.15 released, 0.1.16 opened.
4958 * Version 0.1.15 released, 0.1.16 opened.
4954
4959
4955 * Finally got ? and ?? to work for undefined things: now it's
4960 * Finally got ? and ?? to work for undefined things: now it's
4956 possible to type {}.get? and get information about the get method
4961 possible to type {}.get? and get information about the get method
4957 of dicts, or os.path? even if only os is defined (so technically
4962 of dicts, or os.path? even if only os is defined (so technically
4958 os.path isn't). Works at any level. For example, after import os,
4963 os.path isn't). Works at any level. For example, after import os,
4959 os?, os.path?, os.path.abspath? all work. This is great, took some
4964 os?, os.path?, os.path.abspath? all work. This is great, took some
4960 work in _ofind.
4965 work in _ofind.
4961
4966
4962 * Fixed more bugs with logging. The sanest way to do it was to add
4967 * Fixed more bugs with logging. The sanest way to do it was to add
4963 to @log a 'mode' parameter. Killed two in one shot (this mode
4968 to @log a 'mode' parameter. Killed two in one shot (this mode
4964 option was a request of Janko's). I think it's finally clean
4969 option was a request of Janko's). I think it's finally clean
4965 (famous last words).
4970 (famous last words).
4966
4971
4967 * Added a page_dumb() pager which does a decent job of paging on
4972 * Added a page_dumb() pager which does a decent job of paging on
4968 screen, if better things (like less) aren't available. One less
4973 screen, if better things (like less) aren't available. One less
4969 unix dependency (someday maybe somebody will port this to
4974 unix dependency (someday maybe somebody will port this to
4970 windows).
4975 windows).
4971
4976
4972 * Fixed problem in magic_log: would lock of logging out if log
4977 * Fixed problem in magic_log: would lock of logging out if log
4973 creation failed (because it would still think it had succeeded).
4978 creation failed (because it would still think it had succeeded).
4974
4979
4975 * Improved the page() function using curses to auto-detect screen
4980 * Improved the page() function using curses to auto-detect screen
4976 size. Now it can make a much better decision on whether to print
4981 size. Now it can make a much better decision on whether to print
4977 or page a string. Option screen_length was modified: a value 0
4982 or page a string. Option screen_length was modified: a value 0
4978 means auto-detect, and that's the default now.
4983 means auto-detect, and that's the default now.
4979
4984
4980 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4985 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
4981 go out. I'll test it for a few days, then talk to Janko about
4986 go out. I'll test it for a few days, then talk to Janko about
4982 licences and announce it.
4987 licences and announce it.
4983
4988
4984 * Fixed the length of the auto-generated ---> prompt which appears
4989 * Fixed the length of the auto-generated ---> prompt which appears
4985 for auto-parens and auto-quotes. Getting this right isn't trivial,
4990 for auto-parens and auto-quotes. Getting this right isn't trivial,
4986 with all the color escapes, different prompt types and optional
4991 with all the color escapes, different prompt types and optional
4987 separators. But it seems to be working in all the combinations.
4992 separators. But it seems to be working in all the combinations.
4988
4993
4989 2001-11-26 Fernando Perez <fperez@colorado.edu>
4994 2001-11-26 Fernando Perez <fperez@colorado.edu>
4990
4995
4991 * Wrote a regexp filter to get option types from the option names
4996 * Wrote a regexp filter to get option types from the option names
4992 string. This eliminates the need to manually keep two duplicate
4997 string. This eliminates the need to manually keep two duplicate
4993 lists.
4998 lists.
4994
4999
4995 * Removed the unneeded check_option_names. Now options are handled
5000 * Removed the unneeded check_option_names. Now options are handled
4996 in a much saner manner and it's easy to visually check that things
5001 in a much saner manner and it's easy to visually check that things
4997 are ok.
5002 are ok.
4998
5003
4999 * Updated version numbers on all files I modified to carry a
5004 * Updated version numbers on all files I modified to carry a
5000 notice so Janko and Nathan have clear version markers.
5005 notice so Janko and Nathan have clear version markers.
5001
5006
5002 * Updated docstring for ultraTB with my changes. I should send
5007 * Updated docstring for ultraTB with my changes. I should send
5003 this to Nathan.
5008 this to Nathan.
5004
5009
5005 * Lots of small fixes. Ran everything through pychecker again.
5010 * Lots of small fixes. Ran everything through pychecker again.
5006
5011
5007 * Made loading of deep_reload an cmd line option. If it's not too
5012 * Made loading of deep_reload an cmd line option. If it's not too
5008 kosher, now people can just disable it. With -nodeep_reload it's
5013 kosher, now people can just disable it. With -nodeep_reload it's
5009 still available as dreload(), it just won't overwrite reload().
5014 still available as dreload(), it just won't overwrite reload().
5010
5015
5011 * Moved many options to the no| form (-opt and -noopt
5016 * Moved many options to the no| form (-opt and -noopt
5012 accepted). Cleaner.
5017 accepted). Cleaner.
5013
5018
5014 * Changed magic_log so that if called with no parameters, it uses
5019 * Changed magic_log so that if called with no parameters, it uses
5015 'rotate' mode. That way auto-generated logs aren't automatically
5020 'rotate' mode. That way auto-generated logs aren't automatically
5016 over-written. For normal logs, now a backup is made if it exists
5021 over-written. For normal logs, now a backup is made if it exists
5017 (only 1 level of backups). A new 'backup' mode was added to the
5022 (only 1 level of backups). A new 'backup' mode was added to the
5018 Logger class to support this. This was a request by Janko.
5023 Logger class to support this. This was a request by Janko.
5019
5024
5020 * Added @logoff/@logon to stop/restart an active log.
5025 * Added @logoff/@logon to stop/restart an active log.
5021
5026
5022 * Fixed a lot of bugs in log saving/replay. It was pretty
5027 * Fixed a lot of bugs in log saving/replay. It was pretty
5023 broken. Now special lines (!@,/) appear properly in the command
5028 broken. Now special lines (!@,/) appear properly in the command
5024 history after a log replay.
5029 history after a log replay.
5025
5030
5026 * Tried and failed to implement full session saving via pickle. My
5031 * Tried and failed to implement full session saving via pickle. My
5027 idea was to pickle __main__.__dict__, but modules can't be
5032 idea was to pickle __main__.__dict__, but modules can't be
5028 pickled. This would be a better alternative to replaying logs, but
5033 pickled. This would be a better alternative to replaying logs, but
5029 seems quite tricky to get to work. Changed -session to be called
5034 seems quite tricky to get to work. Changed -session to be called
5030 -logplay, which more accurately reflects what it does. And if we
5035 -logplay, which more accurately reflects what it does. And if we
5031 ever get real session saving working, -session is now available.
5036 ever get real session saving working, -session is now available.
5032
5037
5033 * Implemented color schemes for prompts also. As for tracebacks,
5038 * Implemented color schemes for prompts also. As for tracebacks,
5034 currently only NoColor and Linux are supported. But now the
5039 currently only NoColor and Linux are supported. But now the
5035 infrastructure is in place, based on a generic ColorScheme
5040 infrastructure is in place, based on a generic ColorScheme
5036 class. So writing and activating new schemes both for the prompts
5041 class. So writing and activating new schemes both for the prompts
5037 and the tracebacks should be straightforward.
5042 and the tracebacks should be straightforward.
5038
5043
5039 * Version 0.1.13 released, 0.1.14 opened.
5044 * Version 0.1.13 released, 0.1.14 opened.
5040
5045
5041 * Changed handling of options for output cache. Now counter is
5046 * Changed handling of options for output cache. Now counter is
5042 hardwired starting at 1 and one specifies the maximum number of
5047 hardwired starting at 1 and one specifies the maximum number of
5043 entries *in the outcache* (not the max prompt counter). This is
5048 entries *in the outcache* (not the max prompt counter). This is
5044 much better, since many statements won't increase the cache
5049 much better, since many statements won't increase the cache
5045 count. It also eliminated some confusing options, now there's only
5050 count. It also eliminated some confusing options, now there's only
5046 one: cache_size.
5051 one: cache_size.
5047
5052
5048 * Added 'alias' magic function and magic_alias option in the
5053 * Added 'alias' magic function and magic_alias option in the
5049 ipythonrc file. Now the user can easily define whatever names he
5054 ipythonrc file. Now the user can easily define whatever names he
5050 wants for the magic functions without having to play weird
5055 wants for the magic functions without having to play weird
5051 namespace games. This gives IPython a real shell-like feel.
5056 namespace games. This gives IPython a real shell-like feel.
5052
5057
5053 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5058 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5054 @ or not).
5059 @ or not).
5055
5060
5056 This was one of the last remaining 'visible' bugs (that I know
5061 This was one of the last remaining 'visible' bugs (that I know
5057 of). I think if I can clean up the session loading so it works
5062 of). I think if I can clean up the session loading so it works
5058 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5063 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5059 about licensing).
5064 about licensing).
5060
5065
5061 2001-11-25 Fernando Perez <fperez@colorado.edu>
5066 2001-11-25 Fernando Perez <fperez@colorado.edu>
5062
5067
5063 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5068 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5064 there's a cleaner distinction between what ? and ?? show.
5069 there's a cleaner distinction between what ? and ?? show.
5065
5070
5066 * Added screen_length option. Now the user can define his own
5071 * Added screen_length option. Now the user can define his own
5067 screen size for page() operations.
5072 screen size for page() operations.
5068
5073
5069 * Implemented magic shell-like functions with automatic code
5074 * Implemented magic shell-like functions with automatic code
5070 generation. Now adding another function is just a matter of adding
5075 generation. Now adding another function is just a matter of adding
5071 an entry to a dict, and the function is dynamically generated at
5076 an entry to a dict, and the function is dynamically generated at
5072 run-time. Python has some really cool features!
5077 run-time. Python has some really cool features!
5073
5078
5074 * Renamed many options to cleanup conventions a little. Now all
5079 * Renamed many options to cleanup conventions a little. Now all
5075 are lowercase, and only underscores where needed. Also in the code
5080 are lowercase, and only underscores where needed. Also in the code
5076 option name tables are clearer.
5081 option name tables are clearer.
5077
5082
5078 * Changed prompts a little. Now input is 'In [n]:' instead of
5083 * Changed prompts a little. Now input is 'In [n]:' instead of
5079 'In[n]:='. This allows it the numbers to be aligned with the
5084 'In[n]:='. This allows it the numbers to be aligned with the
5080 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5085 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5081 Python (it was a Mathematica thing). The '...' continuation prompt
5086 Python (it was a Mathematica thing). The '...' continuation prompt
5082 was also changed a little to align better.
5087 was also changed a little to align better.
5083
5088
5084 * Fixed bug when flushing output cache. Not all _p<n> variables
5089 * Fixed bug when flushing output cache. Not all _p<n> variables
5085 exist, so their deletion needs to be wrapped in a try:
5090 exist, so their deletion needs to be wrapped in a try:
5086
5091
5087 * Figured out how to properly use inspect.formatargspec() (it
5092 * Figured out how to properly use inspect.formatargspec() (it
5088 requires the args preceded by *). So I removed all the code from
5093 requires the args preceded by *). So I removed all the code from
5089 _get_pdef in Magic, which was just replicating that.
5094 _get_pdef in Magic, which was just replicating that.
5090
5095
5091 * Added test to prefilter to allow redefining magic function names
5096 * Added test to prefilter to allow redefining magic function names
5092 as variables. This is ok, since the @ form is always available,
5097 as variables. This is ok, since the @ form is always available,
5093 but whe should allow the user to define a variable called 'ls' if
5098 but whe should allow the user to define a variable called 'ls' if
5094 he needs it.
5099 he needs it.
5095
5100
5096 * Moved the ToDo information from README into a separate ToDo.
5101 * Moved the ToDo information from README into a separate ToDo.
5097
5102
5098 * General code cleanup and small bugfixes. I think it's close to a
5103 * General code cleanup and small bugfixes. I think it's close to a
5099 state where it can be released, obviously with a big 'beta'
5104 state where it can be released, obviously with a big 'beta'
5100 warning on it.
5105 warning on it.
5101
5106
5102 * Got the magic function split to work. Now all magics are defined
5107 * Got the magic function split to work. Now all magics are defined
5103 in a separate class. It just organizes things a bit, and now
5108 in a separate class. It just organizes things a bit, and now
5104 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5109 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5105 was too long).
5110 was too long).
5106
5111
5107 * Changed @clear to @reset to avoid potential confusions with
5112 * Changed @clear to @reset to avoid potential confusions with
5108 the shell command clear. Also renamed @cl to @clear, which does
5113 the shell command clear. Also renamed @cl to @clear, which does
5109 exactly what people expect it to from their shell experience.
5114 exactly what people expect it to from their shell experience.
5110
5115
5111 Added a check to the @reset command (since it's so
5116 Added a check to the @reset command (since it's so
5112 destructive, it's probably a good idea to ask for confirmation).
5117 destructive, it's probably a good idea to ask for confirmation).
5113 But now reset only works for full namespace resetting. Since the
5118 But now reset only works for full namespace resetting. Since the
5114 del keyword is already there for deleting a few specific
5119 del keyword is already there for deleting a few specific
5115 variables, I don't see the point of having a redundant magic
5120 variables, I don't see the point of having a redundant magic
5116 function for the same task.
5121 function for the same task.
5117
5122
5118 2001-11-24 Fernando Perez <fperez@colorado.edu>
5123 2001-11-24 Fernando Perez <fperez@colorado.edu>
5119
5124
5120 * Updated the builtin docs (esp. the ? ones).
5125 * Updated the builtin docs (esp. the ? ones).
5121
5126
5122 * Ran all the code through pychecker. Not terribly impressed with
5127 * Ran all the code through pychecker. Not terribly impressed with
5123 it: lots of spurious warnings and didn't really find anything of
5128 it: lots of spurious warnings and didn't really find anything of
5124 substance (just a few modules being imported and not used).
5129 substance (just a few modules being imported and not used).
5125
5130
5126 * Implemented the new ultraTB functionality into IPython. New
5131 * Implemented the new ultraTB functionality into IPython. New
5127 option: xcolors. This chooses color scheme. xmode now only selects
5132 option: xcolors. This chooses color scheme. xmode now only selects
5128 between Plain and Verbose. Better orthogonality.
5133 between Plain and Verbose. Better orthogonality.
5129
5134
5130 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5135 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5131 mode and color scheme for the exception handlers. Now it's
5136 mode and color scheme for the exception handlers. Now it's
5132 possible to have the verbose traceback with no coloring.
5137 possible to have the verbose traceback with no coloring.
5133
5138
5134 2001-11-23 Fernando Perez <fperez@colorado.edu>
5139 2001-11-23 Fernando Perez <fperez@colorado.edu>
5135
5140
5136 * Version 0.1.12 released, 0.1.13 opened.
5141 * Version 0.1.12 released, 0.1.13 opened.
5137
5142
5138 * Removed option to set auto-quote and auto-paren escapes by
5143 * Removed option to set auto-quote and auto-paren escapes by
5139 user. The chances of breaking valid syntax are just too high. If
5144 user. The chances of breaking valid syntax are just too high. If
5140 someone *really* wants, they can always dig into the code.
5145 someone *really* wants, they can always dig into the code.
5141
5146
5142 * Made prompt separators configurable.
5147 * Made prompt separators configurable.
5143
5148
5144 2001-11-22 Fernando Perez <fperez@colorado.edu>
5149 2001-11-22 Fernando Perez <fperez@colorado.edu>
5145
5150
5146 * Small bugfixes in many places.
5151 * Small bugfixes in many places.
5147
5152
5148 * Removed the MyCompleter class from ipplib. It seemed redundant
5153 * Removed the MyCompleter class from ipplib. It seemed redundant
5149 with the C-p,C-n history search functionality. Less code to
5154 with the C-p,C-n history search functionality. Less code to
5150 maintain.
5155 maintain.
5151
5156
5152 * Moved all the original ipython.py code into ipythonlib.py. Right
5157 * Moved all the original ipython.py code into ipythonlib.py. Right
5153 now it's just one big dump into a function called make_IPython, so
5158 now it's just one big dump into a function called make_IPython, so
5154 no real modularity has been gained. But at least it makes the
5159 no real modularity has been gained. But at least it makes the
5155 wrapper script tiny, and since ipythonlib is a module, it gets
5160 wrapper script tiny, and since ipythonlib is a module, it gets
5156 compiled and startup is much faster.
5161 compiled and startup is much faster.
5157
5162
5158 This is a reasobably 'deep' change, so we should test it for a
5163 This is a reasobably 'deep' change, so we should test it for a
5159 while without messing too much more with the code.
5164 while without messing too much more with the code.
5160
5165
5161 2001-11-21 Fernando Perez <fperez@colorado.edu>
5166 2001-11-21 Fernando Perez <fperez@colorado.edu>
5162
5167
5163 * Version 0.1.11 released, 0.1.12 opened for further work.
5168 * Version 0.1.11 released, 0.1.12 opened for further work.
5164
5169
5165 * Removed dependency on Itpl. It was only needed in one place. It
5170 * Removed dependency on Itpl. It was only needed in one place. It
5166 would be nice if this became part of python, though. It makes life
5171 would be nice if this became part of python, though. It makes life
5167 *a lot* easier in some cases.
5172 *a lot* easier in some cases.
5168
5173
5169 * Simplified the prefilter code a bit. Now all handlers are
5174 * Simplified the prefilter code a bit. Now all handlers are
5170 expected to explicitly return a value (at least a blank string).
5175 expected to explicitly return a value (at least a blank string).
5171
5176
5172 * Heavy edits in ipplib. Removed the help system altogether. Now
5177 * Heavy edits in ipplib. Removed the help system altogether. Now
5173 obj?/?? is used for inspecting objects, a magic @doc prints
5178 obj?/?? is used for inspecting objects, a magic @doc prints
5174 docstrings, and full-blown Python help is accessed via the 'help'
5179 docstrings, and full-blown Python help is accessed via the 'help'
5175 keyword. This cleans up a lot of code (less to maintain) and does
5180 keyword. This cleans up a lot of code (less to maintain) and does
5176 the job. Since 'help' is now a standard Python component, might as
5181 the job. Since 'help' is now a standard Python component, might as
5177 well use it and remove duplicate functionality.
5182 well use it and remove duplicate functionality.
5178
5183
5179 Also removed the option to use ipplib as a standalone program. By
5184 Also removed the option to use ipplib as a standalone program. By
5180 now it's too dependent on other parts of IPython to function alone.
5185 now it's too dependent on other parts of IPython to function alone.
5181
5186
5182 * Fixed bug in genutils.pager. It would crash if the pager was
5187 * Fixed bug in genutils.pager. It would crash if the pager was
5183 exited immediately after opening (broken pipe).
5188 exited immediately after opening (broken pipe).
5184
5189
5185 * Trimmed down the VerboseTB reporting a little. The header is
5190 * Trimmed down the VerboseTB reporting a little. The header is
5186 much shorter now and the repeated exception arguments at the end
5191 much shorter now and the repeated exception arguments at the end
5187 have been removed. For interactive use the old header seemed a bit
5192 have been removed. For interactive use the old header seemed a bit
5188 excessive.
5193 excessive.
5189
5194
5190 * Fixed small bug in output of @whos for variables with multi-word
5195 * Fixed small bug in output of @whos for variables with multi-word
5191 types (only first word was displayed).
5196 types (only first word was displayed).
5192
5197
5193 2001-11-17 Fernando Perez <fperez@colorado.edu>
5198 2001-11-17 Fernando Perez <fperez@colorado.edu>
5194
5199
5195 * Version 0.1.10 released, 0.1.11 opened for further work.
5200 * Version 0.1.10 released, 0.1.11 opened for further work.
5196
5201
5197 * Modified dirs and friends. dirs now *returns* the stack (not
5202 * Modified dirs and friends. dirs now *returns* the stack (not
5198 prints), so one can manipulate it as a variable. Convenient to
5203 prints), so one can manipulate it as a variable. Convenient to
5199 travel along many directories.
5204 travel along many directories.
5200
5205
5201 * Fixed bug in magic_pdef: would only work with functions with
5206 * Fixed bug in magic_pdef: would only work with functions with
5202 arguments with default values.
5207 arguments with default values.
5203
5208
5204 2001-11-14 Fernando Perez <fperez@colorado.edu>
5209 2001-11-14 Fernando Perez <fperez@colorado.edu>
5205
5210
5206 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5211 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5207 example with IPython. Various other minor fixes and cleanups.
5212 example with IPython. Various other minor fixes and cleanups.
5208
5213
5209 * Version 0.1.9 released, 0.1.10 opened for further work.
5214 * Version 0.1.9 released, 0.1.10 opened for further work.
5210
5215
5211 * Added sys.path to the list of directories searched in the
5216 * Added sys.path to the list of directories searched in the
5212 execfile= option. It used to be the current directory and the
5217 execfile= option. It used to be the current directory and the
5213 user's IPYTHONDIR only.
5218 user's IPYTHONDIR only.
5214
5219
5215 2001-11-13 Fernando Perez <fperez@colorado.edu>
5220 2001-11-13 Fernando Perez <fperez@colorado.edu>
5216
5221
5217 * Reinstated the raw_input/prefilter separation that Janko had
5222 * Reinstated the raw_input/prefilter separation that Janko had
5218 initially. This gives a more convenient setup for extending the
5223 initially. This gives a more convenient setup for extending the
5219 pre-processor from the outside: raw_input always gets a string,
5224 pre-processor from the outside: raw_input always gets a string,
5220 and prefilter has to process it. We can then redefine prefilter
5225 and prefilter has to process it. We can then redefine prefilter
5221 from the outside and implement extensions for special
5226 from the outside and implement extensions for special
5222 purposes.
5227 purposes.
5223
5228
5224 Today I got one for inputting PhysicalQuantity objects
5229 Today I got one for inputting PhysicalQuantity objects
5225 (from Scientific) without needing any function calls at
5230 (from Scientific) without needing any function calls at
5226 all. Extremely convenient, and it's all done as a user-level
5231 all. Extremely convenient, and it's all done as a user-level
5227 extension (no IPython code was touched). Now instead of:
5232 extension (no IPython code was touched). Now instead of:
5228 a = PhysicalQuantity(4.2,'m/s**2')
5233 a = PhysicalQuantity(4.2,'m/s**2')
5229 one can simply say
5234 one can simply say
5230 a = 4.2 m/s**2
5235 a = 4.2 m/s**2
5231 or even
5236 or even
5232 a = 4.2 m/s^2
5237 a = 4.2 m/s^2
5233
5238
5234 I use this, but it's also a proof of concept: IPython really is
5239 I use this, but it's also a proof of concept: IPython really is
5235 fully user-extensible, even at the level of the parsing of the
5240 fully user-extensible, even at the level of the parsing of the
5236 command line. It's not trivial, but it's perfectly doable.
5241 command line. It's not trivial, but it's perfectly doable.
5237
5242
5238 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5243 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5239 the problem of modules being loaded in the inverse order in which
5244 the problem of modules being loaded in the inverse order in which
5240 they were defined in
5245 they were defined in
5241
5246
5242 * Version 0.1.8 released, 0.1.9 opened for further work.
5247 * Version 0.1.8 released, 0.1.9 opened for further work.
5243
5248
5244 * Added magics pdef, source and file. They respectively show the
5249 * Added magics pdef, source and file. They respectively show the
5245 definition line ('prototype' in C), source code and full python
5250 definition line ('prototype' in C), source code and full python
5246 file for any callable object. The object inspector oinfo uses
5251 file for any callable object. The object inspector oinfo uses
5247 these to show the same information.
5252 these to show the same information.
5248
5253
5249 * Version 0.1.7 released, 0.1.8 opened for further work.
5254 * Version 0.1.7 released, 0.1.8 opened for further work.
5250
5255
5251 * Separated all the magic functions into a class called Magic. The
5256 * Separated all the magic functions into a class called Magic. The
5252 InteractiveShell class was becoming too big for Xemacs to handle
5257 InteractiveShell class was becoming too big for Xemacs to handle
5253 (de-indenting a line would lock it up for 10 seconds while it
5258 (de-indenting a line would lock it up for 10 seconds while it
5254 backtracked on the whole class!)
5259 backtracked on the whole class!)
5255
5260
5256 FIXME: didn't work. It can be done, but right now namespaces are
5261 FIXME: didn't work. It can be done, but right now namespaces are
5257 all messed up. Do it later (reverted it for now, so at least
5262 all messed up. Do it later (reverted it for now, so at least
5258 everything works as before).
5263 everything works as before).
5259
5264
5260 * Got the object introspection system (magic_oinfo) working! I
5265 * Got the object introspection system (magic_oinfo) working! I
5261 think this is pretty much ready for release to Janko, so he can
5266 think this is pretty much ready for release to Janko, so he can
5262 test it for a while and then announce it. Pretty much 100% of what
5267 test it for a while and then announce it. Pretty much 100% of what
5263 I wanted for the 'phase 1' release is ready. Happy, tired.
5268 I wanted for the 'phase 1' release is ready. Happy, tired.
5264
5269
5265 2001-11-12 Fernando Perez <fperez@colorado.edu>
5270 2001-11-12 Fernando Perez <fperez@colorado.edu>
5266
5271
5267 * Version 0.1.6 released, 0.1.7 opened for further work.
5272 * Version 0.1.6 released, 0.1.7 opened for further work.
5268
5273
5269 * Fixed bug in printing: it used to test for truth before
5274 * Fixed bug in printing: it used to test for truth before
5270 printing, so 0 wouldn't print. Now checks for None.
5275 printing, so 0 wouldn't print. Now checks for None.
5271
5276
5272 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5277 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5273 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5278 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5274 reaches by hand into the outputcache. Think of a better way to do
5279 reaches by hand into the outputcache. Think of a better way to do
5275 this later.
5280 this later.
5276
5281
5277 * Various small fixes thanks to Nathan's comments.
5282 * Various small fixes thanks to Nathan's comments.
5278
5283
5279 * Changed magic_pprint to magic_Pprint. This way it doesn't
5284 * Changed magic_pprint to magic_Pprint. This way it doesn't
5280 collide with pprint() and the name is consistent with the command
5285 collide with pprint() and the name is consistent with the command
5281 line option.
5286 line option.
5282
5287
5283 * Changed prompt counter behavior to be fully like
5288 * Changed prompt counter behavior to be fully like
5284 Mathematica's. That is, even input that doesn't return a result
5289 Mathematica's. That is, even input that doesn't return a result
5285 raises the prompt counter. The old behavior was kind of confusing
5290 raises the prompt counter. The old behavior was kind of confusing
5286 (getting the same prompt number several times if the operation
5291 (getting the same prompt number several times if the operation
5287 didn't return a result).
5292 didn't return a result).
5288
5293
5289 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5294 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5290
5295
5291 * Fixed -Classic mode (wasn't working anymore).
5296 * Fixed -Classic mode (wasn't working anymore).
5292
5297
5293 * Added colored prompts using Nathan's new code. Colors are
5298 * Added colored prompts using Nathan's new code. Colors are
5294 currently hardwired, they can be user-configurable. For
5299 currently hardwired, they can be user-configurable. For
5295 developers, they can be chosen in file ipythonlib.py, at the
5300 developers, they can be chosen in file ipythonlib.py, at the
5296 beginning of the CachedOutput class def.
5301 beginning of the CachedOutput class def.
5297
5302
5298 2001-11-11 Fernando Perez <fperez@colorado.edu>
5303 2001-11-11 Fernando Perez <fperez@colorado.edu>
5299
5304
5300 * Version 0.1.5 released, 0.1.6 opened for further work.
5305 * Version 0.1.5 released, 0.1.6 opened for further work.
5301
5306
5302 * Changed magic_env to *return* the environment as a dict (not to
5307 * Changed magic_env to *return* the environment as a dict (not to
5303 print it). This way it prints, but it can also be processed.
5308 print it). This way it prints, but it can also be processed.
5304
5309
5305 * Added Verbose exception reporting to interactive
5310 * Added Verbose exception reporting to interactive
5306 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5311 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5307 traceback. Had to make some changes to the ultraTB file. This is
5312 traceback. Had to make some changes to the ultraTB file. This is
5308 probably the last 'big' thing in my mental todo list. This ties
5313 probably the last 'big' thing in my mental todo list. This ties
5309 in with the next entry:
5314 in with the next entry:
5310
5315
5311 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5316 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5312 has to specify is Plain, Color or Verbose for all exception
5317 has to specify is Plain, Color or Verbose for all exception
5313 handling.
5318 handling.
5314
5319
5315 * Removed ShellServices option. All this can really be done via
5320 * Removed ShellServices option. All this can really be done via
5316 the magic system. It's easier to extend, cleaner and has automatic
5321 the magic system. It's easier to extend, cleaner and has automatic
5317 namespace protection and documentation.
5322 namespace protection and documentation.
5318
5323
5319 2001-11-09 Fernando Perez <fperez@colorado.edu>
5324 2001-11-09 Fernando Perez <fperez@colorado.edu>
5320
5325
5321 * Fixed bug in output cache flushing (missing parameter to
5326 * Fixed bug in output cache flushing (missing parameter to
5322 __init__). Other small bugs fixed (found using pychecker).
5327 __init__). Other small bugs fixed (found using pychecker).
5323
5328
5324 * Version 0.1.4 opened for bugfixing.
5329 * Version 0.1.4 opened for bugfixing.
5325
5330
5326 2001-11-07 Fernando Perez <fperez@colorado.edu>
5331 2001-11-07 Fernando Perez <fperez@colorado.edu>
5327
5332
5328 * Version 0.1.3 released, mainly because of the raw_input bug.
5333 * Version 0.1.3 released, mainly because of the raw_input bug.
5329
5334
5330 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5335 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5331 and when testing for whether things were callable, a call could
5336 and when testing for whether things were callable, a call could
5332 actually be made to certain functions. They would get called again
5337 actually be made to certain functions. They would get called again
5333 once 'really' executed, with a resulting double call. A disaster
5338 once 'really' executed, with a resulting double call. A disaster
5334 in many cases (list.reverse() would never work!).
5339 in many cases (list.reverse() would never work!).
5335
5340
5336 * Removed prefilter() function, moved its code to raw_input (which
5341 * Removed prefilter() function, moved its code to raw_input (which
5337 after all was just a near-empty caller for prefilter). This saves
5342 after all was just a near-empty caller for prefilter). This saves
5338 a function call on every prompt, and simplifies the class a tiny bit.
5343 a function call on every prompt, and simplifies the class a tiny bit.
5339
5344
5340 * Fix _ip to __ip name in magic example file.
5345 * Fix _ip to __ip name in magic example file.
5341
5346
5342 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5347 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5343 work with non-gnu versions of tar.
5348 work with non-gnu versions of tar.
5344
5349
5345 2001-11-06 Fernando Perez <fperez@colorado.edu>
5350 2001-11-06 Fernando Perez <fperez@colorado.edu>
5346
5351
5347 * Version 0.1.2. Just to keep track of the recent changes.
5352 * Version 0.1.2. Just to keep track of the recent changes.
5348
5353
5349 * Fixed nasty bug in output prompt routine. It used to check 'if
5354 * Fixed nasty bug in output prompt routine. It used to check 'if
5350 arg != None...'. Problem is, this fails if arg implements a
5355 arg != None...'. Problem is, this fails if arg implements a
5351 special comparison (__cmp__) which disallows comparing to
5356 special comparison (__cmp__) which disallows comparing to
5352 None. Found it when trying to use the PhysicalQuantity module from
5357 None. Found it when trying to use the PhysicalQuantity module from
5353 ScientificPython.
5358 ScientificPython.
5354
5359
5355 2001-11-05 Fernando Perez <fperez@colorado.edu>
5360 2001-11-05 Fernando Perez <fperez@colorado.edu>
5356
5361
5357 * Also added dirs. Now the pushd/popd/dirs family functions
5362 * Also added dirs. Now the pushd/popd/dirs family functions
5358 basically like the shell, with the added convenience of going home
5363 basically like the shell, with the added convenience of going home
5359 when called with no args.
5364 when called with no args.
5360
5365
5361 * pushd/popd slightly modified to mimic shell behavior more
5366 * pushd/popd slightly modified to mimic shell behavior more
5362 closely.
5367 closely.
5363
5368
5364 * Added env,pushd,popd from ShellServices as magic functions. I
5369 * Added env,pushd,popd from ShellServices as magic functions. I
5365 think the cleanest will be to port all desired functions from
5370 think the cleanest will be to port all desired functions from
5366 ShellServices as magics and remove ShellServices altogether. This
5371 ShellServices as magics and remove ShellServices altogether. This
5367 will provide a single, clean way of adding functionality
5372 will provide a single, clean way of adding functionality
5368 (shell-type or otherwise) to IP.
5373 (shell-type or otherwise) to IP.
5369
5374
5370 2001-11-04 Fernando Perez <fperez@colorado.edu>
5375 2001-11-04 Fernando Perez <fperez@colorado.edu>
5371
5376
5372 * Added .ipython/ directory to sys.path. This way users can keep
5377 * Added .ipython/ directory to sys.path. This way users can keep
5373 customizations there and access them via import.
5378 customizations there and access them via import.
5374
5379
5375 2001-11-03 Fernando Perez <fperez@colorado.edu>
5380 2001-11-03 Fernando Perez <fperez@colorado.edu>
5376
5381
5377 * Opened version 0.1.1 for new changes.
5382 * Opened version 0.1.1 for new changes.
5378
5383
5379 * Changed version number to 0.1.0: first 'public' release, sent to
5384 * Changed version number to 0.1.0: first 'public' release, sent to
5380 Nathan and Janko.
5385 Nathan and Janko.
5381
5386
5382 * Lots of small fixes and tweaks.
5387 * Lots of small fixes and tweaks.
5383
5388
5384 * Minor changes to whos format. Now strings are shown, snipped if
5389 * Minor changes to whos format. Now strings are shown, snipped if
5385 too long.
5390 too long.
5386
5391
5387 * Changed ShellServices to work on __main__ so they show up in @who
5392 * Changed ShellServices to work on __main__ so they show up in @who
5388
5393
5389 * Help also works with ? at the end of a line:
5394 * Help also works with ? at the end of a line:
5390 ?sin and sin?
5395 ?sin and sin?
5391 both produce the same effect. This is nice, as often I use the
5396 both produce the same effect. This is nice, as often I use the
5392 tab-complete to find the name of a method, but I used to then have
5397 tab-complete to find the name of a method, but I used to then have
5393 to go to the beginning of the line to put a ? if I wanted more
5398 to go to the beginning of the line to put a ? if I wanted more
5394 info. Now I can just add the ? and hit return. Convenient.
5399 info. Now I can just add the ? and hit return. Convenient.
5395
5400
5396 2001-11-02 Fernando Perez <fperez@colorado.edu>
5401 2001-11-02 Fernando Perez <fperez@colorado.edu>
5397
5402
5398 * Python version check (>=2.1) added.
5403 * Python version check (>=2.1) added.
5399
5404
5400 * Added LazyPython documentation. At this point the docs are quite
5405 * Added LazyPython documentation. At this point the docs are quite
5401 a mess. A cleanup is in order.
5406 a mess. A cleanup is in order.
5402
5407
5403 * Auto-installer created. For some bizarre reason, the zipfiles
5408 * Auto-installer created. For some bizarre reason, the zipfiles
5404 module isn't working on my system. So I made a tar version
5409 module isn't working on my system. So I made a tar version
5405 (hopefully the command line options in various systems won't kill
5410 (hopefully the command line options in various systems won't kill
5406 me).
5411 me).
5407
5412
5408 * Fixes to Struct in genutils. Now all dictionary-like methods are
5413 * Fixes to Struct in genutils. Now all dictionary-like methods are
5409 protected (reasonably).
5414 protected (reasonably).
5410
5415
5411 * Added pager function to genutils and changed ? to print usage
5416 * Added pager function to genutils and changed ? to print usage
5412 note through it (it was too long).
5417 note through it (it was too long).
5413
5418
5414 * Added the LazyPython functionality. Works great! I changed the
5419 * Added the LazyPython functionality. Works great! I changed the
5415 auto-quote escape to ';', it's on home row and next to '. But
5420 auto-quote escape to ';', it's on home row and next to '. But
5416 both auto-quote and auto-paren (still /) escapes are command-line
5421 both auto-quote and auto-paren (still /) escapes are command-line
5417 parameters.
5422 parameters.
5418
5423
5419
5424
5420 2001-11-01 Fernando Perez <fperez@colorado.edu>
5425 2001-11-01 Fernando Perez <fperez@colorado.edu>
5421
5426
5422 * Version changed to 0.0.7. Fairly large change: configuration now
5427 * Version changed to 0.0.7. Fairly large change: configuration now
5423 is all stored in a directory, by default .ipython. There, all
5428 is all stored in a directory, by default .ipython. There, all
5424 config files have normal looking names (not .names)
5429 config files have normal looking names (not .names)
5425
5430
5426 * Version 0.0.6 Released first to Lucas and Archie as a test
5431 * Version 0.0.6 Released first to Lucas and Archie as a test
5427 run. Since it's the first 'semi-public' release, change version to
5432 run. Since it's the first 'semi-public' release, change version to
5428 > 0.0.6 for any changes now.
5433 > 0.0.6 for any changes now.
5429
5434
5430 * Stuff I had put in the ipplib.py changelog:
5435 * Stuff I had put in the ipplib.py changelog:
5431
5436
5432 Changes to InteractiveShell:
5437 Changes to InteractiveShell:
5433
5438
5434 - Made the usage message a parameter.
5439 - Made the usage message a parameter.
5435
5440
5436 - Require the name of the shell variable to be given. It's a bit
5441 - Require the name of the shell variable to be given. It's a bit
5437 of a hack, but allows the name 'shell' not to be hardwire in the
5442 of a hack, but allows the name 'shell' not to be hardwire in the
5438 magic (@) handler, which is problematic b/c it requires
5443 magic (@) handler, which is problematic b/c it requires
5439 polluting the global namespace with 'shell'. This in turn is
5444 polluting the global namespace with 'shell'. This in turn is
5440 fragile: if a user redefines a variable called shell, things
5445 fragile: if a user redefines a variable called shell, things
5441 break.
5446 break.
5442
5447
5443 - magic @: all functions available through @ need to be defined
5448 - magic @: all functions available through @ need to be defined
5444 as magic_<name>, even though they can be called simply as
5449 as magic_<name>, even though they can be called simply as
5445 @<name>. This allows the special command @magic to gather
5450 @<name>. This allows the special command @magic to gather
5446 information automatically about all existing magic functions,
5451 information automatically about all existing magic functions,
5447 even if they are run-time user extensions, by parsing the shell
5452 even if they are run-time user extensions, by parsing the shell
5448 instance __dict__ looking for special magic_ names.
5453 instance __dict__ looking for special magic_ names.
5449
5454
5450 - mainloop: added *two* local namespace parameters. This allows
5455 - mainloop: added *two* local namespace parameters. This allows
5451 the class to differentiate between parameters which were there
5456 the class to differentiate between parameters which were there
5452 before and after command line initialization was processed. This
5457 before and after command line initialization was processed. This
5453 way, later @who can show things loaded at startup by the
5458 way, later @who can show things loaded at startup by the
5454 user. This trick was necessary to make session saving/reloading
5459 user. This trick was necessary to make session saving/reloading
5455 really work: ideally after saving/exiting/reloading a session,
5460 really work: ideally after saving/exiting/reloading a session,
5456 *everythin* should look the same, including the output of @who. I
5461 *everythin* should look the same, including the output of @who. I
5457 was only able to make this work with this double namespace
5462 was only able to make this work with this double namespace
5458 trick.
5463 trick.
5459
5464
5460 - added a header to the logfile which allows (almost) full
5465 - added a header to the logfile which allows (almost) full
5461 session restoring.
5466 session restoring.
5462
5467
5463 - prepend lines beginning with @ or !, with a and log
5468 - prepend lines beginning with @ or !, with a and log
5464 them. Why? !lines: may be useful to know what you did @lines:
5469 them. Why? !lines: may be useful to know what you did @lines:
5465 they may affect session state. So when restoring a session, at
5470 they may affect session state. So when restoring a session, at
5466 least inform the user of their presence. I couldn't quite get
5471 least inform the user of their presence. I couldn't quite get
5467 them to properly re-execute, but at least the user is warned.
5472 them to properly re-execute, but at least the user is warned.
5468
5473
5469 * Started ChangeLog.
5474 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now