##// END OF EJS Templates
Jorgen Cederlof's patch for storing multiline history entries...
vivainio -
Show More
@@ -1,2327 +1,2335 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 1365 2006-06-15 19:11:26Z vivainio $
9 $Id: iplib.py 1478 2006-07-26 14:20:44Z vivainio $
10 """
10 """
11
11
12 #*****************************************************************************
12 #*****************************************************************************
13 # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and
13 # Copyright (C) 2001 Janko Hauser <jhauser@zscout.de> and
14 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
14 # Copyright (C) 2001-2006 Fernando Perez. <fperez@colorado.edu>
15 #
15 #
16 # Distributed under the terms of the BSD License. The full license is in
16 # Distributed under the terms of the BSD License. The full license is in
17 # the file COPYING, distributed as part of this software.
17 # the file COPYING, distributed as part of this software.
18 #
18 #
19 # Note: this code originally subclassed code.InteractiveConsole from the
19 # Note: this code originally subclassed code.InteractiveConsole from the
20 # Python standard library. Over time, all of that class has been copied
20 # Python standard library. Over time, all of that class has been copied
21 # verbatim here for modifications which could not be accomplished by
21 # verbatim here for modifications which could not be accomplished by
22 # subclassing. At this point, there are no dependencies at all on the code
22 # subclassing. At this point, there are no dependencies at all on the code
23 # module anymore (it is not even imported). The Python License (sec. 2)
23 # module anymore (it is not even imported). The Python License (sec. 2)
24 # allows for this, but it's always nice to acknowledge credit where credit is
24 # allows for this, but it's always nice to acknowledge credit where credit is
25 # due.
25 # due.
26 #*****************************************************************************
26 #*****************************************************************************
27
27
28 #****************************************************************************
28 #****************************************************************************
29 # Modules and globals
29 # Modules and globals
30
30
31 from IPython import Release
31 from IPython import Release
32 __author__ = '%s <%s>\n%s <%s>' % \
32 __author__ = '%s <%s>\n%s <%s>' % \
33 ( Release.authors['Janko'] + Release.authors['Fernando'] )
33 ( Release.authors['Janko'] + Release.authors['Fernando'] )
34 __license__ = Release.license
34 __license__ = Release.license
35 __version__ = Release.version
35 __version__ = Release.version
36
36
37 # Python standard modules
37 # Python standard modules
38 import __main__
38 import __main__
39 import __builtin__
39 import __builtin__
40 import StringIO
40 import StringIO
41 import bdb
41 import bdb
42 import cPickle as pickle
42 import cPickle as pickle
43 import codeop
43 import codeop
44 import exceptions
44 import exceptions
45 import glob
45 import glob
46 import inspect
46 import inspect
47 import keyword
47 import keyword
48 import new
48 import new
49 import os
49 import os
50 import 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(self.var_expand(cmd),
453 getoutputerror(self.var_expand(cmd),
454 header='IPython system call: ',
454 header='IPython system call: ',
455 verbose=self.rc.system_verbose)
455 verbose=self.rc.system_verbose)
456
456
457 # RegExp for splitting line contents into pre-char//first
457 # RegExp for splitting line contents into pre-char//first
458 # word-method//rest. For clarity, each group in on one line.
458 # word-method//rest. For clarity, each group in on one line.
459
459
460 # WARNING: update the regexp if the above escapes are changed, as they
460 # WARNING: update the regexp if the above escapes are changed, as they
461 # are hardwired in.
461 # are hardwired in.
462
462
463 # Don't get carried away with trying to make the autocalling catch too
463 # Don't get carried away with trying to make the autocalling catch too
464 # much: it's better to be conservative rather than to trigger hidden
464 # much: it's better to be conservative rather than to trigger hidden
465 # evals() somewhere and end up causing side effects.
465 # evals() somewhere and end up causing side effects.
466
466
467 self.line_split = re.compile(r'^([\s*,;/])'
467 self.line_split = re.compile(r'^([\s*,;/])'
468 r'([\?\w\.]+\w*\s*)'
468 r'([\?\w\.]+\w*\s*)'
469 r'(\(?.*$)')
469 r'(\(?.*$)')
470
470
471 # Original re, keep around for a while in case changes break something
471 # Original re, keep around for a while in case changes break something
472 #self.line_split = re.compile(r'(^[\s*!\?%,/]?)'
472 #self.line_split = re.compile(r'(^[\s*!\?%,/]?)'
473 # r'(\s*[\?\w\.]+\w*\s*)'
473 # r'(\s*[\?\w\.]+\w*\s*)'
474 # r'(\(?.*$)')
474 # r'(\(?.*$)')
475
475
476 # RegExp to identify potential function names
476 # RegExp to identify potential function names
477 self.re_fun_name = re.compile(r'[a-zA-Z_]([a-zA-Z0-9_.]*) *$')
477 self.re_fun_name = re.compile(r'[a-zA-Z_]([a-zA-Z0-9_.]*) *$')
478
478
479 # RegExp to exclude strings with this start from autocalling. In
479 # RegExp to exclude strings with this start from autocalling. In
480 # particular, all binary operators should be excluded, so that if foo
480 # particular, all binary operators should be excluded, so that if foo
481 # is callable, foo OP bar doesn't become foo(OP bar), which is
481 # is callable, foo OP bar doesn't become foo(OP bar), which is
482 # invalid. The characters '!=()' don't need to be checked for, as the
482 # invalid. The characters '!=()' don't need to be checked for, as the
483 # _prefilter routine explicitely does so, to catch direct calls and
483 # _prefilter routine explicitely does so, to catch direct calls and
484 # rebindings of existing names.
484 # rebindings of existing names.
485
485
486 # Warning: the '-' HAS TO BE AT THE END of the first group, otherwise
486 # Warning: the '-' HAS TO BE AT THE END of the first group, otherwise
487 # it affects the rest of the group in square brackets.
487 # it affects the rest of the group in square brackets.
488 self.re_exclude_auto = re.compile(r'^[<>,&^\|\*/\+-]'
488 self.re_exclude_auto = re.compile(r'^[<>,&^\|\*/\+-]'
489 '|^is |^not |^in |^and |^or ')
489 '|^is |^not |^in |^and |^or ')
490
490
491 # try to catch also methods for stuff in lists/tuples/dicts: off
491 # try to catch also methods for stuff in lists/tuples/dicts: off
492 # (experimental). For this to work, the line_split regexp would need
492 # (experimental). For this to work, the line_split regexp would need
493 # to be modified so it wouldn't break things at '['. That line is
493 # to be modified so it wouldn't break things at '['. That line is
494 # nasty enough that I shouldn't change it until I can test it _well_.
494 # nasty enough that I shouldn't change it until I can test it _well_.
495 #self.re_fun_name = re.compile (r'[a-zA-Z_]([a-zA-Z0-9_.\[\]]*) ?$')
495 #self.re_fun_name = re.compile (r'[a-zA-Z_]([a-zA-Z0-9_.\[\]]*) ?$')
496
496
497 # keep track of where we started running (mainly for crash post-mortem)
497 # keep track of where we started running (mainly for crash post-mortem)
498 self.starting_dir = os.getcwd()
498 self.starting_dir = os.getcwd()
499
499
500 # Various switches which can be set
500 # Various switches which can be set
501 self.CACHELENGTH = 5000 # this is cheap, it's just text
501 self.CACHELENGTH = 5000 # this is cheap, it's just text
502 self.BANNER = "Python %(version)s on %(platform)s\n" % sys.__dict__
502 self.BANNER = "Python %(version)s on %(platform)s\n" % sys.__dict__
503 self.banner2 = banner2
503 self.banner2 = banner2
504
504
505 # TraceBack handlers:
505 # TraceBack handlers:
506
506
507 # Syntax error handler.
507 # Syntax error handler.
508 self.SyntaxTB = SyntaxTB(color_scheme='NoColor')
508 self.SyntaxTB = SyntaxTB(color_scheme='NoColor')
509
509
510 # The interactive one is initialized with an offset, meaning we always
510 # The interactive one is initialized with an offset, meaning we always
511 # want to remove the topmost item in the traceback, which is our own
511 # want to remove the topmost item in the traceback, which is our own
512 # internal code. Valid modes: ['Plain','Context','Verbose']
512 # internal code. Valid modes: ['Plain','Context','Verbose']
513 self.InteractiveTB = ultraTB.AutoFormattedTB(mode = 'Plain',
513 self.InteractiveTB = ultraTB.AutoFormattedTB(mode = 'Plain',
514 color_scheme='NoColor',
514 color_scheme='NoColor',
515 tb_offset = 1)
515 tb_offset = 1)
516
516
517 # IPython itself shouldn't crash. This will produce a detailed
517 # IPython itself shouldn't crash. This will produce a detailed
518 # post-mortem if it does. But we only install the crash handler for
518 # post-mortem if it does. But we only install the crash handler for
519 # non-threaded shells, the threaded ones use a normal verbose reporter
519 # non-threaded shells, the threaded ones use a normal verbose reporter
520 # and lose the crash handler. This is because exceptions in the main
520 # and lose the crash handler. This is because exceptions in the main
521 # thread (such as in GUI code) propagate directly to sys.excepthook,
521 # thread (such as in GUI code) propagate directly to sys.excepthook,
522 # and there's no point in printing crash dumps for every user exception.
522 # and there's no point in printing crash dumps for every user exception.
523 if self.isthreaded:
523 if self.isthreaded:
524 sys.excepthook = ultraTB.FormattedTB()
524 sys.excepthook = ultraTB.FormattedTB()
525 else:
525 else:
526 from IPython import CrashHandler
526 from IPython import CrashHandler
527 sys.excepthook = CrashHandler.CrashHandler(self)
527 sys.excepthook = CrashHandler.CrashHandler(self)
528
528
529 # The instance will store a pointer to this, so that runtime code
529 # The instance will store a pointer to this, so that runtime code
530 # (such as magics) can access it. This is because during the
530 # (such as magics) can access it. This is because during the
531 # read-eval loop, it gets temporarily overwritten (to deal with GUI
531 # read-eval loop, it gets temporarily overwritten (to deal with GUI
532 # frameworks).
532 # frameworks).
533 self.sys_excepthook = sys.excepthook
533 self.sys_excepthook = sys.excepthook
534
534
535 # and add any custom exception handlers the user may have specified
535 # and add any custom exception handlers the user may have specified
536 self.set_custom_exc(*custom_exceptions)
536 self.set_custom_exc(*custom_exceptions)
537
537
538 # indentation management
538 # indentation management
539 self.autoindent = False
539 self.autoindent = False
540 self.indent_current_nsp = 0
540 self.indent_current_nsp = 0
541
541
542 # Make some aliases automatically
542 # Make some aliases automatically
543 # Prepare list of shell aliases to auto-define
543 # Prepare list of shell aliases to auto-define
544 if os.name == 'posix':
544 if os.name == 'posix':
545 auto_alias = ('mkdir mkdir', 'rmdir rmdir',
545 auto_alias = ('mkdir mkdir', 'rmdir rmdir',
546 'mv mv -i','rm rm -i','cp cp -i',
546 'mv mv -i','rm rm -i','cp cp -i',
547 'cat cat','less less','clear clear',
547 'cat cat','less less','clear clear',
548 # a better ls
548 # a better ls
549 'ls ls -F',
549 'ls ls -F',
550 # long ls
550 # long ls
551 'll ls -lF')
551 'll ls -lF')
552 # Extra ls aliases with color, which need special treatment on BSD
552 # Extra ls aliases with color, which need special treatment on BSD
553 # variants
553 # variants
554 ls_extra = ( # color ls
554 ls_extra = ( # color ls
555 'lc ls -F -o --color',
555 'lc ls -F -o --color',
556 # ls normal files only
556 # ls normal files only
557 'lf ls -F -o --color %l | grep ^-',
557 'lf ls -F -o --color %l | grep ^-',
558 # ls symbolic links
558 # ls symbolic links
559 'lk ls -F -o --color %l | grep ^l',
559 'lk ls -F -o --color %l | grep ^l',
560 # directories or links to directories,
560 # directories or links to directories,
561 'ldir ls -F -o --color %l | grep /$',
561 'ldir ls -F -o --color %l | grep /$',
562 # things which are executable
562 # things which are executable
563 'lx ls -F -o --color %l | grep ^-..x',
563 'lx ls -F -o --color %l | grep ^-..x',
564 )
564 )
565 # The BSDs don't ship GNU ls, so they don't understand the
565 # The BSDs don't ship GNU ls, so they don't understand the
566 # --color switch out of the box
566 # --color switch out of the box
567 if 'bsd' in sys.platform:
567 if 'bsd' in sys.platform:
568 ls_extra = ( # ls normal files only
568 ls_extra = ( # ls normal files only
569 'lf ls -lF | grep ^-',
569 'lf ls -lF | grep ^-',
570 # ls symbolic links
570 # ls symbolic links
571 'lk ls -lF | grep ^l',
571 'lk ls -lF | grep ^l',
572 # directories or links to directories,
572 # directories or links to directories,
573 'ldir ls -lF | grep /$',
573 'ldir ls -lF | grep /$',
574 # things which are executable
574 # things which are executable
575 'lx ls -lF | grep ^-..x',
575 'lx ls -lF | grep ^-..x',
576 )
576 )
577 auto_alias = auto_alias + ls_extra
577 auto_alias = auto_alias + ls_extra
578 elif os.name in ['nt','dos']:
578 elif os.name in ['nt','dos']:
579 auto_alias = ('dir dir /on', 'ls dir /on',
579 auto_alias = ('dir dir /on', 'ls dir /on',
580 'ddir dir /ad /on', 'ldir dir /ad /on',
580 'ddir dir /ad /on', 'ldir dir /ad /on',
581 'mkdir mkdir','rmdir rmdir','echo echo',
581 'mkdir mkdir','rmdir rmdir','echo echo',
582 'ren ren','cls cls','copy copy')
582 'ren ren','cls cls','copy copy')
583 else:
583 else:
584 auto_alias = ()
584 auto_alias = ()
585 self.auto_alias = [s.split(None,1) for s in auto_alias]
585 self.auto_alias = [s.split(None,1) for s in auto_alias]
586 # Call the actual (public) initializer
586 # Call the actual (public) initializer
587 self.init_auto_alias()
587 self.init_auto_alias()
588
588
589 # Produce a public API instance
589 # Produce a public API instance
590 self.api = IPython.ipapi.IPApi(self)
590 self.api = IPython.ipapi.IPApi(self)
591
591
592 # track which builtins we add, so we can clean up later
592 # track which builtins we add, so we can clean up later
593 self.builtins_added = {}
593 self.builtins_added = {}
594 # This method will add the necessary builtins for operation, but
594 # This method will add the necessary builtins for operation, but
595 # tracking what it did via the builtins_added dict.
595 # tracking what it did via the builtins_added dict.
596 self.add_builtins()
596 self.add_builtins()
597
597
598 # end __init__
598 # end __init__
599
599
600 def pre_config_initialization(self):
600 def pre_config_initialization(self):
601 """Pre-configuration init method
601 """Pre-configuration init method
602
602
603 This is called before the configuration files are processed to
603 This is called before the configuration files are processed to
604 prepare the services the config files might need.
604 prepare the services the config files might need.
605
605
606 self.rc already has reasonable default values at this point.
606 self.rc already has reasonable default values at this point.
607 """
607 """
608 rc = self.rc
608 rc = self.rc
609
609
610 self.db = pickleshare.PickleShareDB(rc.ipythondir + "/db")
610 self.db = pickleshare.PickleShareDB(rc.ipythondir + "/db")
611
611
612 def post_config_initialization(self):
612 def post_config_initialization(self):
613 """Post configuration init method
613 """Post configuration init method
614
614
615 This is called after the configuration files have been processed to
615 This is called after the configuration files have been processed to
616 'finalize' the initialization."""
616 'finalize' the initialization."""
617
617
618 rc = self.rc
618 rc = self.rc
619
619
620 # Object inspector
620 # Object inspector
621 self.inspector = OInspect.Inspector(OInspect.InspectColors,
621 self.inspector = OInspect.Inspector(OInspect.InspectColors,
622 PyColorize.ANSICodeColors,
622 PyColorize.ANSICodeColors,
623 'NoColor',
623 'NoColor',
624 rc.object_info_string_level)
624 rc.object_info_string_level)
625
625
626 # Load readline proper
626 # Load readline proper
627 if rc.readline:
627 if rc.readline:
628 self.init_readline()
628 self.init_readline()
629
629
630 # local shortcut, this is used a LOT
630 # local shortcut, this is used a LOT
631 self.log = self.logger.log
631 self.log = self.logger.log
632
632
633 # Initialize cache, set in/out prompts and printing system
633 # Initialize cache, set in/out prompts and printing system
634 self.outputcache = CachedOutput(self,
634 self.outputcache = CachedOutput(self,
635 rc.cache_size,
635 rc.cache_size,
636 rc.pprint,
636 rc.pprint,
637 input_sep = rc.separate_in,
637 input_sep = rc.separate_in,
638 output_sep = rc.separate_out,
638 output_sep = rc.separate_out,
639 output_sep2 = rc.separate_out2,
639 output_sep2 = rc.separate_out2,
640 ps1 = rc.prompt_in1,
640 ps1 = rc.prompt_in1,
641 ps2 = rc.prompt_in2,
641 ps2 = rc.prompt_in2,
642 ps_out = rc.prompt_out,
642 ps_out = rc.prompt_out,
643 pad_left = rc.prompts_pad_left)
643 pad_left = rc.prompts_pad_left)
644
644
645 # user may have over-ridden the default print hook:
645 # user may have over-ridden the default print hook:
646 try:
646 try:
647 self.outputcache.__class__.display = self.hooks.display
647 self.outputcache.__class__.display = self.hooks.display
648 except AttributeError:
648 except AttributeError:
649 pass
649 pass
650
650
651 # I don't like assigning globally to sys, because it means when embedding
651 # I don't like assigning globally to sys, because it means when embedding
652 # instances, each embedded instance overrides the previous choice. But
652 # instances, each embedded instance overrides the previous choice. But
653 # sys.displayhook seems to be called internally by exec, so I don't see a
653 # sys.displayhook seems to be called internally by exec, so I don't see a
654 # way around it.
654 # way around it.
655 sys.displayhook = self.outputcache
655 sys.displayhook = self.outputcache
656
656
657 # Set user colors (don't do it in the constructor above so that it
657 # Set user colors (don't do it in the constructor above so that it
658 # doesn't crash if colors option is invalid)
658 # doesn't crash if colors option is invalid)
659 self.magic_colors(rc.colors)
659 self.magic_colors(rc.colors)
660
660
661 # Set calling of pdb on exceptions
661 # Set calling of pdb on exceptions
662 self.call_pdb = rc.pdb
662 self.call_pdb = rc.pdb
663
663
664 # Load user aliases
664 # Load user aliases
665 for alias in rc.alias:
665 for alias in rc.alias:
666 self.magic_alias(alias)
666 self.magic_alias(alias)
667 self.hooks.late_startup_hook()
667 self.hooks.late_startup_hook()
668
668
669 batchrun = False
669 batchrun = False
670 for batchfile in [path(arg) for arg in self.rc.args
670 for batchfile in [path(arg) for arg in self.rc.args
671 if arg.lower().endswith('.ipy')]:
671 if arg.lower().endswith('.ipy')]:
672 if not batchfile.isfile():
672 if not batchfile.isfile():
673 print "No such batch file:", batchfile
673 print "No such batch file:", batchfile
674 continue
674 continue
675 self.api.runlines(batchfile.text())
675 self.api.runlines(batchfile.text())
676 batchrun = True
676 batchrun = True
677 if batchrun:
677 if batchrun:
678 self.exit_now = True
678 self.exit_now = True
679
679
680 def add_builtins(self):
680 def add_builtins(self):
681 """Store ipython references into the builtin namespace.
681 """Store ipython references into the builtin namespace.
682
682
683 Some parts of ipython operate via builtins injected here, which hold a
683 Some parts of ipython operate via builtins injected here, which hold a
684 reference to IPython itself."""
684 reference to IPython itself."""
685
685
686 # TODO: deprecate all except _ip; 'jobs' should be installed
686 # TODO: deprecate all except _ip; 'jobs' should be installed
687 # by an extension and the rest are under _ip, ipalias is redundant
687 # by an extension and the rest are under _ip, ipalias is redundant
688 builtins_new = dict(__IPYTHON__ = self,
688 builtins_new = dict(__IPYTHON__ = self,
689 ip_set_hook = self.set_hook,
689 ip_set_hook = self.set_hook,
690 jobs = self.jobs,
690 jobs = self.jobs,
691 ipmagic = self.ipmagic,
691 ipmagic = self.ipmagic,
692 ipalias = self.ipalias,
692 ipalias = self.ipalias,
693 ipsystem = self.ipsystem,
693 ipsystem = self.ipsystem,
694 _ip = self.api
694 _ip = self.api
695 )
695 )
696 for biname,bival in builtins_new.items():
696 for biname,bival in builtins_new.items():
697 try:
697 try:
698 # store the orignal value so we can restore it
698 # store the orignal value so we can restore it
699 self.builtins_added[biname] = __builtin__.__dict__[biname]
699 self.builtins_added[biname] = __builtin__.__dict__[biname]
700 except KeyError:
700 except KeyError:
701 # or mark that it wasn't defined, and we'll just delete it at
701 # or mark that it wasn't defined, and we'll just delete it at
702 # cleanup
702 # cleanup
703 self.builtins_added[biname] = Undefined
703 self.builtins_added[biname] = Undefined
704 __builtin__.__dict__[biname] = bival
704 __builtin__.__dict__[biname] = bival
705
705
706 # Keep in the builtins a flag for when IPython is active. We set it
706 # Keep in the builtins a flag for when IPython is active. We set it
707 # with setdefault so that multiple nested IPythons don't clobber one
707 # with setdefault so that multiple nested IPythons don't clobber one
708 # another. Each will increase its value by one upon being activated,
708 # another. Each will increase its value by one upon being activated,
709 # which also gives us a way to determine the nesting level.
709 # which also gives us a way to determine the nesting level.
710 __builtin__.__dict__.setdefault('__IPYTHON__active',0)
710 __builtin__.__dict__.setdefault('__IPYTHON__active',0)
711
711
712 def clean_builtins(self):
712 def clean_builtins(self):
713 """Remove any builtins which might have been added by add_builtins, or
713 """Remove any builtins which might have been added by add_builtins, or
714 restore overwritten ones to their previous values."""
714 restore overwritten ones to their previous values."""
715 for biname,bival in self.builtins_added.items():
715 for biname,bival in self.builtins_added.items():
716 if bival is Undefined:
716 if bival is Undefined:
717 del __builtin__.__dict__[biname]
717 del __builtin__.__dict__[biname]
718 else:
718 else:
719 __builtin__.__dict__[biname] = bival
719 __builtin__.__dict__[biname] = bival
720 self.builtins_added.clear()
720 self.builtins_added.clear()
721
721
722 def set_hook(self,name,hook, priority = 50):
722 def set_hook(self,name,hook, priority = 50):
723 """set_hook(name,hook) -> sets an internal IPython hook.
723 """set_hook(name,hook) -> sets an internal IPython hook.
724
724
725 IPython exposes some of its internal API as user-modifiable hooks. By
725 IPython exposes some of its internal API as user-modifiable hooks. By
726 adding your function to one of these hooks, you can modify IPython's
726 adding your function to one of these hooks, you can modify IPython's
727 behavior to call at runtime your own routines."""
727 behavior to call at runtime your own routines."""
728
728
729 # At some point in the future, this should validate the hook before it
729 # At some point in the future, this should validate the hook before it
730 # accepts it. Probably at least check that the hook takes the number
730 # accepts it. Probably at least check that the hook takes the number
731 # of args it's supposed to.
731 # of args it's supposed to.
732 dp = getattr(self.hooks, name, None)
732 dp = getattr(self.hooks, name, None)
733 if name not in IPython.hooks.__all__:
733 if name not in IPython.hooks.__all__:
734 print "Warning! Hook '%s' is not one of %s" % (name, IPython.hooks.__all__ )
734 print "Warning! Hook '%s' is not one of %s" % (name, IPython.hooks.__all__ )
735 if not dp:
735 if not dp:
736 dp = IPython.hooks.CommandChainDispatcher()
736 dp = IPython.hooks.CommandChainDispatcher()
737
737
738 f = new.instancemethod(hook,self,self.__class__)
738 f = new.instancemethod(hook,self,self.__class__)
739 try:
739 try:
740 dp.add(f,priority)
740 dp.add(f,priority)
741 except AttributeError:
741 except AttributeError:
742 # it was not commandchain, plain old func - replace
742 # it was not commandchain, plain old func - replace
743 dp = f
743 dp = f
744
744
745 setattr(self.hooks,name, dp)
745 setattr(self.hooks,name, dp)
746
746
747
747
748 #setattr(self.hooks,name,new.instancemethod(hook,self,self.__class__))
748 #setattr(self.hooks,name,new.instancemethod(hook,self,self.__class__))
749
749
750 def set_custom_exc(self,exc_tuple,handler):
750 def set_custom_exc(self,exc_tuple,handler):
751 """set_custom_exc(exc_tuple,handler)
751 """set_custom_exc(exc_tuple,handler)
752
752
753 Set a custom exception handler, which will be called if any of the
753 Set a custom exception handler, which will be called if any of the
754 exceptions in exc_tuple occur in the mainloop (specifically, in the
754 exceptions in exc_tuple occur in the mainloop (specifically, in the
755 runcode() method.
755 runcode() method.
756
756
757 Inputs:
757 Inputs:
758
758
759 - exc_tuple: a *tuple* of valid exceptions to call the defined
759 - exc_tuple: a *tuple* of valid exceptions to call the defined
760 handler for. It is very important that you use a tuple, and NOT A
760 handler for. It is very important that you use a tuple, and NOT A
761 LIST here, because of the way Python's except statement works. If
761 LIST here, because of the way Python's except statement works. If
762 you only want to trap a single exception, use a singleton tuple:
762 you only want to trap a single exception, use a singleton tuple:
763
763
764 exc_tuple == (MyCustomException,)
764 exc_tuple == (MyCustomException,)
765
765
766 - handler: this must be defined as a function with the following
766 - handler: this must be defined as a function with the following
767 basic interface: def my_handler(self,etype,value,tb).
767 basic interface: def my_handler(self,etype,value,tb).
768
768
769 This will be made into an instance method (via new.instancemethod)
769 This will be made into an instance method (via new.instancemethod)
770 of IPython itself, and it will be called if any of the exceptions
770 of IPython itself, and it will be called if any of the exceptions
771 listed in the exc_tuple are caught. If the handler is None, an
771 listed in the exc_tuple are caught. If the handler is None, an
772 internal basic one is used, which just prints basic info.
772 internal basic one is used, which just prints basic info.
773
773
774 WARNING: by putting in your own exception handler into IPython's main
774 WARNING: by putting in your own exception handler into IPython's main
775 execution loop, you run a very good chance of nasty crashes. This
775 execution loop, you run a very good chance of nasty crashes. This
776 facility should only be used if you really know what you are doing."""
776 facility should only be used if you really know what you are doing."""
777
777
778 assert type(exc_tuple)==type(()) , \
778 assert type(exc_tuple)==type(()) , \
779 "The custom exceptions must be given AS A TUPLE."
779 "The custom exceptions must be given AS A TUPLE."
780
780
781 def dummy_handler(self,etype,value,tb):
781 def dummy_handler(self,etype,value,tb):
782 print '*** Simple custom exception handler ***'
782 print '*** Simple custom exception handler ***'
783 print 'Exception type :',etype
783 print 'Exception type :',etype
784 print 'Exception value:',value
784 print 'Exception value:',value
785 print 'Traceback :',tb
785 print 'Traceback :',tb
786 print 'Source code :','\n'.join(self.buffer)
786 print 'Source code :','\n'.join(self.buffer)
787
787
788 if handler is None: handler = dummy_handler
788 if handler is None: handler = dummy_handler
789
789
790 self.CustomTB = new.instancemethod(handler,self,self.__class__)
790 self.CustomTB = new.instancemethod(handler,self,self.__class__)
791 self.custom_exceptions = exc_tuple
791 self.custom_exceptions = exc_tuple
792
792
793 def set_custom_completer(self,completer,pos=0):
793 def set_custom_completer(self,completer,pos=0):
794 """set_custom_completer(completer,pos=0)
794 """set_custom_completer(completer,pos=0)
795
795
796 Adds a new custom completer function.
796 Adds a new custom completer function.
797
797
798 The position argument (defaults to 0) is the index in the completers
798 The position argument (defaults to 0) is the index in the completers
799 list where you want the completer to be inserted."""
799 list where you want the completer to be inserted."""
800
800
801 newcomp = new.instancemethod(completer,self.Completer,
801 newcomp = new.instancemethod(completer,self.Completer,
802 self.Completer.__class__)
802 self.Completer.__class__)
803 self.Completer.matchers.insert(pos,newcomp)
803 self.Completer.matchers.insert(pos,newcomp)
804
804
805 def _get_call_pdb(self):
805 def _get_call_pdb(self):
806 return self._call_pdb
806 return self._call_pdb
807
807
808 def _set_call_pdb(self,val):
808 def _set_call_pdb(self,val):
809
809
810 if val not in (0,1,False,True):
810 if val not in (0,1,False,True):
811 raise ValueError,'new call_pdb value must be boolean'
811 raise ValueError,'new call_pdb value must be boolean'
812
812
813 # store value in instance
813 # store value in instance
814 self._call_pdb = val
814 self._call_pdb = val
815
815
816 # notify the actual exception handlers
816 # notify the actual exception handlers
817 self.InteractiveTB.call_pdb = val
817 self.InteractiveTB.call_pdb = val
818 if self.isthreaded:
818 if self.isthreaded:
819 try:
819 try:
820 self.sys_excepthook.call_pdb = val
820 self.sys_excepthook.call_pdb = val
821 except:
821 except:
822 warn('Failed to activate pdb for threaded exception handler')
822 warn('Failed to activate pdb for threaded exception handler')
823
823
824 call_pdb = property(_get_call_pdb,_set_call_pdb,None,
824 call_pdb = property(_get_call_pdb,_set_call_pdb,None,
825 'Control auto-activation of pdb at exceptions')
825 'Control auto-activation of pdb at exceptions')
826
826
827
827
828 # These special functions get installed in the builtin namespace, to
828 # These special functions get installed in the builtin namespace, to
829 # provide programmatic (pure python) access to magics, aliases and system
829 # provide programmatic (pure python) access to magics, aliases and system
830 # calls. This is important for logging, user scripting, and more.
830 # calls. This is important for logging, user scripting, and more.
831
831
832 # We are basically exposing, via normal python functions, the three
832 # We are basically exposing, via normal python functions, the three
833 # mechanisms in which ipython offers special call modes (magics for
833 # mechanisms in which ipython offers special call modes (magics for
834 # internal control, aliases for direct system access via pre-selected
834 # internal control, aliases for direct system access via pre-selected
835 # names, and !cmd for calling arbitrary system commands).
835 # names, and !cmd for calling arbitrary system commands).
836
836
837 def ipmagic(self,arg_s):
837 def ipmagic(self,arg_s):
838 """Call a magic function by name.
838 """Call a magic function by name.
839
839
840 Input: a string containing the name of the magic function to call and any
840 Input: a string containing the name of the magic function to call and any
841 additional arguments to be passed to the magic.
841 additional arguments to be passed to the magic.
842
842
843 ipmagic('name -opt foo bar') is equivalent to typing at the ipython
843 ipmagic('name -opt foo bar') is equivalent to typing at the ipython
844 prompt:
844 prompt:
845
845
846 In[1]: %name -opt foo bar
846 In[1]: %name -opt foo bar
847
847
848 To call a magic without arguments, simply use ipmagic('name').
848 To call a magic without arguments, simply use ipmagic('name').
849
849
850 This provides a proper Python function to call IPython's magics in any
850 This provides a proper Python function to call IPython's magics in any
851 valid Python code you can type at the interpreter, including loops and
851 valid Python code you can type at the interpreter, including loops and
852 compound statements. It is added by IPython to the Python builtin
852 compound statements. It is added by IPython to the Python builtin
853 namespace upon initialization."""
853 namespace upon initialization."""
854
854
855 args = arg_s.split(' ',1)
855 args = arg_s.split(' ',1)
856 magic_name = args[0]
856 magic_name = args[0]
857 magic_name = magic_name.lstrip(self.ESC_MAGIC)
857 magic_name = magic_name.lstrip(self.ESC_MAGIC)
858
858
859 try:
859 try:
860 magic_args = args[1]
860 magic_args = args[1]
861 except IndexError:
861 except IndexError:
862 magic_args = ''
862 magic_args = ''
863 fn = getattr(self,'magic_'+magic_name,None)
863 fn = getattr(self,'magic_'+magic_name,None)
864 if fn is None:
864 if fn is None:
865 error("Magic function `%s` not found." % magic_name)
865 error("Magic function `%s` not found." % magic_name)
866 else:
866 else:
867 magic_args = self.var_expand(magic_args)
867 magic_args = self.var_expand(magic_args)
868 return fn(magic_args)
868 return fn(magic_args)
869
869
870 def ipalias(self,arg_s):
870 def ipalias(self,arg_s):
871 """Call an alias by name.
871 """Call an alias by name.
872
872
873 Input: a string containing the name of the alias to call and any
873 Input: a string containing the name of the alias to call and any
874 additional arguments to be passed to the magic.
874 additional arguments to be passed to the magic.
875
875
876 ipalias('name -opt foo bar') is equivalent to typing at the ipython
876 ipalias('name -opt foo bar') is equivalent to typing at the ipython
877 prompt:
877 prompt:
878
878
879 In[1]: name -opt foo bar
879 In[1]: name -opt foo bar
880
880
881 To call an alias without arguments, simply use ipalias('name').
881 To call an alias without arguments, simply use ipalias('name').
882
882
883 This provides a proper Python function to call IPython's aliases in any
883 This provides a proper Python function to call IPython's aliases in any
884 valid Python code you can type at the interpreter, including loops and
884 valid Python code you can type at the interpreter, including loops and
885 compound statements. It is added by IPython to the Python builtin
885 compound statements. It is added by IPython to the Python builtin
886 namespace upon initialization."""
886 namespace upon initialization."""
887
887
888 args = arg_s.split(' ',1)
888 args = arg_s.split(' ',1)
889 alias_name = args[0]
889 alias_name = args[0]
890 try:
890 try:
891 alias_args = args[1]
891 alias_args = args[1]
892 except IndexError:
892 except IndexError:
893 alias_args = ''
893 alias_args = ''
894 if alias_name in self.alias_table:
894 if alias_name in self.alias_table:
895 self.call_alias(alias_name,alias_args)
895 self.call_alias(alias_name,alias_args)
896 else:
896 else:
897 error("Alias `%s` not found." % alias_name)
897 error("Alias `%s` not found." % alias_name)
898
898
899 def ipsystem(self,arg_s):
899 def ipsystem(self,arg_s):
900 """Make a system call, using IPython."""
900 """Make a system call, using IPython."""
901
901
902 self.system(arg_s)
902 self.system(arg_s)
903
903
904 def complete(self,text):
904 def complete(self,text):
905 """Return a sorted list of all possible completions on text.
905 """Return a sorted list of all possible completions on text.
906
906
907 Inputs:
907 Inputs:
908
908
909 - text: a string of text to be completed on.
909 - text: a string of text to be completed on.
910
910
911 This is a wrapper around the completion mechanism, similar to what
911 This is a wrapper around the completion mechanism, similar to what
912 readline does at the command line when the TAB key is hit. By
912 readline does at the command line when the TAB key is hit. By
913 exposing it as a method, it can be used by other non-readline
913 exposing it as a method, it can be used by other non-readline
914 environments (such as GUIs) for text completion.
914 environments (such as GUIs) for text completion.
915
915
916 Simple usage example:
916 Simple usage example:
917
917
918 In [1]: x = 'hello'
918 In [1]: x = 'hello'
919
919
920 In [2]: __IP.complete('x.l')
920 In [2]: __IP.complete('x.l')
921 Out[2]: ['x.ljust', 'x.lower', 'x.lstrip']"""
921 Out[2]: ['x.ljust', 'x.lower', 'x.lstrip']"""
922
922
923 complete = self.Completer.complete
923 complete = self.Completer.complete
924 state = 0
924 state = 0
925 # use a dict so we get unique keys, since ipyhton's multiple
925 # use a dict so we get unique keys, since ipyhton's multiple
926 # completers can return duplicates.
926 # completers can return duplicates.
927 comps = {}
927 comps = {}
928 while True:
928 while True:
929 newcomp = complete(text,state)
929 newcomp = complete(text,state)
930 if newcomp is None:
930 if newcomp is None:
931 break
931 break
932 comps[newcomp] = 1
932 comps[newcomp] = 1
933 state += 1
933 state += 1
934 outcomps = comps.keys()
934 outcomps = comps.keys()
935 outcomps.sort()
935 outcomps.sort()
936 return outcomps
936 return outcomps
937
937
938 def set_completer_frame(self, frame=None):
938 def set_completer_frame(self, frame=None):
939 if frame:
939 if frame:
940 self.Completer.namespace = frame.f_locals
940 self.Completer.namespace = frame.f_locals
941 self.Completer.global_namespace = frame.f_globals
941 self.Completer.global_namespace = frame.f_globals
942 else:
942 else:
943 self.Completer.namespace = self.user_ns
943 self.Completer.namespace = self.user_ns
944 self.Completer.global_namespace = self.user_global_ns
944 self.Completer.global_namespace = self.user_global_ns
945
945
946 def init_auto_alias(self):
946 def init_auto_alias(self):
947 """Define some aliases automatically.
947 """Define some aliases automatically.
948
948
949 These are ALL parameter-less aliases"""
949 These are ALL parameter-less aliases"""
950
950
951 for alias,cmd in self.auto_alias:
951 for alias,cmd in self.auto_alias:
952 self.alias_table[alias] = (0,cmd)
952 self.alias_table[alias] = (0,cmd)
953
953
954 def alias_table_validate(self,verbose=0):
954 def alias_table_validate(self,verbose=0):
955 """Update information about the alias table.
955 """Update information about the alias table.
956
956
957 In particular, make sure no Python keywords/builtins are in it."""
957 In particular, make sure no Python keywords/builtins are in it."""
958
958
959 no_alias = self.no_alias
959 no_alias = self.no_alias
960 for k in self.alias_table.keys():
960 for k in self.alias_table.keys():
961 if k in no_alias:
961 if k in no_alias:
962 del self.alias_table[k]
962 del self.alias_table[k]
963 if verbose:
963 if verbose:
964 print ("Deleting alias <%s>, it's a Python "
964 print ("Deleting alias <%s>, it's a Python "
965 "keyword or builtin." % k)
965 "keyword or builtin." % k)
966
966
967 def set_autoindent(self,value=None):
967 def set_autoindent(self,value=None):
968 """Set the autoindent flag, checking for readline support.
968 """Set the autoindent flag, checking for readline support.
969
969
970 If called with no arguments, it acts as a toggle."""
970 If called with no arguments, it acts as a toggle."""
971
971
972 if not self.has_readline:
972 if not self.has_readline:
973 if os.name == 'posix':
973 if os.name == 'posix':
974 warn("The auto-indent feature requires the readline library")
974 warn("The auto-indent feature requires the readline library")
975 self.autoindent = 0
975 self.autoindent = 0
976 return
976 return
977 if value is None:
977 if value is None:
978 self.autoindent = not self.autoindent
978 self.autoindent = not self.autoindent
979 else:
979 else:
980 self.autoindent = value
980 self.autoindent = value
981
981
982 def rc_set_toggle(self,rc_field,value=None):
982 def rc_set_toggle(self,rc_field,value=None):
983 """Set or toggle a field in IPython's rc config. structure.
983 """Set or toggle a field in IPython's rc config. structure.
984
984
985 If called with no arguments, it acts as a toggle.
985 If called with no arguments, it acts as a toggle.
986
986
987 If called with a non-existent field, the resulting AttributeError
987 If called with a non-existent field, the resulting AttributeError
988 exception will propagate out."""
988 exception will propagate out."""
989
989
990 rc_val = getattr(self.rc,rc_field)
990 rc_val = getattr(self.rc,rc_field)
991 if value is None:
991 if value is None:
992 value = not rc_val
992 value = not rc_val
993 setattr(self.rc,rc_field,value)
993 setattr(self.rc,rc_field,value)
994
994
995 def user_setup(self,ipythondir,rc_suffix,mode='install'):
995 def user_setup(self,ipythondir,rc_suffix,mode='install'):
996 """Install the user configuration directory.
996 """Install the user configuration directory.
997
997
998 Can be called when running for the first time or to upgrade the user's
998 Can be called when running for the first time or to upgrade the user's
999 .ipython/ directory with the mode parameter. Valid modes are 'install'
999 .ipython/ directory with the mode parameter. Valid modes are 'install'
1000 and 'upgrade'."""
1000 and 'upgrade'."""
1001
1001
1002 def wait():
1002 def wait():
1003 try:
1003 try:
1004 raw_input("Please press <RETURN> to start IPython.")
1004 raw_input("Please press <RETURN> to start IPython.")
1005 except EOFError:
1005 except EOFError:
1006 print >> Term.cout
1006 print >> Term.cout
1007 print '*'*70
1007 print '*'*70
1008
1008
1009 cwd = os.getcwd() # remember where we started
1009 cwd = os.getcwd() # remember where we started
1010 glb = glob.glob
1010 glb = glob.glob
1011 print '*'*70
1011 print '*'*70
1012 if mode == 'install':
1012 if mode == 'install':
1013 print \
1013 print \
1014 """Welcome to IPython. I will try to create a personal configuration directory
1014 """Welcome to IPython. I will try to create a personal configuration directory
1015 where you can customize many aspects of IPython's functionality in:\n"""
1015 where you can customize many aspects of IPython's functionality in:\n"""
1016 else:
1016 else:
1017 print 'I am going to upgrade your configuration in:'
1017 print 'I am going to upgrade your configuration in:'
1018
1018
1019 print ipythondir
1019 print ipythondir
1020
1020
1021 rcdirend = os.path.join('IPython','UserConfig')
1021 rcdirend = os.path.join('IPython','UserConfig')
1022 cfg = lambda d: os.path.join(d,rcdirend)
1022 cfg = lambda d: os.path.join(d,rcdirend)
1023 try:
1023 try:
1024 rcdir = filter(os.path.isdir,map(cfg,sys.path))[0]
1024 rcdir = filter(os.path.isdir,map(cfg,sys.path))[0]
1025 except IOError:
1025 except IOError:
1026 warning = """
1026 warning = """
1027 Installation error. IPython's directory was not found.
1027 Installation error. IPython's directory was not found.
1028
1028
1029 Check the following:
1029 Check the following:
1030
1030
1031 The ipython/IPython directory should be in a directory belonging to your
1031 The ipython/IPython directory should be in a directory belonging to your
1032 PYTHONPATH environment variable (that is, it should be in a directory
1032 PYTHONPATH environment variable (that is, it should be in a directory
1033 belonging to sys.path). You can copy it explicitly there or just link to it.
1033 belonging to sys.path). You can copy it explicitly there or just link to it.
1034
1034
1035 IPython will proceed with builtin defaults.
1035 IPython will proceed with builtin defaults.
1036 """
1036 """
1037 warn(warning)
1037 warn(warning)
1038 wait()
1038 wait()
1039 return
1039 return
1040
1040
1041 if mode == 'install':
1041 if mode == 'install':
1042 try:
1042 try:
1043 shutil.copytree(rcdir,ipythondir)
1043 shutil.copytree(rcdir,ipythondir)
1044 os.chdir(ipythondir)
1044 os.chdir(ipythondir)
1045 rc_files = glb("ipythonrc*")
1045 rc_files = glb("ipythonrc*")
1046 for rc_file in rc_files:
1046 for rc_file in rc_files:
1047 os.rename(rc_file,rc_file+rc_suffix)
1047 os.rename(rc_file,rc_file+rc_suffix)
1048 except:
1048 except:
1049 warning = """
1049 warning = """
1050
1050
1051 There was a problem with the installation:
1051 There was a problem with the installation:
1052 %s
1052 %s
1053 Try to correct it or contact the developers if you think it's a bug.
1053 Try to correct it or contact the developers if you think it's a bug.
1054 IPython will proceed with builtin defaults.""" % sys.exc_info()[1]
1054 IPython will proceed with builtin defaults.""" % sys.exc_info()[1]
1055 warn(warning)
1055 warn(warning)
1056 wait()
1056 wait()
1057 return
1057 return
1058
1058
1059 elif mode == 'upgrade':
1059 elif mode == 'upgrade':
1060 try:
1060 try:
1061 os.chdir(ipythondir)
1061 os.chdir(ipythondir)
1062 except:
1062 except:
1063 print """
1063 print """
1064 Can not upgrade: changing to directory %s failed. Details:
1064 Can not upgrade: changing to directory %s failed. Details:
1065 %s
1065 %s
1066 """ % (ipythondir,sys.exc_info()[1])
1066 """ % (ipythondir,sys.exc_info()[1])
1067 wait()
1067 wait()
1068 return
1068 return
1069 else:
1069 else:
1070 sources = glb(os.path.join(rcdir,'[A-Za-z]*'))
1070 sources = glb(os.path.join(rcdir,'[A-Za-z]*'))
1071 for new_full_path in sources:
1071 for new_full_path in sources:
1072 new_filename = os.path.basename(new_full_path)
1072 new_filename = os.path.basename(new_full_path)
1073 if new_filename.startswith('ipythonrc'):
1073 if new_filename.startswith('ipythonrc'):
1074 new_filename = new_filename + rc_suffix
1074 new_filename = new_filename + rc_suffix
1075 # The config directory should only contain files, skip any
1075 # The config directory should only contain files, skip any
1076 # directories which may be there (like CVS)
1076 # directories which may be there (like CVS)
1077 if os.path.isdir(new_full_path):
1077 if os.path.isdir(new_full_path):
1078 continue
1078 continue
1079 if os.path.exists(new_filename):
1079 if os.path.exists(new_filename):
1080 old_file = new_filename+'.old'
1080 old_file = new_filename+'.old'
1081 if os.path.exists(old_file):
1081 if os.path.exists(old_file):
1082 os.remove(old_file)
1082 os.remove(old_file)
1083 os.rename(new_filename,old_file)
1083 os.rename(new_filename,old_file)
1084 shutil.copy(new_full_path,new_filename)
1084 shutil.copy(new_full_path,new_filename)
1085 else:
1085 else:
1086 raise ValueError,'unrecognized mode for install:',`mode`
1086 raise ValueError,'unrecognized mode for install:',`mode`
1087
1087
1088 # Fix line-endings to those native to each platform in the config
1088 # Fix line-endings to those native to each platform in the config
1089 # directory.
1089 # directory.
1090 try:
1090 try:
1091 os.chdir(ipythondir)
1091 os.chdir(ipythondir)
1092 except:
1092 except:
1093 print """
1093 print """
1094 Problem: changing to directory %s failed.
1094 Problem: changing to directory %s failed.
1095 Details:
1095 Details:
1096 %s
1096 %s
1097
1097
1098 Some configuration files may have incorrect line endings. This should not
1098 Some configuration files may have incorrect line endings. This should not
1099 cause any problems during execution. """ % (ipythondir,sys.exc_info()[1])
1099 cause any problems during execution. """ % (ipythondir,sys.exc_info()[1])
1100 wait()
1100 wait()
1101 else:
1101 else:
1102 for fname in glb('ipythonrc*'):
1102 for fname in glb('ipythonrc*'):
1103 try:
1103 try:
1104 native_line_ends(fname,backup=0)
1104 native_line_ends(fname,backup=0)
1105 except IOError:
1105 except IOError:
1106 pass
1106 pass
1107
1107
1108 if mode == 'install':
1108 if mode == 'install':
1109 print """
1109 print """
1110 Successful installation!
1110 Successful installation!
1111
1111
1112 Please read the sections 'Initial Configuration' and 'Quick Tips' in the
1112 Please read the sections 'Initial Configuration' and 'Quick Tips' in the
1113 IPython manual (there are both HTML and PDF versions supplied with the
1113 IPython manual (there are both HTML and PDF versions supplied with the
1114 distribution) to make sure that your system environment is properly configured
1114 distribution) to make sure that your system environment is properly configured
1115 to take advantage of IPython's features.
1115 to take advantage of IPython's features.
1116
1116
1117 Important note: the configuration system has changed! The old system is
1117 Important note: the configuration system has changed! The old system is
1118 still in place, but its setting may be partly overridden by the settings in
1118 still in place, but its setting may be partly overridden by the settings in
1119 "~/.ipython/ipy_user_conf.py" config file. Please take a look at the file
1119 "~/.ipython/ipy_user_conf.py" config file. Please take a look at the file
1120 if some of the new settings bother you.
1120 if some of the new settings bother you.
1121
1121
1122 """
1122 """
1123 else:
1123 else:
1124 print """
1124 print """
1125 Successful upgrade!
1125 Successful upgrade!
1126
1126
1127 All files in your directory:
1127 All files in your directory:
1128 %(ipythondir)s
1128 %(ipythondir)s
1129 which would have been overwritten by the upgrade were backed up with a .old
1129 which would have been overwritten by the upgrade were backed up with a .old
1130 extension. If you had made particular customizations in those files you may
1130 extension. If you had made particular customizations in those files you may
1131 want to merge them back into the new files.""" % locals()
1131 want to merge them back into the new files.""" % locals()
1132 wait()
1132 wait()
1133 os.chdir(cwd)
1133 os.chdir(cwd)
1134 # end user_setup()
1134 # end user_setup()
1135
1135
1136 def atexit_operations(self):
1136 def atexit_operations(self):
1137 """This will be executed at the time of exit.
1137 """This will be executed at the time of exit.
1138
1138
1139 Saving of persistent data should be performed here. """
1139 Saving of persistent data should be performed here. """
1140
1140
1141 #print '*** IPython exit cleanup ***' # dbg
1141 #print '*** IPython exit cleanup ***' # dbg
1142 # input history
1142 # input history
1143 self.savehist()
1143 self.savehist()
1144
1144
1145 # Cleanup all tempfiles left around
1145 # Cleanup all tempfiles left around
1146 for tfile in self.tempfiles:
1146 for tfile in self.tempfiles:
1147 try:
1147 try:
1148 os.unlink(tfile)
1148 os.unlink(tfile)
1149 except OSError:
1149 except OSError:
1150 pass
1150 pass
1151
1151
1152 # save the "persistent data" catch-all dictionary
1152 # save the "persistent data" catch-all dictionary
1153 self.hooks.shutdown_hook()
1153 self.hooks.shutdown_hook()
1154
1154
1155 def savehist(self):
1155 def savehist(self):
1156 """Save input history to a file (via readline library)."""
1156 """Save input history to a file (via readline library)."""
1157 try:
1157 try:
1158 self.readline.write_history_file(self.histfile)
1158 self.readline.write_history_file(self.histfile)
1159 except:
1159 except:
1160 print 'Unable to save IPython command history to file: ' + \
1160 print 'Unable to save IPython command history to file: ' + \
1161 `self.histfile`
1161 `self.histfile`
1162
1162
1163 def pre_readline(self):
1163 def pre_readline(self):
1164 """readline hook to be used at the start of each line.
1164 """readline hook to be used at the start of each line.
1165
1165
1166 Currently it handles auto-indent only."""
1166 Currently it handles auto-indent only."""
1167
1167
1168 #debugx('self.indent_current_nsp','pre_readline:')
1168 #debugx('self.indent_current_nsp','pre_readline:')
1169 self.readline.insert_text(self.indent_current_str())
1169 self.readline.insert_text(self.indent_current_str())
1170
1170
1171 def init_readline(self):
1171 def init_readline(self):
1172 """Command history completion/saving/reloading."""
1172 """Command history completion/saving/reloading."""
1173
1173
1174 import IPython.rlineimpl as readline
1174 import IPython.rlineimpl as readline
1175 if not readline.have_readline:
1175 if not readline.have_readline:
1176 self.has_readline = 0
1176 self.has_readline = 0
1177 self.readline = None
1177 self.readline = None
1178 # no point in bugging windows users with this every time:
1178 # no point in bugging windows users with this every time:
1179 warn('Readline services not available on this platform.')
1179 warn('Readline services not available on this platform.')
1180 else:
1180 else:
1181 sys.modules['readline'] = readline
1181 sys.modules['readline'] = readline
1182 import atexit
1182 import atexit
1183 from IPython.completer import IPCompleter
1183 from IPython.completer import IPCompleter
1184 self.Completer = IPCompleter(self,
1184 self.Completer = IPCompleter(self,
1185 self.user_ns,
1185 self.user_ns,
1186 self.user_global_ns,
1186 self.user_global_ns,
1187 self.rc.readline_omit__names,
1187 self.rc.readline_omit__names,
1188 self.alias_table)
1188 self.alias_table)
1189
1189
1190 # Platform-specific configuration
1190 # Platform-specific configuration
1191 if os.name == 'nt':
1191 if os.name == 'nt':
1192 self.readline_startup_hook = readline.set_pre_input_hook
1192 self.readline_startup_hook = readline.set_pre_input_hook
1193 else:
1193 else:
1194 self.readline_startup_hook = readline.set_startup_hook
1194 self.readline_startup_hook = readline.set_startup_hook
1195
1195
1196 # Load user's initrc file (readline config)
1196 # Load user's initrc file (readline config)
1197 inputrc_name = os.environ.get('INPUTRC')
1197 inputrc_name = os.environ.get('INPUTRC')
1198 if inputrc_name is None:
1198 if inputrc_name is None:
1199 home_dir = get_home_dir()
1199 home_dir = get_home_dir()
1200 if home_dir is not None:
1200 if home_dir is not None:
1201 inputrc_name = os.path.join(home_dir,'.inputrc')
1201 inputrc_name = os.path.join(home_dir,'.inputrc')
1202 if os.path.isfile(inputrc_name):
1202 if os.path.isfile(inputrc_name):
1203 try:
1203 try:
1204 readline.read_init_file(inputrc_name)
1204 readline.read_init_file(inputrc_name)
1205 except:
1205 except:
1206 warn('Problems reading readline initialization file <%s>'
1206 warn('Problems reading readline initialization file <%s>'
1207 % inputrc_name)
1207 % inputrc_name)
1208
1208
1209 self.has_readline = 1
1209 self.has_readline = 1
1210 self.readline = readline
1210 self.readline = readline
1211 # save this in sys so embedded copies can restore it properly
1211 # save this in sys so embedded copies can restore it properly
1212 sys.ipcompleter = self.Completer.complete
1212 sys.ipcompleter = self.Completer.complete
1213 readline.set_completer(self.Completer.complete)
1213 readline.set_completer(self.Completer.complete)
1214
1214
1215 # Configure readline according to user's prefs
1215 # Configure readline according to user's prefs
1216 for rlcommand in self.rc.readline_parse_and_bind:
1216 for rlcommand in self.rc.readline_parse_and_bind:
1217 readline.parse_and_bind(rlcommand)
1217 readline.parse_and_bind(rlcommand)
1218
1218
1219 # remove some chars from the delimiters list
1219 # remove some chars from the delimiters list
1220 delims = readline.get_completer_delims()
1220 delims = readline.get_completer_delims()
1221 delims = delims.translate(string._idmap,
1221 delims = delims.translate(string._idmap,
1222 self.rc.readline_remove_delims)
1222 self.rc.readline_remove_delims)
1223 readline.set_completer_delims(delims)
1223 readline.set_completer_delims(delims)
1224 # otherwise we end up with a monster history after a while:
1224 # otherwise we end up with a monster history after a while:
1225 readline.set_history_length(1000)
1225 readline.set_history_length(1000)
1226 try:
1226 try:
1227 #print '*** Reading readline history' # dbg
1227 #print '*** Reading readline history' # dbg
1228 readline.read_history_file(self.histfile)
1228 readline.read_history_file(self.histfile)
1229 except IOError:
1229 except IOError:
1230 pass # It doesn't exist yet.
1230 pass # It doesn't exist yet.
1231
1231
1232 atexit.register(self.atexit_operations)
1232 atexit.register(self.atexit_operations)
1233 del atexit
1233 del atexit
1234
1234
1235 # Configure auto-indent for all platforms
1235 # Configure auto-indent for all platforms
1236 self.set_autoindent(self.rc.autoindent)
1236 self.set_autoindent(self.rc.autoindent)
1237
1237
1238 def ask_yes_no(self,prompt,default=True):
1238 def ask_yes_no(self,prompt,default=True):
1239 if self.rc.quiet:
1239 if self.rc.quiet:
1240 return True
1240 return True
1241 return ask_yes_no(prompt,default)
1241 return ask_yes_no(prompt,default)
1242
1242
1243 def _should_recompile(self,e):
1243 def _should_recompile(self,e):
1244 """Utility routine for edit_syntax_error"""
1244 """Utility routine for edit_syntax_error"""
1245
1245
1246 if e.filename in ('<ipython console>','<input>','<string>',
1246 if e.filename in ('<ipython console>','<input>','<string>',
1247 '<console>','<BackgroundJob compilation>',
1247 '<console>','<BackgroundJob compilation>',
1248 None):
1248 None):
1249
1249
1250 return False
1250 return False
1251 try:
1251 try:
1252 if (self.rc.autoedit_syntax and
1252 if (self.rc.autoedit_syntax and
1253 not self.ask_yes_no('Return to editor to correct syntax error? '
1253 not self.ask_yes_no('Return to editor to correct syntax error? '
1254 '[Y/n] ','y')):
1254 '[Y/n] ','y')):
1255 return False
1255 return False
1256 except EOFError:
1256 except EOFError:
1257 return False
1257 return False
1258
1258
1259 def int0(x):
1259 def int0(x):
1260 try:
1260 try:
1261 return int(x)
1261 return int(x)
1262 except TypeError:
1262 except TypeError:
1263 return 0
1263 return 0
1264 # always pass integer line and offset values to editor hook
1264 # always pass integer line and offset values to editor hook
1265 self.hooks.fix_error_editor(e.filename,
1265 self.hooks.fix_error_editor(e.filename,
1266 int0(e.lineno),int0(e.offset),e.msg)
1266 int0(e.lineno),int0(e.offset),e.msg)
1267 return True
1267 return True
1268
1268
1269 def edit_syntax_error(self):
1269 def edit_syntax_error(self):
1270 """The bottom half of the syntax error handler called in the main loop.
1270 """The bottom half of the syntax error handler called in the main loop.
1271
1271
1272 Loop until syntax error is fixed or user cancels.
1272 Loop until syntax error is fixed or user cancels.
1273 """
1273 """
1274
1274
1275 while self.SyntaxTB.last_syntax_error:
1275 while self.SyntaxTB.last_syntax_error:
1276 # copy and clear last_syntax_error
1276 # copy and clear last_syntax_error
1277 err = self.SyntaxTB.clear_err_state()
1277 err = self.SyntaxTB.clear_err_state()
1278 if not self._should_recompile(err):
1278 if not self._should_recompile(err):
1279 return
1279 return
1280 try:
1280 try:
1281 # may set last_syntax_error again if a SyntaxError is raised
1281 # may set last_syntax_error again if a SyntaxError is raised
1282 self.safe_execfile(err.filename,self.user_ns)
1282 self.safe_execfile(err.filename,self.user_ns)
1283 except:
1283 except:
1284 self.showtraceback()
1284 self.showtraceback()
1285 else:
1285 else:
1286 try:
1286 try:
1287 f = file(err.filename)
1287 f = file(err.filename)
1288 try:
1288 try:
1289 sys.displayhook(f.read())
1289 sys.displayhook(f.read())
1290 finally:
1290 finally:
1291 f.close()
1291 f.close()
1292 except:
1292 except:
1293 self.showtraceback()
1293 self.showtraceback()
1294
1294
1295 def showsyntaxerror(self, filename=None):
1295 def showsyntaxerror(self, filename=None):
1296 """Display the syntax error that just occurred.
1296 """Display the syntax error that just occurred.
1297
1297
1298 This doesn't display a stack trace because there isn't one.
1298 This doesn't display a stack trace because there isn't one.
1299
1299
1300 If a filename is given, it is stuffed in the exception instead
1300 If a filename is given, it is stuffed in the exception instead
1301 of what was there before (because Python's parser always uses
1301 of what was there before (because Python's parser always uses
1302 "<string>" when reading from a string).
1302 "<string>" when reading from a string).
1303 """
1303 """
1304 etype, value, last_traceback = sys.exc_info()
1304 etype, value, last_traceback = sys.exc_info()
1305
1305
1306 # See note about these variables in showtraceback() below
1306 # See note about these variables in showtraceback() below
1307 sys.last_type = etype
1307 sys.last_type = etype
1308 sys.last_value = value
1308 sys.last_value = value
1309 sys.last_traceback = last_traceback
1309 sys.last_traceback = last_traceback
1310
1310
1311 if filename and etype is SyntaxError:
1311 if filename and etype is SyntaxError:
1312 # Work hard to stuff the correct filename in the exception
1312 # Work hard to stuff the correct filename in the exception
1313 try:
1313 try:
1314 msg, (dummy_filename, lineno, offset, line) = value
1314 msg, (dummy_filename, lineno, offset, line) = value
1315 except:
1315 except:
1316 # Not the format we expect; leave it alone
1316 # Not the format we expect; leave it alone
1317 pass
1317 pass
1318 else:
1318 else:
1319 # Stuff in the right filename
1319 # Stuff in the right filename
1320 try:
1320 try:
1321 # Assume SyntaxError is a class exception
1321 # Assume SyntaxError is a class exception
1322 value = SyntaxError(msg, (filename, lineno, offset, line))
1322 value = SyntaxError(msg, (filename, lineno, offset, line))
1323 except:
1323 except:
1324 # If that failed, assume SyntaxError is a string
1324 # If that failed, assume SyntaxError is a string
1325 value = msg, (filename, lineno, offset, line)
1325 value = msg, (filename, lineno, offset, line)
1326 self.SyntaxTB(etype,value,[])
1326 self.SyntaxTB(etype,value,[])
1327
1327
1328 def debugger(self):
1328 def debugger(self):
1329 """Call the pdb debugger."""
1329 """Call the pdb debugger."""
1330
1330
1331 if not self.rc.pdb:
1331 if not self.rc.pdb:
1332 return
1332 return
1333 pdb.pm()
1333 pdb.pm()
1334
1334
1335 def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None):
1335 def showtraceback(self,exc_tuple = None,filename=None,tb_offset=None):
1336 """Display the exception that just occurred.
1336 """Display the exception that just occurred.
1337
1337
1338 If nothing is known about the exception, this is the method which
1338 If nothing is known about the exception, this is the method which
1339 should be used throughout the code for presenting user tracebacks,
1339 should be used throughout the code for presenting user tracebacks,
1340 rather than directly invoking the InteractiveTB object.
1340 rather than directly invoking the InteractiveTB object.
1341
1341
1342 A specific showsyntaxerror() also exists, but this method can take
1342 A specific showsyntaxerror() also exists, but this method can take
1343 care of calling it if needed, so unless you are explicitly catching a
1343 care of calling it if needed, so unless you are explicitly catching a
1344 SyntaxError exception, don't try to analyze the stack manually and
1344 SyntaxError exception, don't try to analyze the stack manually and
1345 simply call this method."""
1345 simply call this method."""
1346
1346
1347 # Though this won't be called by syntax errors in the input line,
1347 # Though this won't be called by syntax errors in the input line,
1348 # there may be SyntaxError cases whith imported code.
1348 # there may be SyntaxError cases whith imported code.
1349 if exc_tuple is None:
1349 if exc_tuple is None:
1350 etype, value, tb = sys.exc_info()
1350 etype, value, tb = sys.exc_info()
1351 else:
1351 else:
1352 etype, value, tb = exc_tuple
1352 etype, value, tb = exc_tuple
1353 if etype is SyntaxError:
1353 if etype is SyntaxError:
1354 self.showsyntaxerror(filename)
1354 self.showsyntaxerror(filename)
1355 else:
1355 else:
1356 # WARNING: these variables are somewhat deprecated and not
1356 # WARNING: these variables are somewhat deprecated and not
1357 # necessarily safe to use in a threaded environment, but tools
1357 # necessarily safe to use in a threaded environment, but tools
1358 # like pdb depend on their existence, so let's set them. If we
1358 # like pdb depend on their existence, so let's set them. If we
1359 # find problems in the field, we'll need to revisit their use.
1359 # find problems in the field, we'll need to revisit their use.
1360 sys.last_type = etype
1360 sys.last_type = etype
1361 sys.last_value = value
1361 sys.last_value = value
1362 sys.last_traceback = tb
1362 sys.last_traceback = tb
1363
1363
1364 self.InteractiveTB(etype,value,tb,tb_offset=tb_offset)
1364 self.InteractiveTB(etype,value,tb,tb_offset=tb_offset)
1365 if self.InteractiveTB.call_pdb and self.has_readline:
1365 if self.InteractiveTB.call_pdb and self.has_readline:
1366 # pdb mucks up readline, fix it back
1366 # pdb mucks up readline, fix it back
1367 self.readline.set_completer(self.Completer.complete)
1367 self.readline.set_completer(self.Completer.complete)
1368
1368
1369 def mainloop(self,banner=None):
1369 def mainloop(self,banner=None):
1370 """Creates the local namespace and starts the mainloop.
1370 """Creates the local namespace and starts the mainloop.
1371
1371
1372 If an optional banner argument is given, it will override the
1372 If an optional banner argument is given, it will override the
1373 internally created default banner."""
1373 internally created default banner."""
1374
1374
1375 if self.rc.c: # Emulate Python's -c option
1375 if self.rc.c: # Emulate Python's -c option
1376 self.exec_init_cmd()
1376 self.exec_init_cmd()
1377 if banner is None:
1377 if banner is None:
1378 if not self.rc.banner:
1378 if not self.rc.banner:
1379 banner = ''
1379 banner = ''
1380 # banner is string? Use it directly!
1380 # banner is string? Use it directly!
1381 elif isinstance(self.rc.banner,basestring):
1381 elif isinstance(self.rc.banner,basestring):
1382 banner = self.rc.banner
1382 banner = self.rc.banner
1383 else:
1383 else:
1384 banner = self.BANNER+self.banner2
1384 banner = self.BANNER+self.banner2
1385
1385
1386 self.interact(banner)
1386 self.interact(banner)
1387
1387
1388 def exec_init_cmd(self):
1388 def exec_init_cmd(self):
1389 """Execute a command given at the command line.
1389 """Execute a command given at the command line.
1390
1390
1391 This emulates Python's -c option."""
1391 This emulates Python's -c option."""
1392
1392
1393 #sys.argv = ['-c']
1393 #sys.argv = ['-c']
1394 self.push(self.rc.c)
1394 self.push(self.rc.c)
1395
1395
1396 def embed_mainloop(self,header='',local_ns=None,global_ns=None,stack_depth=0):
1396 def embed_mainloop(self,header='',local_ns=None,global_ns=None,stack_depth=0):
1397 """Embeds IPython into a running python program.
1397 """Embeds IPython into a running python program.
1398
1398
1399 Input:
1399 Input:
1400
1400
1401 - header: An optional header message can be specified.
1401 - header: An optional header message can be specified.
1402
1402
1403 - local_ns, global_ns: working namespaces. If given as None, the
1403 - local_ns, global_ns: working namespaces. If given as None, the
1404 IPython-initialized one is updated with __main__.__dict__, so that
1404 IPython-initialized one is updated with __main__.__dict__, so that
1405 program variables become visible but user-specific configuration
1405 program variables become visible but user-specific configuration
1406 remains possible.
1406 remains possible.
1407
1407
1408 - stack_depth: specifies how many levels in the stack to go to
1408 - stack_depth: specifies how many levels in the stack to go to
1409 looking for namespaces (when local_ns and global_ns are None). This
1409 looking for namespaces (when local_ns and global_ns are None). This
1410 allows an intermediate caller to make sure that this function gets
1410 allows an intermediate caller to make sure that this function gets
1411 the namespace from the intended level in the stack. By default (0)
1411 the namespace from the intended level in the stack. By default (0)
1412 it will get its locals and globals from the immediate caller.
1412 it will get its locals and globals from the immediate caller.
1413
1413
1414 Warning: it's possible to use this in a program which is being run by
1414 Warning: it's possible to use this in a program which is being run by
1415 IPython itself (via %run), but some funny things will happen (a few
1415 IPython itself (via %run), but some funny things will happen (a few
1416 globals get overwritten). In the future this will be cleaned up, as
1416 globals get overwritten). In the future this will be cleaned up, as
1417 there is no fundamental reason why it can't work perfectly."""
1417 there is no fundamental reason why it can't work perfectly."""
1418
1418
1419 # Get locals and globals from caller
1419 # Get locals and globals from caller
1420 if local_ns is None or global_ns is None:
1420 if local_ns is None or global_ns is None:
1421 call_frame = sys._getframe(stack_depth).f_back
1421 call_frame = sys._getframe(stack_depth).f_back
1422
1422
1423 if local_ns is None:
1423 if local_ns is None:
1424 local_ns = call_frame.f_locals
1424 local_ns = call_frame.f_locals
1425 if global_ns is None:
1425 if global_ns is None:
1426 global_ns = call_frame.f_globals
1426 global_ns = call_frame.f_globals
1427
1427
1428 # Update namespaces and fire up interpreter
1428 # Update namespaces and fire up interpreter
1429
1429
1430 # The global one is easy, we can just throw it in
1430 # The global one is easy, we can just throw it in
1431 self.user_global_ns = global_ns
1431 self.user_global_ns = global_ns
1432
1432
1433 # but the user/local one is tricky: ipython needs it to store internal
1433 # but the user/local one is tricky: ipython needs it to store internal
1434 # data, but we also need the locals. We'll copy locals in the user
1434 # data, but we also need the locals. We'll copy locals in the user
1435 # one, but will track what got copied so we can delete them at exit.
1435 # one, but will track what got copied so we can delete them at exit.
1436 # This is so that a later embedded call doesn't see locals from a
1436 # This is so that a later embedded call doesn't see locals from a
1437 # previous call (which most likely existed in a separate scope).
1437 # previous call (which most likely existed in a separate scope).
1438 local_varnames = local_ns.keys()
1438 local_varnames = local_ns.keys()
1439 self.user_ns.update(local_ns)
1439 self.user_ns.update(local_ns)
1440
1440
1441 # Patch for global embedding to make sure that things don't overwrite
1441 # Patch for global embedding to make sure that things don't overwrite
1442 # user globals accidentally. Thanks to Richard <rxe@renre-europe.com>
1442 # user globals accidentally. Thanks to Richard <rxe@renre-europe.com>
1443 # FIXME. Test this a bit more carefully (the if.. is new)
1443 # FIXME. Test this a bit more carefully (the if.. is new)
1444 if local_ns is None and global_ns is None:
1444 if local_ns is None and global_ns is None:
1445 self.user_global_ns.update(__main__.__dict__)
1445 self.user_global_ns.update(__main__.__dict__)
1446
1446
1447 # make sure the tab-completer has the correct frame information, so it
1447 # make sure the tab-completer has the correct frame information, so it
1448 # actually completes using the frame's locals/globals
1448 # actually completes using the frame's locals/globals
1449 self.set_completer_frame()
1449 self.set_completer_frame()
1450
1450
1451 # before activating the interactive mode, we need to make sure that
1451 # before activating the interactive mode, we need to make sure that
1452 # all names in the builtin namespace needed by ipython point to
1452 # all names in the builtin namespace needed by ipython point to
1453 # ourselves, and not to other instances.
1453 # ourselves, and not to other instances.
1454 self.add_builtins()
1454 self.add_builtins()
1455
1455
1456 self.interact(header)
1456 self.interact(header)
1457
1457
1458 # now, purge out the user namespace from anything we might have added
1458 # now, purge out the user namespace from anything we might have added
1459 # from the caller's local namespace
1459 # from the caller's local namespace
1460 delvar = self.user_ns.pop
1460 delvar = self.user_ns.pop
1461 for var in local_varnames:
1461 for var in local_varnames:
1462 delvar(var,None)
1462 delvar(var,None)
1463 # and clean builtins we may have overridden
1463 # and clean builtins we may have overridden
1464 self.clean_builtins()
1464 self.clean_builtins()
1465
1465
1466 def interact(self, banner=None):
1466 def interact(self, banner=None):
1467 """Closely emulate the interactive Python console.
1467 """Closely emulate the interactive Python console.
1468
1468
1469 The optional banner argument specify the banner to print
1469 The optional banner argument specify the banner to print
1470 before the first interaction; by default it prints a banner
1470 before the first interaction; by default it prints a banner
1471 similar to the one printed by the real Python interpreter,
1471 similar to the one printed by the real Python interpreter,
1472 followed by the current class name in parentheses (so as not
1472 followed by the current class name in parentheses (so as not
1473 to confuse this with the real interpreter -- since it's so
1473 to confuse this with the real interpreter -- since it's so
1474 close!).
1474 close!).
1475
1475
1476 """
1476 """
1477
1477
1478 if self.exit_now:
1478 if self.exit_now:
1479 # batch run -> do not interact
1479 # batch run -> do not interact
1480 return
1480 return
1481 cprt = 'Type "copyright", "credits" or "license" for more information.'
1481 cprt = 'Type "copyright", "credits" or "license" for more information.'
1482 if banner is None:
1482 if banner is None:
1483 self.write("Python %s on %s\n%s\n(%s)\n" %
1483 self.write("Python %s on %s\n%s\n(%s)\n" %
1484 (sys.version, sys.platform, cprt,
1484 (sys.version, sys.platform, cprt,
1485 self.__class__.__name__))
1485 self.__class__.__name__))
1486 else:
1486 else:
1487 self.write(banner)
1487 self.write(banner)
1488
1488
1489 more = 0
1489 more = 0
1490
1490
1491 # Mark activity in the builtins
1491 # Mark activity in the builtins
1492 __builtin__.__dict__['__IPYTHON__active'] += 1
1492 __builtin__.__dict__['__IPYTHON__active'] += 1
1493
1493
1494 # exit_now is set by a call to %Exit or %Quit
1494 # exit_now is set by a call to %Exit or %Quit
1495 while not self.exit_now:
1495 while not self.exit_now:
1496 if more:
1496 if more:
1497 prompt = self.hooks.generate_prompt(True)
1497 prompt = self.hooks.generate_prompt(True)
1498 if self.autoindent:
1498 if self.autoindent:
1499 self.readline_startup_hook(self.pre_readline)
1499 self.readline_startup_hook(self.pre_readline)
1500 else:
1500 else:
1501 prompt = self.hooks.generate_prompt(False)
1501 prompt = self.hooks.generate_prompt(False)
1502 try:
1502 try:
1503 line = self.raw_input(prompt,more)
1503 line = self.raw_input(prompt,more)
1504 if self.autoindent:
1504 if self.autoindent:
1505 self.readline_startup_hook(None)
1505 self.readline_startup_hook(None)
1506 except KeyboardInterrupt:
1506 except KeyboardInterrupt:
1507 self.write('\nKeyboardInterrupt\n')
1507 self.write('\nKeyboardInterrupt\n')
1508 self.resetbuffer()
1508 self.resetbuffer()
1509 # keep cache in sync with the prompt counter:
1509 # keep cache in sync with the prompt counter:
1510 self.outputcache.prompt_count -= 1
1510 self.outputcache.prompt_count -= 1
1511
1511
1512 if self.autoindent:
1512 if self.autoindent:
1513 self.indent_current_nsp = 0
1513 self.indent_current_nsp = 0
1514 more = 0
1514 more = 0
1515 except EOFError:
1515 except EOFError:
1516 if self.autoindent:
1516 if self.autoindent:
1517 self.readline_startup_hook(None)
1517 self.readline_startup_hook(None)
1518 self.write('\n')
1518 self.write('\n')
1519 self.exit()
1519 self.exit()
1520 except bdb.BdbQuit:
1520 except bdb.BdbQuit:
1521 warn('The Python debugger has exited with a BdbQuit exception.\n'
1521 warn('The Python debugger has exited with a BdbQuit exception.\n'
1522 'Because of how pdb handles the stack, it is impossible\n'
1522 'Because of how pdb handles the stack, it is impossible\n'
1523 'for IPython to properly format this particular exception.\n'
1523 'for IPython to properly format this particular exception.\n'
1524 'IPython will resume normal operation.')
1524 'IPython will resume normal operation.')
1525 except:
1525 except:
1526 # exceptions here are VERY RARE, but they can be triggered
1526 # exceptions here are VERY RARE, but they can be triggered
1527 # asynchronously by signal handlers, for example.
1527 # asynchronously by signal handlers, for example.
1528 self.showtraceback()
1528 self.showtraceback()
1529 else:
1529 else:
1530 more = self.push(line)
1530 more = self.push(line)
1531 if (self.SyntaxTB.last_syntax_error and
1531 if (self.SyntaxTB.last_syntax_error and
1532 self.rc.autoedit_syntax):
1532 self.rc.autoedit_syntax):
1533 self.edit_syntax_error()
1533 self.edit_syntax_error()
1534
1534
1535 # We are off again...
1535 # We are off again...
1536 __builtin__.__dict__['__IPYTHON__active'] -= 1
1536 __builtin__.__dict__['__IPYTHON__active'] -= 1
1537
1537
1538 def excepthook(self, etype, value, tb):
1538 def excepthook(self, etype, value, tb):
1539 """One more defense for GUI apps that call sys.excepthook.
1539 """One more defense for GUI apps that call sys.excepthook.
1540
1540
1541 GUI frameworks like wxPython trap exceptions and call
1541 GUI frameworks like wxPython trap exceptions and call
1542 sys.excepthook themselves. I guess this is a feature that
1542 sys.excepthook themselves. I guess this is a feature that
1543 enables them to keep running after exceptions that would
1543 enables them to keep running after exceptions that would
1544 otherwise kill their mainloop. This is a bother for IPython
1544 otherwise kill their mainloop. This is a bother for IPython
1545 which excepts to catch all of the program exceptions with a try:
1545 which excepts to catch all of the program exceptions with a try:
1546 except: statement.
1546 except: statement.
1547
1547
1548 Normally, IPython sets sys.excepthook to a CrashHandler instance, so if
1548 Normally, IPython sets sys.excepthook to a CrashHandler instance, so if
1549 any app directly invokes sys.excepthook, it will look to the user like
1549 any app directly invokes sys.excepthook, it will look to the user like
1550 IPython crashed. In order to work around this, we can disable the
1550 IPython crashed. In order to work around this, we can disable the
1551 CrashHandler and replace it with this excepthook instead, which prints a
1551 CrashHandler and replace it with this excepthook instead, which prints a
1552 regular traceback using our InteractiveTB. In this fashion, apps which
1552 regular traceback using our InteractiveTB. In this fashion, apps which
1553 call sys.excepthook will generate a regular-looking exception from
1553 call sys.excepthook will generate a regular-looking exception from
1554 IPython, and the CrashHandler will only be triggered by real IPython
1554 IPython, and the CrashHandler will only be triggered by real IPython
1555 crashes.
1555 crashes.
1556
1556
1557 This hook should be used sparingly, only in places which are not likely
1557 This hook should be used sparingly, only in places which are not likely
1558 to be true IPython errors.
1558 to be true IPython errors.
1559 """
1559 """
1560 self.showtraceback((etype,value,tb),tb_offset=0)
1560 self.showtraceback((etype,value,tb),tb_offset=0)
1561
1561
1562 def transform_alias(self, alias,rest=''):
1562 def transform_alias(self, alias,rest=''):
1563 """ Transform alias to system command string.
1563 """ Transform alias to system command string.
1564 """
1564 """
1565 nargs,cmd = self.alias_table[alias]
1565 nargs,cmd = self.alias_table[alias]
1566 if ' ' in cmd and os.path.isfile(cmd):
1566 if ' ' in cmd and os.path.isfile(cmd):
1567 cmd = '"%s"' % cmd
1567 cmd = '"%s"' % cmd
1568
1568
1569 # Expand the %l special to be the user's input line
1569 # Expand the %l special to be the user's input line
1570 if cmd.find('%l') >= 0:
1570 if cmd.find('%l') >= 0:
1571 cmd = cmd.replace('%l',rest)
1571 cmd = cmd.replace('%l',rest)
1572 rest = ''
1572 rest = ''
1573 if nargs==0:
1573 if nargs==0:
1574 # Simple, argument-less aliases
1574 # Simple, argument-less aliases
1575 cmd = '%s %s' % (cmd,rest)
1575 cmd = '%s %s' % (cmd,rest)
1576 else:
1576 else:
1577 # Handle aliases with positional arguments
1577 # Handle aliases with positional arguments
1578 args = rest.split(None,nargs)
1578 args = rest.split(None,nargs)
1579 if len(args)< nargs:
1579 if len(args)< nargs:
1580 error('Alias <%s> requires %s arguments, %s given.' %
1580 error('Alias <%s> requires %s arguments, %s given.' %
1581 (alias,nargs,len(args)))
1581 (alias,nargs,len(args)))
1582 return None
1582 return None
1583 cmd = '%s %s' % (cmd % tuple(args[:nargs]),' '.join(args[nargs:]))
1583 cmd = '%s %s' % (cmd % tuple(args[:nargs]),' '.join(args[nargs:]))
1584 # Now call the macro, evaluating in the user's namespace
1584 # Now call the macro, evaluating in the user's namespace
1585 #print 'new command: <%r>' % cmd # dbg
1585 #print 'new command: <%r>' % cmd # dbg
1586 return cmd
1586 return cmd
1587
1587
1588 def call_alias(self,alias,rest=''):
1588 def call_alias(self,alias,rest=''):
1589 """Call an alias given its name and the rest of the line.
1589 """Call an alias given its name and the rest of the line.
1590
1590
1591 This is only used to provide backwards compatibility for users of
1591 This is only used to provide backwards compatibility for users of
1592 ipalias(), use of which is not recommended for anymore."""
1592 ipalias(), use of which is not recommended for anymore."""
1593
1593
1594 # Now call the macro, evaluating in the user's namespace
1594 # Now call the macro, evaluating in the user's namespace
1595 cmd = self.transform_alias(alias, rest)
1595 cmd = self.transform_alias(alias, rest)
1596 try:
1596 try:
1597 self.system(cmd)
1597 self.system(cmd)
1598 except:
1598 except:
1599 self.showtraceback()
1599 self.showtraceback()
1600
1600
1601 def indent_current_str(self):
1601 def indent_current_str(self):
1602 """return the current level of indentation as a string"""
1602 """return the current level of indentation as a string"""
1603 return self.indent_current_nsp * ' '
1603 return self.indent_current_nsp * ' '
1604
1604
1605 def autoindent_update(self,line):
1605 def autoindent_update(self,line):
1606 """Keep track of the indent level."""
1606 """Keep track of the indent level."""
1607
1607
1608 #debugx('line')
1608 #debugx('line')
1609 #debugx('self.indent_current_nsp')
1609 #debugx('self.indent_current_nsp')
1610 if self.autoindent:
1610 if self.autoindent:
1611 if line:
1611 if line:
1612 inisp = num_ini_spaces(line)
1612 inisp = num_ini_spaces(line)
1613 if inisp < self.indent_current_nsp:
1613 if inisp < self.indent_current_nsp:
1614 self.indent_current_nsp = inisp
1614 self.indent_current_nsp = inisp
1615
1615
1616 if line[-1] == ':':
1616 if line[-1] == ':':
1617 self.indent_current_nsp += 4
1617 self.indent_current_nsp += 4
1618 elif dedent_re.match(line):
1618 elif dedent_re.match(line):
1619 self.indent_current_nsp -= 4
1619 self.indent_current_nsp -= 4
1620 else:
1620 else:
1621 self.indent_current_nsp = 0
1621 self.indent_current_nsp = 0
1622
1622
1623 def runlines(self,lines):
1623 def runlines(self,lines):
1624 """Run a string of one or more lines of source.
1624 """Run a string of one or more lines of source.
1625
1625
1626 This method is capable of running a string containing multiple source
1626 This method is capable of running a string containing multiple source
1627 lines, as if they had been entered at the IPython prompt. Since it
1627 lines, as if they had been entered at the IPython prompt. Since it
1628 exposes IPython's processing machinery, the given strings can contain
1628 exposes IPython's processing machinery, the given strings can contain
1629 magic calls (%magic), special shell access (!cmd), etc."""
1629 magic calls (%magic), special shell access (!cmd), etc."""
1630
1630
1631 # We must start with a clean buffer, in case this is run from an
1631 # We must start with a clean buffer, in case this is run from an
1632 # interactive IPython session (via a magic, for example).
1632 # interactive IPython session (via a magic, for example).
1633 self.resetbuffer()
1633 self.resetbuffer()
1634 lines = lines.split('\n')
1634 lines = lines.split('\n')
1635 more = 0
1635 more = 0
1636 for line in lines:
1636 for line in lines:
1637 # skip blank lines so we don't mess up the prompt counter, but do
1637 # skip blank lines so we don't mess up the prompt counter, but do
1638 # NOT skip even a blank line if we are in a code block (more is
1638 # NOT skip even a blank line if we are in a code block (more is
1639 # true)
1639 # true)
1640 if line or more:
1640 if line or more:
1641 more = self.push(self.prefilter(line,more))
1641 more = self.push(self.prefilter(line,more))
1642 # IPython's runsource returns None if there was an error
1642 # IPython's runsource returns None if there was an error
1643 # compiling the code. This allows us to stop processing right
1643 # compiling the code. This allows us to stop processing right
1644 # away, so the user gets the error message at the right place.
1644 # away, so the user gets the error message at the right place.
1645 if more is None:
1645 if more is None:
1646 break
1646 break
1647 # final newline in case the input didn't have it, so that the code
1647 # final newline in case the input didn't have it, so that the code
1648 # actually does get executed
1648 # actually does get executed
1649 if more:
1649 if more:
1650 self.push('\n')
1650 self.push('\n')
1651
1651
1652 def runsource(self, source, filename='<input>', symbol='single'):
1652 def runsource(self, source, filename='<input>', symbol='single'):
1653 """Compile and run some source in the interpreter.
1653 """Compile and run some source in the interpreter.
1654
1654
1655 Arguments are as for compile_command().
1655 Arguments are as for compile_command().
1656
1656
1657 One several things can happen:
1657 One several things can happen:
1658
1658
1659 1) The input is incorrect; compile_command() raised an
1659 1) The input is incorrect; compile_command() raised an
1660 exception (SyntaxError or OverflowError). A syntax traceback
1660 exception (SyntaxError or OverflowError). A syntax traceback
1661 will be printed by calling the showsyntaxerror() method.
1661 will be printed by calling the showsyntaxerror() method.
1662
1662
1663 2) The input is incomplete, and more input is required;
1663 2) The input is incomplete, and more input is required;
1664 compile_command() returned None. Nothing happens.
1664 compile_command() returned None. Nothing happens.
1665
1665
1666 3) The input is complete; compile_command() returned a code
1666 3) The input is complete; compile_command() returned a code
1667 object. The code is executed by calling self.runcode() (which
1667 object. The code is executed by calling self.runcode() (which
1668 also handles run-time exceptions, except for SystemExit).
1668 also handles run-time exceptions, except for SystemExit).
1669
1669
1670 The return value is:
1670 The return value is:
1671
1671
1672 - True in case 2
1672 - True in case 2
1673
1673
1674 - False in the other cases, unless an exception is raised, where
1674 - False in the other cases, unless an exception is raised, where
1675 None is returned instead. This can be used by external callers to
1675 None is returned instead. This can be used by external callers to
1676 know whether to continue feeding input or not.
1676 know whether to continue feeding input or not.
1677
1677
1678 The return value can be used to decide whether to use sys.ps1 or
1678 The return value can be used to decide whether to use sys.ps1 or
1679 sys.ps2 to prompt the next line."""
1679 sys.ps2 to prompt the next line."""
1680
1680
1681 try:
1681 try:
1682 code = self.compile(source,filename,symbol)
1682 code = self.compile(source,filename,symbol)
1683 except (OverflowError, SyntaxError, ValueError):
1683 except (OverflowError, SyntaxError, ValueError):
1684 # Case 1
1684 # Case 1
1685 self.showsyntaxerror(filename)
1685 self.showsyntaxerror(filename)
1686 return None
1686 return None
1687
1687
1688 if code is None:
1688 if code is None:
1689 # Case 2
1689 # Case 2
1690 return True
1690 return True
1691
1691
1692 # Case 3
1692 # Case 3
1693 # We store the code object so that threaded shells and
1693 # We store the code object so that threaded shells and
1694 # custom exception handlers can access all this info if needed.
1694 # custom exception handlers can access all this info if needed.
1695 # The source corresponding to this can be obtained from the
1695 # The source corresponding to this can be obtained from the
1696 # buffer attribute as '\n'.join(self.buffer).
1696 # buffer attribute as '\n'.join(self.buffer).
1697 self.code_to_run = code
1697 self.code_to_run = code
1698 # now actually execute the code object
1698 # now actually execute the code object
1699 if self.runcode(code) == 0:
1699 if self.runcode(code) == 0:
1700 return False
1700 return False
1701 else:
1701 else:
1702 return None
1702 return None
1703
1703
1704 def runcode(self,code_obj):
1704 def runcode(self,code_obj):
1705 """Execute a code object.
1705 """Execute a code object.
1706
1706
1707 When an exception occurs, self.showtraceback() is called to display a
1707 When an exception occurs, self.showtraceback() is called to display a
1708 traceback.
1708 traceback.
1709
1709
1710 Return value: a flag indicating whether the code to be run completed
1710 Return value: a flag indicating whether the code to be run completed
1711 successfully:
1711 successfully:
1712
1712
1713 - 0: successful execution.
1713 - 0: successful execution.
1714 - 1: an error occurred.
1714 - 1: an error occurred.
1715 """
1715 """
1716
1716
1717 # Set our own excepthook in case the user code tries to call it
1717 # Set our own excepthook in case the user code tries to call it
1718 # directly, so that the IPython crash handler doesn't get triggered
1718 # directly, so that the IPython crash handler doesn't get triggered
1719 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
1719 old_excepthook,sys.excepthook = sys.excepthook, self.excepthook
1720
1720
1721 # we save the original sys.excepthook in the instance, in case config
1721 # we save the original sys.excepthook in the instance, in case config
1722 # code (such as magics) needs access to it.
1722 # code (such as magics) needs access to it.
1723 self.sys_excepthook = old_excepthook
1723 self.sys_excepthook = old_excepthook
1724 outflag = 1 # happens in more places, so it's easier as default
1724 outflag = 1 # happens in more places, so it's easier as default
1725 try:
1725 try:
1726 try:
1726 try:
1727 # Embedded instances require separate global/local namespaces
1727 # Embedded instances require separate global/local namespaces
1728 # so they can see both the surrounding (local) namespace and
1728 # so they can see both the surrounding (local) namespace and
1729 # the module-level globals when called inside another function.
1729 # the module-level globals when called inside another function.
1730 if self.embedded:
1730 if self.embedded:
1731 exec code_obj in self.user_global_ns, self.user_ns
1731 exec code_obj in self.user_global_ns, self.user_ns
1732 # Normal (non-embedded) instances should only have a single
1732 # Normal (non-embedded) instances should only have a single
1733 # namespace for user code execution, otherwise functions won't
1733 # namespace for user code execution, otherwise functions won't
1734 # see interactive top-level globals.
1734 # see interactive top-level globals.
1735 else:
1735 else:
1736 exec code_obj in self.user_ns
1736 exec code_obj in self.user_ns
1737 finally:
1737 finally:
1738 # Reset our crash handler in place
1738 # Reset our crash handler in place
1739 sys.excepthook = old_excepthook
1739 sys.excepthook = old_excepthook
1740 except SystemExit:
1740 except SystemExit:
1741 self.resetbuffer()
1741 self.resetbuffer()
1742 self.showtraceback()
1742 self.showtraceback()
1743 warn("Type exit or quit to exit IPython "
1743 warn("Type exit or quit to exit IPython "
1744 "(%Exit or %Quit do so unconditionally).",level=1)
1744 "(%Exit or %Quit do so unconditionally).",level=1)
1745 except self.custom_exceptions:
1745 except self.custom_exceptions:
1746 etype,value,tb = sys.exc_info()
1746 etype,value,tb = sys.exc_info()
1747 self.CustomTB(etype,value,tb)
1747 self.CustomTB(etype,value,tb)
1748 except:
1748 except:
1749 self.showtraceback()
1749 self.showtraceback()
1750 else:
1750 else:
1751 outflag = 0
1751 outflag = 0
1752 if softspace(sys.stdout, 0):
1752 if softspace(sys.stdout, 0):
1753 print
1753 print
1754 # Flush out code object which has been run (and source)
1754 # Flush out code object which has been run (and source)
1755 self.code_to_run = None
1755 self.code_to_run = None
1756 return outflag
1756 return outflag
1757
1757
1758 def push(self, line):
1758 def push(self, line):
1759 """Push a line to the interpreter.
1759 """Push a line to the interpreter.
1760
1760
1761 The line should not have a trailing newline; it may have
1761 The line should not have a trailing newline; it may have
1762 internal newlines. The line is appended to a buffer and the
1762 internal newlines. The line is appended to a buffer and the
1763 interpreter's runsource() method is called with the
1763 interpreter's runsource() method is called with the
1764 concatenated contents of the buffer as source. If this
1764 concatenated contents of the buffer as source. If this
1765 indicates that the command was executed or invalid, the buffer
1765 indicates that the command was executed or invalid, the buffer
1766 is reset; otherwise, the command is incomplete, and the buffer
1766 is reset; otherwise, the command is incomplete, and the buffer
1767 is left as it was after the line was appended. The return
1767 is left as it was after the line was appended. The return
1768 value is 1 if more input is required, 0 if the line was dealt
1768 value is 1 if more input is required, 0 if the line was dealt
1769 with in some way (this is the same as runsource()).
1769 with in some way (this is the same as runsource()).
1770 """
1770 """
1771
1771
1772 # autoindent management should be done here, and not in the
1772 # autoindent management should be done here, and not in the
1773 # interactive loop, since that one is only seen by keyboard input. We
1773 # interactive loop, since that one is only seen by keyboard input. We
1774 # need this done correctly even for code run via runlines (which uses
1774 # need this done correctly even for code run via runlines (which uses
1775 # push).
1775 # push).
1776
1776
1777 #print 'push line: <%s>' % line # dbg
1777 #print 'push line: <%s>' % line # dbg
1778 self.autoindent_update(line)
1778 for subline in line.splitlines():
1779
1779 self.autoindent_update(subline)
1780 self.buffer.append(line)
1780 self.buffer.append(line)
1781 more = self.runsource('\n'.join(self.buffer), self.filename)
1781 more = self.runsource('\n'.join(self.buffer), self.filename)
1782 if not more:
1782 if not more:
1783 self.resetbuffer()
1783 self.resetbuffer()
1784 return more
1784 return more
1785
1785
1786 def resetbuffer(self):
1786 def resetbuffer(self):
1787 """Reset the input buffer."""
1787 """Reset the input buffer."""
1788 self.buffer[:] = []
1788 self.buffer[:] = []
1789
1789
1790 def raw_input(self,prompt='',continue_prompt=False):
1790 def raw_input(self,prompt='',continue_prompt=False):
1791 """Write a prompt and read a line.
1791 """Write a prompt and read a line.
1792
1792
1793 The returned line does not include the trailing newline.
1793 The returned line does not include the trailing newline.
1794 When the user enters the EOF key sequence, EOFError is raised.
1794 When the user enters the EOF key sequence, EOFError is raised.
1795
1795
1796 Optional inputs:
1796 Optional inputs:
1797
1797
1798 - prompt(''): a string to be printed to prompt the user.
1798 - prompt(''): a string to be printed to prompt the user.
1799
1799
1800 - continue_prompt(False): whether this line is the first one or a
1800 - continue_prompt(False): whether this line is the first one or a
1801 continuation in a sequence of inputs.
1801 continuation in a sequence of inputs.
1802 """
1802 """
1803
1803
1804 line = raw_input_original(prompt)
1804 line = raw_input_original(prompt)
1805
1805
1806 # Try to be reasonably smart about not re-indenting pasted input more
1806 # Try to be reasonably smart about not re-indenting pasted input more
1807 # than necessary. We do this by trimming out the auto-indent initial
1807 # than necessary. We do this by trimming out the auto-indent initial
1808 # spaces, if the user's actual input started itself with whitespace.
1808 # spaces, if the user's actual input started itself with whitespace.
1809 #debugx('self.buffer[-1]')
1809 #debugx('self.buffer[-1]')
1810
1810
1811 if self.autoindent:
1811 if self.autoindent:
1812 if num_ini_spaces(line) > self.indent_current_nsp:
1812 if num_ini_spaces(line) > self.indent_current_nsp:
1813 line = line[self.indent_current_nsp:]
1813 line = line[self.indent_current_nsp:]
1814 self.indent_current_nsp = 0
1814 self.indent_current_nsp = 0
1815
1815
1816 # store the unfiltered input before the user has any chance to modify
1816 # store the unfiltered input before the user has any chance to modify
1817 # it.
1817 # it.
1818 if line.strip():
1818 if line.strip():
1819 if continue_prompt:
1819 if continue_prompt:
1820 self.input_hist_raw[-1] += '%s\n' % line
1820 self.input_hist_raw[-1] += '%s\n' % line
1821 if self.has_readline: # and some config option is set?
1822 try:
1823 histlen = self.readline.get_current_history_length()
1824 newhist = self.input_hist_raw[-1].rstrip()
1825 self.readline.remove_history_item(histlen-1)
1826 self.readline.replace_history_item(histlen-2,newhist)
1827 except AttributeError:
1828 pass # re{move,place}_history_item are new in 2.4.
1821 else:
1829 else:
1822 self.input_hist_raw.append('%s\n' % line)
1830 self.input_hist_raw.append('%s\n' % line)
1823
1831
1824 try:
1832 try:
1825 lineout = self.prefilter(line,continue_prompt)
1833 lineout = self.prefilter(line,continue_prompt)
1826 except:
1834 except:
1827 # blanket except, in case a user-defined prefilter crashes, so it
1835 # blanket except, in case a user-defined prefilter crashes, so it
1828 # can't take all of ipython with it.
1836 # can't take all of ipython with it.
1829 self.showtraceback()
1837 self.showtraceback()
1830 return ''
1838 return ''
1831 else:
1839 else:
1832 return lineout
1840 return lineout
1833
1841
1834 def split_user_input(self,line):
1842 def split_user_input(self,line):
1835 """Split user input into pre-char, function part and rest."""
1843 """Split user input into pre-char, function part and rest."""
1836
1844
1837 lsplit = self.line_split.match(line)
1845 lsplit = self.line_split.match(line)
1838 if lsplit is None: # no regexp match returns None
1846 if lsplit is None: # no regexp match returns None
1839 try:
1847 try:
1840 iFun,theRest = line.split(None,1)
1848 iFun,theRest = line.split(None,1)
1841 except ValueError:
1849 except ValueError:
1842 iFun,theRest = line,''
1850 iFun,theRest = line,''
1843 pre = re.match('^(\s*)(.*)',line).groups()[0]
1851 pre = re.match('^(\s*)(.*)',line).groups()[0]
1844 else:
1852 else:
1845 pre,iFun,theRest = lsplit.groups()
1853 pre,iFun,theRest = lsplit.groups()
1846
1854
1847 #print 'line:<%s>' % line # dbg
1855 #print 'line:<%s>' % line # dbg
1848 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
1856 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun.strip(),theRest) # dbg
1849 return pre,iFun.strip(),theRest
1857 return pre,iFun.strip(),theRest
1850
1858
1851 def _prefilter(self, line, continue_prompt):
1859 def _prefilter(self, line, continue_prompt):
1852 """Calls different preprocessors, depending on the form of line."""
1860 """Calls different preprocessors, depending on the form of line."""
1853
1861
1854 # All handlers *must* return a value, even if it's blank ('').
1862 # All handlers *must* return a value, even if it's blank ('').
1855
1863
1856 # Lines are NOT logged here. Handlers should process the line as
1864 # Lines are NOT logged here. Handlers should process the line as
1857 # needed, update the cache AND log it (so that the input cache array
1865 # needed, update the cache AND log it (so that the input cache array
1858 # stays synced).
1866 # stays synced).
1859
1867
1860 # This function is _very_ delicate, and since it's also the one which
1868 # This function is _very_ delicate, and since it's also the one which
1861 # determines IPython's response to user input, it must be as efficient
1869 # determines IPython's response to user input, it must be as efficient
1862 # as possible. For this reason it has _many_ returns in it, trying
1870 # as possible. For this reason it has _many_ returns in it, trying
1863 # always to exit as quickly as it can figure out what it needs to do.
1871 # always to exit as quickly as it can figure out what it needs to do.
1864
1872
1865 # This function is the main responsible for maintaining IPython's
1873 # This function is the main responsible for maintaining IPython's
1866 # behavior respectful of Python's semantics. So be _very_ careful if
1874 # behavior respectful of Python's semantics. So be _very_ careful if
1867 # making changes to anything here.
1875 # making changes to anything here.
1868
1876
1869 #.....................................................................
1877 #.....................................................................
1870 # Code begins
1878 # Code begins
1871
1879
1872 #if line.startswith('%crash'): raise RuntimeError,'Crash now!' # dbg
1880 #if line.startswith('%crash'): raise RuntimeError,'Crash now!' # dbg
1873
1881
1874 # save the line away in case we crash, so the post-mortem handler can
1882 # save the line away in case we crash, so the post-mortem handler can
1875 # record it
1883 # record it
1876 self._last_input_line = line
1884 self._last_input_line = line
1877
1885
1878 #print '***line: <%s>' % line # dbg
1886 #print '***line: <%s>' % line # dbg
1879
1887
1880 # the input history needs to track even empty lines
1888 # the input history needs to track even empty lines
1881 stripped = line.strip()
1889 stripped = line.strip()
1882
1890
1883 if not stripped:
1891 if not stripped:
1884 if not continue_prompt:
1892 if not continue_prompt:
1885 self.outputcache.prompt_count -= 1
1893 self.outputcache.prompt_count -= 1
1886 return self.handle_normal(line,continue_prompt)
1894 return self.handle_normal(line,continue_prompt)
1887 #return self.handle_normal('',continue_prompt)
1895 #return self.handle_normal('',continue_prompt)
1888
1896
1889 # print '***cont',continue_prompt # dbg
1897 # print '***cont',continue_prompt # dbg
1890 # special handlers are only allowed for single line statements
1898 # special handlers are only allowed for single line statements
1891 if continue_prompt and not self.rc.multi_line_specials:
1899 if continue_prompt and not self.rc.multi_line_specials:
1892 return self.handle_normal(line,continue_prompt)
1900 return self.handle_normal(line,continue_prompt)
1893
1901
1894
1902
1895 # For the rest, we need the structure of the input
1903 # For the rest, we need the structure of the input
1896 pre,iFun,theRest = self.split_user_input(line)
1904 pre,iFun,theRest = self.split_user_input(line)
1897
1905
1898 # See whether any pre-existing handler can take care of it
1906 # See whether any pre-existing handler can take care of it
1899
1907
1900 rewritten = self.hooks.input_prefilter(stripped)
1908 rewritten = self.hooks.input_prefilter(stripped)
1901 if rewritten != stripped: # ok, some prefilter did something
1909 if rewritten != stripped: # ok, some prefilter did something
1902 rewritten = pre + rewritten # add indentation
1910 rewritten = pre + rewritten # add indentation
1903 return self.handle_normal(rewritten)
1911 return self.handle_normal(rewritten)
1904
1912
1905 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
1913 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
1906
1914
1907 # First check for explicit escapes in the last/first character
1915 # First check for explicit escapes in the last/first character
1908 handler = None
1916 handler = None
1909 if line[-1] == self.ESC_HELP:
1917 if line[-1] == self.ESC_HELP:
1910 handler = self.esc_handlers.get(line[-1]) # the ? can be at the end
1918 handler = self.esc_handlers.get(line[-1]) # the ? can be at the end
1911 if handler is None:
1919 if handler is None:
1912 # look at the first character of iFun, NOT of line, so we skip
1920 # look at the first character of iFun, NOT of line, so we skip
1913 # leading whitespace in multiline input
1921 # leading whitespace in multiline input
1914 handler = self.esc_handlers.get(iFun[0:1])
1922 handler = self.esc_handlers.get(iFun[0:1])
1915 if handler is not None:
1923 if handler is not None:
1916 return handler(line,continue_prompt,pre,iFun,theRest)
1924 return handler(line,continue_prompt,pre,iFun,theRest)
1917 # Emacs ipython-mode tags certain input lines
1925 # Emacs ipython-mode tags certain input lines
1918 if line.endswith('# PYTHON-MODE'):
1926 if line.endswith('# PYTHON-MODE'):
1919 return self.handle_emacs(line,continue_prompt)
1927 return self.handle_emacs(line,continue_prompt)
1920
1928
1921 # Next, check if we can automatically execute this thing
1929 # Next, check if we can automatically execute this thing
1922
1930
1923 # Allow ! in multi-line statements if multi_line_specials is on:
1931 # Allow ! in multi-line statements if multi_line_specials is on:
1924 if continue_prompt and self.rc.multi_line_specials and \
1932 if continue_prompt and self.rc.multi_line_specials and \
1925 iFun.startswith(self.ESC_SHELL):
1933 iFun.startswith(self.ESC_SHELL):
1926 return self.handle_shell_escape(line,continue_prompt,
1934 return self.handle_shell_escape(line,continue_prompt,
1927 pre=pre,iFun=iFun,
1935 pre=pre,iFun=iFun,
1928 theRest=theRest)
1936 theRest=theRest)
1929
1937
1930 # Let's try to find if the input line is a magic fn
1938 # Let's try to find if the input line is a magic fn
1931 oinfo = None
1939 oinfo = None
1932 if hasattr(self,'magic_'+iFun):
1940 if hasattr(self,'magic_'+iFun):
1933 # WARNING: _ofind uses getattr(), so it can consume generators and
1941 # WARNING: _ofind uses getattr(), so it can consume generators and
1934 # cause other side effects.
1942 # cause other side effects.
1935 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
1943 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
1936 if oinfo['ismagic']:
1944 if oinfo['ismagic']:
1937 # Be careful not to call magics when a variable assignment is
1945 # Be careful not to call magics when a variable assignment is
1938 # being made (ls='hi', for example)
1946 # being made (ls='hi', for example)
1939 if self.rc.automagic and \
1947 if self.rc.automagic and \
1940 (len(theRest)==0 or theRest[0] not in '!=()<>,') and \
1948 (len(theRest)==0 or theRest[0] not in '!=()<>,') and \
1941 (self.rc.multi_line_specials or not continue_prompt):
1949 (self.rc.multi_line_specials or not continue_prompt):
1942 return self.handle_magic(line,continue_prompt,
1950 return self.handle_magic(line,continue_prompt,
1943 pre,iFun,theRest)
1951 pre,iFun,theRest)
1944 else:
1952 else:
1945 return self.handle_normal(line,continue_prompt)
1953 return self.handle_normal(line,continue_prompt)
1946
1954
1947 # If the rest of the line begins with an (in)equality, assginment or
1955 # If the rest of the line begins with an (in)equality, assginment or
1948 # function call, we should not call _ofind but simply execute it.
1956 # function call, we should not call _ofind but simply execute it.
1949 # This avoids spurious geattr() accesses on objects upon assignment.
1957 # This avoids spurious geattr() accesses on objects upon assignment.
1950 #
1958 #
1951 # It also allows users to assign to either alias or magic names true
1959 # It also allows users to assign to either alias or magic names true
1952 # python variables (the magic/alias systems always take second seat to
1960 # python variables (the magic/alias systems always take second seat to
1953 # true python code).
1961 # true python code).
1954 if theRest and theRest[0] in '!=()':
1962 if theRest and theRest[0] in '!=()':
1955 return self.handle_normal(line,continue_prompt)
1963 return self.handle_normal(line,continue_prompt)
1956
1964
1957 if oinfo is None:
1965 if oinfo is None:
1958 # let's try to ensure that _oinfo is ONLY called when autocall is
1966 # let's try to ensure that _oinfo is ONLY called when autocall is
1959 # on. Since it has inevitable potential side effects, at least
1967 # on. Since it has inevitable potential side effects, at least
1960 # having autocall off should be a guarantee to the user that no
1968 # having autocall off should be a guarantee to the user that no
1961 # weird things will happen.
1969 # weird things will happen.
1962
1970
1963 if self.rc.autocall:
1971 if self.rc.autocall:
1964 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
1972 oinfo = self._ofind(iFun) # FIXME - _ofind is part of Magic
1965 else:
1973 else:
1966 # in this case, all that's left is either an alias or
1974 # in this case, all that's left is either an alias or
1967 # processing the line normally.
1975 # processing the line normally.
1968 if iFun in self.alias_table:
1976 if iFun in self.alias_table:
1969 # if autocall is off, by not running _ofind we won't know
1977 # if autocall is off, by not running _ofind we won't know
1970 # whether the given name may also exist in one of the
1978 # whether the given name may also exist in one of the
1971 # user's namespace. At this point, it's best to do a
1979 # user's namespace. At this point, it's best to do a
1972 # quick check just to be sure that we don't let aliases
1980 # quick check just to be sure that we don't let aliases
1973 # shadow variables.
1981 # shadow variables.
1974 head = iFun.split('.',1)[0]
1982 head = iFun.split('.',1)[0]
1975 if head in self.user_ns or head in self.internal_ns \
1983 if head in self.user_ns or head in self.internal_ns \
1976 or head in __builtin__.__dict__:
1984 or head in __builtin__.__dict__:
1977 return self.handle_normal(line,continue_prompt)
1985 return self.handle_normal(line,continue_prompt)
1978 else:
1986 else:
1979 return self.handle_alias(line,continue_prompt,
1987 return self.handle_alias(line,continue_prompt,
1980 pre,iFun,theRest)
1988 pre,iFun,theRest)
1981
1989
1982 else:
1990 else:
1983 return self.handle_normal(line,continue_prompt)
1991 return self.handle_normal(line,continue_prompt)
1984
1992
1985 if not oinfo['found']:
1993 if not oinfo['found']:
1986 return self.handle_normal(line,continue_prompt)
1994 return self.handle_normal(line,continue_prompt)
1987 else:
1995 else:
1988 #print 'pre<%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
1996 #print 'pre<%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
1989 if oinfo['isalias']:
1997 if oinfo['isalias']:
1990 return self.handle_alias(line,continue_prompt,
1998 return self.handle_alias(line,continue_prompt,
1991 pre,iFun,theRest)
1999 pre,iFun,theRest)
1992
2000
1993 if (self.rc.autocall
2001 if (self.rc.autocall
1994 and
2002 and
1995 (
2003 (
1996 #only consider exclusion re if not "," or ";" autoquoting
2004 #only consider exclusion re if not "," or ";" autoquoting
1997 (pre == self.ESC_QUOTE or pre == self.ESC_QUOTE2
2005 (pre == self.ESC_QUOTE or pre == self.ESC_QUOTE2
1998 or pre == self.ESC_PAREN) or
2006 or pre == self.ESC_PAREN) or
1999 (not self.re_exclude_auto.match(theRest)))
2007 (not self.re_exclude_auto.match(theRest)))
2000 and
2008 and
2001 self.re_fun_name.match(iFun) and
2009 self.re_fun_name.match(iFun) and
2002 callable(oinfo['obj'])) :
2010 callable(oinfo['obj'])) :
2003 #print 'going auto' # dbg
2011 #print 'going auto' # dbg
2004 return self.handle_auto(line,continue_prompt,
2012 return self.handle_auto(line,continue_prompt,
2005 pre,iFun,theRest,oinfo['obj'])
2013 pre,iFun,theRest,oinfo['obj'])
2006 else:
2014 else:
2007 #print 'was callable?', callable(oinfo['obj']) # dbg
2015 #print 'was callable?', callable(oinfo['obj']) # dbg
2008 return self.handle_normal(line,continue_prompt)
2016 return self.handle_normal(line,continue_prompt)
2009
2017
2010 # If we get here, we have a normal Python line. Log and return.
2018 # If we get here, we have a normal Python line. Log and return.
2011 return self.handle_normal(line,continue_prompt)
2019 return self.handle_normal(line,continue_prompt)
2012
2020
2013 def _prefilter_dumb(self, line, continue_prompt):
2021 def _prefilter_dumb(self, line, continue_prompt):
2014 """simple prefilter function, for debugging"""
2022 """simple prefilter function, for debugging"""
2015 return self.handle_normal(line,continue_prompt)
2023 return self.handle_normal(line,continue_prompt)
2016
2024
2017 # Set the default prefilter() function (this can be user-overridden)
2025 # Set the default prefilter() function (this can be user-overridden)
2018 prefilter = _prefilter
2026 prefilter = _prefilter
2019
2027
2020 def handle_normal(self,line,continue_prompt=None,
2028 def handle_normal(self,line,continue_prompt=None,
2021 pre=None,iFun=None,theRest=None):
2029 pre=None,iFun=None,theRest=None):
2022 """Handle normal input lines. Use as a template for handlers."""
2030 """Handle normal input lines. Use as a template for handlers."""
2023
2031
2024 # With autoindent on, we need some way to exit the input loop, and I
2032 # With autoindent on, we need some way to exit the input loop, and I
2025 # don't want to force the user to have to backspace all the way to
2033 # don't want to force the user to have to backspace all the way to
2026 # clear the line. The rule will be in this case, that either two
2034 # clear the line. The rule will be in this case, that either two
2027 # lines of pure whitespace in a row, or a line of pure whitespace but
2035 # lines of pure whitespace in a row, or a line of pure whitespace but
2028 # of a size different to the indent level, will exit the input loop.
2036 # of a size different to the indent level, will exit the input loop.
2029
2037
2030 if (continue_prompt and self.autoindent and line.isspace() and
2038 if (continue_prompt and self.autoindent and line.isspace() and
2031 (0 < abs(len(line) - self.indent_current_nsp) <= 2 or
2039 (0 < abs(len(line) - self.indent_current_nsp) <= 2 or
2032 (self.buffer[-1]).isspace() )):
2040 (self.buffer[-1]).isspace() )):
2033 line = ''
2041 line = ''
2034
2042
2035 self.log(line,line,continue_prompt)
2043 self.log(line,line,continue_prompt)
2036 return line
2044 return line
2037
2045
2038 def handle_alias(self,line,continue_prompt=None,
2046 def handle_alias(self,line,continue_prompt=None,
2039 pre=None,iFun=None,theRest=None):
2047 pre=None,iFun=None,theRest=None):
2040 """Handle alias input lines. """
2048 """Handle alias input lines. """
2041
2049
2042 # pre is needed, because it carries the leading whitespace. Otherwise
2050 # pre is needed, because it carries the leading whitespace. Otherwise
2043 # aliases won't work in indented sections.
2051 # aliases won't work in indented sections.
2044 transformed = self.transform_alias(iFun, theRest)
2052 transformed = self.transform_alias(iFun, theRest)
2045 line_out = '%s_ip.system(%s)' % (pre, make_quoted_expr( transformed ))
2053 line_out = '%s_ip.system(%s)' % (pre, make_quoted_expr( transformed ))
2046 self.log(line,line_out,continue_prompt)
2054 self.log(line,line_out,continue_prompt)
2047 #print 'line out:',line_out # dbg
2055 #print 'line out:',line_out # dbg
2048 return line_out
2056 return line_out
2049
2057
2050 def handle_shell_escape(self, line, continue_prompt=None,
2058 def handle_shell_escape(self, line, continue_prompt=None,
2051 pre=None,iFun=None,theRest=None):
2059 pre=None,iFun=None,theRest=None):
2052 """Execute the line in a shell, empty return value"""
2060 """Execute the line in a shell, empty return value"""
2053
2061
2054 #print 'line in :', `line` # dbg
2062 #print 'line in :', `line` # dbg
2055 # Example of a special handler. Others follow a similar pattern.
2063 # Example of a special handler. Others follow a similar pattern.
2056 if line.lstrip().startswith('!!'):
2064 if line.lstrip().startswith('!!'):
2057 # rewrite iFun/theRest to properly hold the call to %sx and
2065 # rewrite iFun/theRest to properly hold the call to %sx and
2058 # the actual command to be executed, so handle_magic can work
2066 # the actual command to be executed, so handle_magic can work
2059 # correctly
2067 # correctly
2060 theRest = '%s %s' % (iFun[2:],theRest)
2068 theRest = '%s %s' % (iFun[2:],theRest)
2061 iFun = 'sx'
2069 iFun = 'sx'
2062 return self.handle_magic('%ssx %s' % (self.ESC_MAGIC,
2070 return self.handle_magic('%ssx %s' % (self.ESC_MAGIC,
2063 line.lstrip()[2:]),
2071 line.lstrip()[2:]),
2064 continue_prompt,pre,iFun,theRest)
2072 continue_prompt,pre,iFun,theRest)
2065 else:
2073 else:
2066 cmd=line.lstrip().lstrip('!')
2074 cmd=line.lstrip().lstrip('!')
2067 line_out = '%s_ip.system(%s)' % (pre,make_quoted_expr(cmd))
2075 line_out = '%s_ip.system(%s)' % (pre,make_quoted_expr(cmd))
2068 # update cache/log and return
2076 # update cache/log and return
2069 self.log(line,line_out,continue_prompt)
2077 self.log(line,line_out,continue_prompt)
2070 return line_out
2078 return line_out
2071
2079
2072 def handle_magic(self, line, continue_prompt=None,
2080 def handle_magic(self, line, continue_prompt=None,
2073 pre=None,iFun=None,theRest=None):
2081 pre=None,iFun=None,theRest=None):
2074 """Execute magic functions."""
2082 """Execute magic functions."""
2075
2083
2076
2084
2077 cmd = '%s_ip.magic(%s)' % (pre,make_quoted_expr(iFun + " " + theRest))
2085 cmd = '%s_ip.magic(%s)' % (pre,make_quoted_expr(iFun + " " + theRest))
2078 self.log(line,cmd,continue_prompt)
2086 self.log(line,cmd,continue_prompt)
2079 #print 'in handle_magic, cmd=<%s>' % cmd # dbg
2087 #print 'in handle_magic, cmd=<%s>' % cmd # dbg
2080 return cmd
2088 return cmd
2081
2089
2082 def handle_auto(self, line, continue_prompt=None,
2090 def handle_auto(self, line, continue_prompt=None,
2083 pre=None,iFun=None,theRest=None,obj=None):
2091 pre=None,iFun=None,theRest=None,obj=None):
2084 """Hande lines which can be auto-executed, quoting if requested."""
2092 """Hande lines which can be auto-executed, quoting if requested."""
2085
2093
2086 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2094 #print 'pre <%s> iFun <%s> rest <%s>' % (pre,iFun,theRest) # dbg
2087
2095
2088 # This should only be active for single-line input!
2096 # This should only be active for single-line input!
2089 if continue_prompt:
2097 if continue_prompt:
2090 self.log(line,line,continue_prompt)
2098 self.log(line,line,continue_prompt)
2091 return line
2099 return line
2092
2100
2093 auto_rewrite = True
2101 auto_rewrite = True
2094
2102
2095 if pre == self.ESC_QUOTE:
2103 if pre == self.ESC_QUOTE:
2096 # Auto-quote splitting on whitespace
2104 # Auto-quote splitting on whitespace
2097 newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) )
2105 newcmd = '%s("%s")' % (iFun,'", "'.join(theRest.split()) )
2098 elif pre == self.ESC_QUOTE2:
2106 elif pre == self.ESC_QUOTE2:
2099 # Auto-quote whole string
2107 # Auto-quote whole string
2100 newcmd = '%s("%s")' % (iFun,theRest)
2108 newcmd = '%s("%s")' % (iFun,theRest)
2101 elif pre == self.ESC_PAREN:
2109 elif pre == self.ESC_PAREN:
2102 newcmd = '%s(%s)' % (iFun,",".join(theRest.split()))
2110 newcmd = '%s(%s)' % (iFun,",".join(theRest.split()))
2103 else:
2111 else:
2104 # Auto-paren.
2112 # Auto-paren.
2105 # We only apply it to argument-less calls if the autocall
2113 # We only apply it to argument-less calls if the autocall
2106 # parameter is set to 2. We only need to check that autocall is <
2114 # parameter is set to 2. We only need to check that autocall is <
2107 # 2, since this function isn't called unless it's at least 1.
2115 # 2, since this function isn't called unless it's at least 1.
2108 if not theRest and (self.rc.autocall < 2):
2116 if not theRest and (self.rc.autocall < 2):
2109 newcmd = '%s %s' % (iFun,theRest)
2117 newcmd = '%s %s' % (iFun,theRest)
2110 auto_rewrite = False
2118 auto_rewrite = False
2111 else:
2119 else:
2112 if theRest.startswith('['):
2120 if theRest.startswith('['):
2113 if hasattr(obj,'__getitem__'):
2121 if hasattr(obj,'__getitem__'):
2114 # Don't autocall in this case: item access for an object
2122 # Don't autocall in this case: item access for an object
2115 # which is BOTH callable and implements __getitem__.
2123 # which is BOTH callable and implements __getitem__.
2116 newcmd = '%s %s' % (iFun,theRest)
2124 newcmd = '%s %s' % (iFun,theRest)
2117 auto_rewrite = False
2125 auto_rewrite = False
2118 else:
2126 else:
2119 # if the object doesn't support [] access, go ahead and
2127 # if the object doesn't support [] access, go ahead and
2120 # autocall
2128 # autocall
2121 newcmd = '%s(%s)' % (iFun.rstrip(),theRest)
2129 newcmd = '%s(%s)' % (iFun.rstrip(),theRest)
2122 elif theRest.endswith(';'):
2130 elif theRest.endswith(';'):
2123 newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1])
2131 newcmd = '%s(%s);' % (iFun.rstrip(),theRest[:-1])
2124 else:
2132 else:
2125 newcmd = '%s(%s)' % (iFun.rstrip(), theRest)
2133 newcmd = '%s(%s)' % (iFun.rstrip(), theRest)
2126
2134
2127 if auto_rewrite:
2135 if auto_rewrite:
2128 print >>Term.cout, self.outputcache.prompt1.auto_rewrite() + newcmd
2136 print >>Term.cout, self.outputcache.prompt1.auto_rewrite() + newcmd
2129 # log what is now valid Python, not the actual user input (without the
2137 # log what is now valid Python, not the actual user input (without the
2130 # final newline)
2138 # final newline)
2131 self.log(line,newcmd,continue_prompt)
2139 self.log(line,newcmd,continue_prompt)
2132 return newcmd
2140 return newcmd
2133
2141
2134 def handle_help(self, line, continue_prompt=None,
2142 def handle_help(self, line, continue_prompt=None,
2135 pre=None,iFun=None,theRest=None):
2143 pre=None,iFun=None,theRest=None):
2136 """Try to get some help for the object.
2144 """Try to get some help for the object.
2137
2145
2138 obj? or ?obj -> basic information.
2146 obj? or ?obj -> basic information.
2139 obj?? or ??obj -> more details.
2147 obj?? or ??obj -> more details.
2140 """
2148 """
2141
2149
2142 # We need to make sure that we don't process lines which would be
2150 # We need to make sure that we don't process lines which would be
2143 # otherwise valid python, such as "x=1 # what?"
2151 # otherwise valid python, such as "x=1 # what?"
2144 try:
2152 try:
2145 codeop.compile_command(line)
2153 codeop.compile_command(line)
2146 except SyntaxError:
2154 except SyntaxError:
2147 # We should only handle as help stuff which is NOT valid syntax
2155 # We should only handle as help stuff which is NOT valid syntax
2148 if line[0]==self.ESC_HELP:
2156 if line[0]==self.ESC_HELP:
2149 line = line[1:]
2157 line = line[1:]
2150 elif line[-1]==self.ESC_HELP:
2158 elif line[-1]==self.ESC_HELP:
2151 line = line[:-1]
2159 line = line[:-1]
2152 self.log(line,'#?'+line,continue_prompt)
2160 self.log(line,'#?'+line,continue_prompt)
2153 if line:
2161 if line:
2154 self.magic_pinfo(line)
2162 self.magic_pinfo(line)
2155 else:
2163 else:
2156 page(self.usage,screen_lines=self.rc.screen_length)
2164 page(self.usage,screen_lines=self.rc.screen_length)
2157 return '' # Empty string is needed here!
2165 return '' # Empty string is needed here!
2158 except:
2166 except:
2159 # Pass any other exceptions through to the normal handler
2167 # Pass any other exceptions through to the normal handler
2160 return self.handle_normal(line,continue_prompt)
2168 return self.handle_normal(line,continue_prompt)
2161 else:
2169 else:
2162 # If the code compiles ok, we should handle it normally
2170 # If the code compiles ok, we should handle it normally
2163 return self.handle_normal(line,continue_prompt)
2171 return self.handle_normal(line,continue_prompt)
2164
2172
2165 def getapi(self):
2173 def getapi(self):
2166 """ Get an IPApi object for this shell instance
2174 """ Get an IPApi object for this shell instance
2167
2175
2168 Getting an IPApi object is always preferable to accessing the shell
2176 Getting an IPApi object is always preferable to accessing the shell
2169 directly, but this holds true especially for extensions.
2177 directly, but this holds true especially for extensions.
2170
2178
2171 It should always be possible to implement an extension with IPApi
2179 It should always be possible to implement an extension with IPApi
2172 alone. If not, contact maintainer to request an addition.
2180 alone. If not, contact maintainer to request an addition.
2173
2181
2174 """
2182 """
2175 return self.api
2183 return self.api
2176
2184
2177 def handle_emacs(self,line,continue_prompt=None,
2185 def handle_emacs(self,line,continue_prompt=None,
2178 pre=None,iFun=None,theRest=None):
2186 pre=None,iFun=None,theRest=None):
2179 """Handle input lines marked by python-mode."""
2187 """Handle input lines marked by python-mode."""
2180
2188
2181 # Currently, nothing is done. Later more functionality can be added
2189 # Currently, nothing is done. Later more functionality can be added
2182 # here if needed.
2190 # here if needed.
2183
2191
2184 # The input cache shouldn't be updated
2192 # The input cache shouldn't be updated
2185
2193
2186 return line
2194 return line
2187
2195
2188 def mktempfile(self,data=None):
2196 def mktempfile(self,data=None):
2189 """Make a new tempfile and return its filename.
2197 """Make a new tempfile and return its filename.
2190
2198
2191 This makes a call to tempfile.mktemp, but it registers the created
2199 This makes a call to tempfile.mktemp, but it registers the created
2192 filename internally so ipython cleans it up at exit time.
2200 filename internally so ipython cleans it up at exit time.
2193
2201
2194 Optional inputs:
2202 Optional inputs:
2195
2203
2196 - data(None): if data is given, it gets written out to the temp file
2204 - data(None): if data is given, it gets written out to the temp file
2197 immediately, and the file is closed again."""
2205 immediately, and the file is closed again."""
2198
2206
2199 filename = tempfile.mktemp('.py','ipython_edit_')
2207 filename = tempfile.mktemp('.py','ipython_edit_')
2200 self.tempfiles.append(filename)
2208 self.tempfiles.append(filename)
2201
2209
2202 if data:
2210 if data:
2203 tmp_file = open(filename,'w')
2211 tmp_file = open(filename,'w')
2204 tmp_file.write(data)
2212 tmp_file.write(data)
2205 tmp_file.close()
2213 tmp_file.close()
2206 return filename
2214 return filename
2207
2215
2208 def write(self,data):
2216 def write(self,data):
2209 """Write a string to the default output"""
2217 """Write a string to the default output"""
2210 Term.cout.write(data)
2218 Term.cout.write(data)
2211
2219
2212 def write_err(self,data):
2220 def write_err(self,data):
2213 """Write a string to the default error output"""
2221 """Write a string to the default error output"""
2214 Term.cerr.write(data)
2222 Term.cerr.write(data)
2215
2223
2216 def exit(self):
2224 def exit(self):
2217 """Handle interactive exit.
2225 """Handle interactive exit.
2218
2226
2219 This method sets the exit_now attribute."""
2227 This method sets the exit_now attribute."""
2220
2228
2221 if self.rc.confirm_exit:
2229 if self.rc.confirm_exit:
2222 if self.ask_yes_no('Do you really want to exit ([y]/n)?','y'):
2230 if self.ask_yes_no('Do you really want to exit ([y]/n)?','y'):
2223 self.exit_now = True
2231 self.exit_now = True
2224 else:
2232 else:
2225 self.exit_now = True
2233 self.exit_now = True
2226 return self.exit_now
2234 return self.exit_now
2227
2235
2228 def safe_execfile(self,fname,*where,**kw):
2236 def safe_execfile(self,fname,*where,**kw):
2229 fname = os.path.expanduser(fname)
2237 fname = os.path.expanduser(fname)
2230
2238
2231 # find things also in current directory
2239 # find things also in current directory
2232 dname = os.path.dirname(fname)
2240 dname = os.path.dirname(fname)
2233 if not sys.path.count(dname):
2241 if not sys.path.count(dname):
2234 sys.path.append(dname)
2242 sys.path.append(dname)
2235
2243
2236 try:
2244 try:
2237 xfile = open(fname)
2245 xfile = open(fname)
2238 except:
2246 except:
2239 print >> Term.cerr, \
2247 print >> Term.cerr, \
2240 'Could not open file <%s> for safe execution.' % fname
2248 'Could not open file <%s> for safe execution.' % fname
2241 return None
2249 return None
2242
2250
2243 kw.setdefault('islog',0)
2251 kw.setdefault('islog',0)
2244 kw.setdefault('quiet',1)
2252 kw.setdefault('quiet',1)
2245 kw.setdefault('exit_ignore',0)
2253 kw.setdefault('exit_ignore',0)
2246 first = xfile.readline()
2254 first = xfile.readline()
2247 loghead = str(self.loghead_tpl).split('\n',1)[0].strip()
2255 loghead = str(self.loghead_tpl).split('\n',1)[0].strip()
2248 xfile.close()
2256 xfile.close()
2249 # line by line execution
2257 # line by line execution
2250 if first.startswith(loghead) or kw['islog']:
2258 if first.startswith(loghead) or kw['islog']:
2251 print 'Loading log file <%s> one line at a time...' % fname
2259 print 'Loading log file <%s> one line at a time...' % fname
2252 if kw['quiet']:
2260 if kw['quiet']:
2253 stdout_save = sys.stdout
2261 stdout_save = sys.stdout
2254 sys.stdout = StringIO.StringIO()
2262 sys.stdout = StringIO.StringIO()
2255 try:
2263 try:
2256 globs,locs = where[0:2]
2264 globs,locs = where[0:2]
2257 except:
2265 except:
2258 try:
2266 try:
2259 globs = locs = where[0]
2267 globs = locs = where[0]
2260 except:
2268 except:
2261 globs = locs = globals()
2269 globs = locs = globals()
2262 badblocks = []
2270 badblocks = []
2263
2271
2264 # we also need to identify indented blocks of code when replaying
2272 # we also need to identify indented blocks of code when replaying
2265 # logs and put them together before passing them to an exec
2273 # logs and put them together before passing them to an exec
2266 # statement. This takes a bit of regexp and look-ahead work in the
2274 # statement. This takes a bit of regexp and look-ahead work in the
2267 # file. It's easiest if we swallow the whole thing in memory
2275 # file. It's easiest if we swallow the whole thing in memory
2268 # first, and manually walk through the lines list moving the
2276 # first, and manually walk through the lines list moving the
2269 # counter ourselves.
2277 # counter ourselves.
2270 indent_re = re.compile('\s+\S')
2278 indent_re = re.compile('\s+\S')
2271 xfile = open(fname)
2279 xfile = open(fname)
2272 filelines = xfile.readlines()
2280 filelines = xfile.readlines()
2273 xfile.close()
2281 xfile.close()
2274 nlines = len(filelines)
2282 nlines = len(filelines)
2275 lnum = 0
2283 lnum = 0
2276 while lnum < nlines:
2284 while lnum < nlines:
2277 line = filelines[lnum]
2285 line = filelines[lnum]
2278 lnum += 1
2286 lnum += 1
2279 # don't re-insert logger status info into cache
2287 # don't re-insert logger status info into cache
2280 if line.startswith('#log#'):
2288 if line.startswith('#log#'):
2281 continue
2289 continue
2282 else:
2290 else:
2283 # build a block of code (maybe a single line) for execution
2291 # build a block of code (maybe a single line) for execution
2284 block = line
2292 block = line
2285 try:
2293 try:
2286 next = filelines[lnum] # lnum has already incremented
2294 next = filelines[lnum] # lnum has already incremented
2287 except:
2295 except:
2288 next = None
2296 next = None
2289 while next and indent_re.match(next):
2297 while next and indent_re.match(next):
2290 block += next
2298 block += next
2291 lnum += 1
2299 lnum += 1
2292 try:
2300 try:
2293 next = filelines[lnum]
2301 next = filelines[lnum]
2294 except:
2302 except:
2295 next = None
2303 next = None
2296 # now execute the block of one or more lines
2304 # now execute the block of one or more lines
2297 try:
2305 try:
2298 exec block in globs,locs
2306 exec block in globs,locs
2299 except SystemExit:
2307 except SystemExit:
2300 pass
2308 pass
2301 except:
2309 except:
2302 badblocks.append(block.rstrip())
2310 badblocks.append(block.rstrip())
2303 if kw['quiet']: # restore stdout
2311 if kw['quiet']: # restore stdout
2304 sys.stdout.close()
2312 sys.stdout.close()
2305 sys.stdout = stdout_save
2313 sys.stdout = stdout_save
2306 print 'Finished replaying log file <%s>' % fname
2314 print 'Finished replaying log file <%s>' % fname
2307 if badblocks:
2315 if badblocks:
2308 print >> sys.stderr, ('\nThe following lines/blocks in file '
2316 print >> sys.stderr, ('\nThe following lines/blocks in file '
2309 '<%s> reported errors:' % fname)
2317 '<%s> reported errors:' % fname)
2310
2318
2311 for badline in badblocks:
2319 for badline in badblocks:
2312 print >> sys.stderr, badline
2320 print >> sys.stderr, badline
2313 else: # regular file execution
2321 else: # regular file execution
2314 try:
2322 try:
2315 execfile(fname,*where)
2323 execfile(fname,*where)
2316 except SyntaxError:
2324 except SyntaxError:
2317 self.showsyntaxerror()
2325 self.showsyntaxerror()
2318 warn('Failure executing file: <%s>' % fname)
2326 warn('Failure executing file: <%s>' % fname)
2319 except SystemExit,status:
2327 except SystemExit,status:
2320 if not kw['exit_ignore']:
2328 if not kw['exit_ignore']:
2321 self.showtraceback()
2329 self.showtraceback()
2322 warn('Failure executing file: <%s>' % fname)
2330 warn('Failure executing file: <%s>' % fname)
2323 except:
2331 except:
2324 self.showtraceback()
2332 self.showtraceback()
2325 warn('Failure executing file: <%s>' % fname)
2333 warn('Failure executing file: <%s>' % fname)
2326
2334
2327 #************************* end of file <iplib.py> *****************************
2335 #************************* end of file <iplib.py> *****************************
@@ -1,5663 +1,5668 b''
1 2006-07-26 Ville Vainio <vivainio@gmail.com>
2
3 * iplib.py: history now stores multiline input as single
4 history entries. Patch by Jorgen Cederlof.
5
1 2006-07-18 Walter Doerwald <walter@livinglogic.de>
6 2006-07-18 Walter Doerwald <walter@livinglogic.de>
2
7
3 * IPython/Extensions/ibrowse.py (ix): Make cursor visible over
8 * IPython/Extensions/ibrowse.py (ix): Make cursor visible over
4 non existing attributes.
9 non existing attributes.
5
10
6 2006-07-14 Walter Doerwald <walter@livinglogic.de>
11 2006-07-14 Walter Doerwald <walter@livinglogic.de>
7
12
8 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
13 * IPython/Extensions/ipipe.py (ix): Use os.popen4() so that the
9 error output of the running command doesn't mess up the screen.
14 error output of the running command doesn't mess up the screen.
10
15
11 2006-07-13 Walter Doerwald <walter@livinglogic.de>
16 2006-07-13 Walter Doerwald <walter@livinglogic.de>
12
17
13 * IPython/Extensions/ipipe.py (isort): Make isort usable without
18 * IPython/Extensions/ipipe.py (isort): Make isort usable without
14 argument. This sorts the items themselves.
19 argument. This sorts the items themselves.
15
20
16 2006-07-12 Walter Doerwald <walter@livinglogic.de>
21 2006-07-12 Walter Doerwald <walter@livinglogic.de>
17
22
18 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
23 * IPython/Extensions/ipipe.py (eval, ifilter, isort, ieval):
19 Compile expression strings into code objects. This should speed
24 Compile expression strings into code objects. This should speed
20 up ifilter and friends somewhat.
25 up ifilter and friends somewhat.
21
26
22 2006-07-08 Ville Vainio <vivainio@gmail.com>
27 2006-07-08 Ville Vainio <vivainio@gmail.com>
23
28
24 * Magic.py: %cpaste now strips > from the beginning of lines
29 * Magic.py: %cpaste now strips > from the beginning of lines
25 to ease pasting quoted code from emails. Contributed by
30 to ease pasting quoted code from emails. Contributed by
26 Stefan van der Walt.
31 Stefan van der Walt.
27
32
28 2006-06-29 Ville Vainio <vivainio@gmail.com>
33 2006-06-29 Ville Vainio <vivainio@gmail.com>
29
34
30 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
35 * ipmaker.py, Shell.py: qt4agg matplotlib backend support for pylab
31 mode, patch contributed by Darren Dale. NEEDS TESTING!
36 mode, patch contributed by Darren Dale. NEEDS TESTING!
32
37
33 2006-06-28 Walter Doerwald <walter@livinglogic.de>
38 2006-06-28 Walter Doerwald <walter@livinglogic.de>
34
39
35 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
40 * IPython/Extensions/ibrowse.py: Give the ibrowse cursor row
36 a blue background. Fix fetching new display rows when the browser
41 a blue background. Fix fetching new display rows when the browser
37 scrolls more than a screenful (e.g. by using the goto command).
42 scrolls more than a screenful (e.g. by using the goto command).
38
43
39 2006-06-27 Ville Vainio <vivainio@gmail.com>
44 2006-06-27 Ville Vainio <vivainio@gmail.com>
40
45
41 * Magic.py (_inspect, _ofind) Apply David Huard's
46 * Magic.py (_inspect, _ofind) Apply David Huard's
42 patch for displaying the correct docstring for 'property'
47 patch for displaying the correct docstring for 'property'
43 attributes.
48 attributes.
44
49
45 2006-06-23 Walter Doerwald <walter@livinglogic.de>
50 2006-06-23 Walter Doerwald <walter@livinglogic.de>
46
51
47 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
52 * IPython/Extensions/ibrowse.py: Put the documentation of the keyboard
48 commands into the methods implementing them.
53 commands into the methods implementing them.
49
54
50 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
55 2006-06-22 Fernando Perez <Fernando.Perez@colorado.edu>
51
56
52 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
57 * ipython.el (ipython-indentation-hook): cleanup patch, submitted
53 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
58 by Kov Chai <tchaikov-AT-gmail.com>. He notes that the original
54 autoindent support was authored by Jin Liu.
59 autoindent support was authored by Jin Liu.
55
60
56 2006-06-22 Walter Doerwald <walter@livinglogic.de>
61 2006-06-22 Walter Doerwald <walter@livinglogic.de>
57
62
58 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
63 * IPython/Extensions/ibrowse.py: Replace the plain dictionaries used
59 for keymaps with a custom class that simplifies handling.
64 for keymaps with a custom class that simplifies handling.
60
65
61 2006-06-19 Walter Doerwald <walter@livinglogic.de>
66 2006-06-19 Walter Doerwald <walter@livinglogic.de>
62
67
63 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
68 * IPython/Extensions/ibrowse.py: ibrowse now properly handles terminal
64 resizing. This requires Python 2.5 to work.
69 resizing. This requires Python 2.5 to work.
65
70
66 2006-06-16 Walter Doerwald <walter@livinglogic.de>
71 2006-06-16 Walter Doerwald <walter@livinglogic.de>
67
72
68 * IPython/Extensions/ibrowse.py: Add two new commands to
73 * IPython/Extensions/ibrowse.py: Add two new commands to
69 ibrowse: "hideattr" (mapped to "h") hides the attribute under
74 ibrowse: "hideattr" (mapped to "h") hides the attribute under
70 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
75 the cursor. "unhiderattrs" (mapped to "H") reveals all hidden
71 attributes again. Remapped the help command to "?". Display
76 attributes again. Remapped the help command to "?". Display
72 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
77 keycodes in the range 0x01-0x1F as CTRL-xx. Add CTRL-a and CTRL-e
73 as keys for the "home" and "end" commands. Add three new commands
78 as keys for the "home" and "end" commands. Add three new commands
74 to the input mode for "find" and friends: "delend" (CTRL-K)
79 to the input mode for "find" and friends: "delend" (CTRL-K)
75 deletes to the end of line. "incsearchup" searches upwards in the
80 deletes to the end of line. "incsearchup" searches upwards in the
76 command history for an input that starts with the text before the cursor.
81 command history for an input that starts with the text before the cursor.
77 "incsearchdown" does the same downwards. Removed a bogus mapping of
82 "incsearchdown" does the same downwards. Removed a bogus mapping of
78 the x key to "delete".
83 the x key to "delete".
79
84
80 2006-06-15 Ville Vainio <vivainio@gmail.com>
85 2006-06-15 Ville Vainio <vivainio@gmail.com>
81
86
82 * iplib.py, hooks.py: Added new generate_prompt hook that can be
87 * iplib.py, hooks.py: Added new generate_prompt hook that can be
83 used to create prompts dynamically, instead of the "old" way of
88 used to create prompts dynamically, instead of the "old" way of
84 assigning "magic" strings to prompt_in1 and prompt_in2. The old
89 assigning "magic" strings to prompt_in1 and prompt_in2. The old
85 way still works (it's invoked by the default hook), of course.
90 way still works (it's invoked by the default hook), of course.
86
91
87 * Prompts.py: added generate_output_prompt hook for altering output
92 * Prompts.py: added generate_output_prompt hook for altering output
88 prompt
93 prompt
89
94
90 * Release.py: Changed version string to 0.7.3.svn.
95 * Release.py: Changed version string to 0.7.3.svn.
91
96
92 2006-06-15 Walter Doerwald <walter@livinglogic.de>
97 2006-06-15 Walter Doerwald <walter@livinglogic.de>
93
98
94 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
99 * IPython/Extensions/ibrowse.py: Change _BrowserLevel.moveto() so that
95 the call to fetch() always tries to fetch enough data for at least one
100 the call to fetch() always tries to fetch enough data for at least one
96 full screen. This makes it possible to simply call moveto(0,0,True) in
101 full screen. This makes it possible to simply call moveto(0,0,True) in
97 the constructor. Fix typos and removed the obsolete goto attribute.
102 the constructor. Fix typos and removed the obsolete goto attribute.
98
103
99 2006-06-12 Ville Vainio <vivainio@gmail.com>
104 2006-06-12 Ville Vainio <vivainio@gmail.com>
100
105
101 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
106 * ipy_profile_sh.py: applied Krisha Mohan Gundu's patch for
102 allowing $variable interpolation within multiline statements,
107 allowing $variable interpolation within multiline statements,
103 though so far only with "sh" profile for a testing period.
108 though so far only with "sh" profile for a testing period.
104 The patch also enables splitting long commands with \ but it
109 The patch also enables splitting long commands with \ but it
105 doesn't work properly yet.
110 doesn't work properly yet.
106
111
107 2006-06-12 Walter Doerwald <walter@livinglogic.de>
112 2006-06-12 Walter Doerwald <walter@livinglogic.de>
108
113
109 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
114 * IPython/Extensions/ibrowse.py (_dodisplay): Display the length of the
110 input history and the position of the cursor in the input history for
115 input history and the position of the cursor in the input history for
111 the find, findbackwards and goto command.
116 the find, findbackwards and goto command.
112
117
113 2006-06-10 Walter Doerwald <walter@livinglogic.de>
118 2006-06-10 Walter Doerwald <walter@livinglogic.de>
114
119
115 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
120 * IPython/Extensions/ibrowse.py: Add a class _CommandInput that
116 implements the basic functionality of browser commands that require
121 implements the basic functionality of browser commands that require
117 input. Reimplement the goto, find and findbackwards commands as
122 input. Reimplement the goto, find and findbackwards commands as
118 subclasses of _CommandInput. Add an input history and keymaps to those
123 subclasses of _CommandInput. Add an input history and keymaps to those
119 commands. Add "\r" as a keyboard shortcut for the enterdefault and
124 commands. Add "\r" as a keyboard shortcut for the enterdefault and
120 execute commands.
125 execute commands.
121
126
122 2006-06-07 Ville Vainio <vivainio@gmail.com>
127 2006-06-07 Ville Vainio <vivainio@gmail.com>
123
128
124 * iplib.py: ipython mybatch.ipy exits ipython immediately after
129 * iplib.py: ipython mybatch.ipy exits ipython immediately after
125 running the batch files instead of leaving the session open.
130 running the batch files instead of leaving the session open.
126
131
127 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
132 2006-06-07 Fernando Perez <Fernando.Perez@colorado.edu>
128
133
129 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
134 * IPython/iplib.py (InteractiveShell.__init__): update BSD fix, as
130 the original fix was incomplete. Patch submitted by W. Maier.
135 the original fix was incomplete. Patch submitted by W. Maier.
131
136
132 2006-06-07 Ville Vainio <vivainio@gmail.com>
137 2006-06-07 Ville Vainio <vivainio@gmail.com>
133
138
134 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
139 * iplib.py,Magic.py, ipmaker.py (magic_rehashx):
135 Confirmation prompts can be supressed by 'quiet' option.
140 Confirmation prompts can be supressed by 'quiet' option.
136 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
141 _ip.options.quiet = 1 means "assume yes for all yes/no queries".
137
142
138 2006-06-06 *** Released version 0.7.2
143 2006-06-06 *** Released version 0.7.2
139
144
140 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
145 2006-06-06 Fernando Perez <Fernando.Perez@colorado.edu>
141
146
142 * IPython/Release.py (version): Made 0.7.2 final for release.
147 * IPython/Release.py (version): Made 0.7.2 final for release.
143 Repo tagged and release cut.
148 Repo tagged and release cut.
144
149
145 2006-06-05 Ville Vainio <vivainio@gmail.com>
150 2006-06-05 Ville Vainio <vivainio@gmail.com>
146
151
147 * Magic.py (magic_rehashx): Honor no_alias list earlier in
152 * Magic.py (magic_rehashx): Honor no_alias list earlier in
148 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
153 %rehashx, to avoid clobbering builtins in ipy_profile_sh.py
149
154
150 * upgrade_dir.py: try import 'path' module a bit harder
155 * upgrade_dir.py: try import 'path' module a bit harder
151 (for %upgrade)
156 (for %upgrade)
152
157
153 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
158 2006-06-03 Fernando Perez <Fernando.Perez@colorado.edu>
154
159
155 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
160 * IPython/genutils.py (ask_yes_no): treat EOF as a default answer
156 instead of looping 20 times.
161 instead of looping 20 times.
157
162
158 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
163 * IPython/ipmaker.py (make_IPython): honor -ipythondir flag
159 correctly at initialization time. Bug reported by Krishna Mohan
164 correctly at initialization time. Bug reported by Krishna Mohan
160 Gundu <gkmohan-AT-gmail.com> on the user list.
165 Gundu <gkmohan-AT-gmail.com> on the user list.
161
166
162 * IPython/Release.py (version): Mark 0.7.2 version to start
167 * IPython/Release.py (version): Mark 0.7.2 version to start
163 testing for release on 06/06.
168 testing for release on 06/06.
164
169
165 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
170 2006-05-31 Fernando Perez <Fernando.Perez@colorado.edu>
166
171
167 * scripts/irunner: thin script interface so users don't have to
172 * scripts/irunner: thin script interface so users don't have to
168 find the module and call it as an executable, since modules rarely
173 find the module and call it as an executable, since modules rarely
169 live in people's PATH.
174 live in people's PATH.
170
175
171 * IPython/irunner.py (InteractiveRunner.__init__): added
176 * IPython/irunner.py (InteractiveRunner.__init__): added
172 delaybeforesend attribute to control delays with newer versions of
177 delaybeforesend attribute to control delays with newer versions of
173 pexpect. Thanks to detailed help from pexpect's author, Noah
178 pexpect. Thanks to detailed help from pexpect's author, Noah
174 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
179 Spurrier <noah-AT-noah.org>. Noted how to use the SAGE runner
175 correctly (it works in NoColor mode).
180 correctly (it works in NoColor mode).
176
181
177 * IPython/iplib.py (handle_normal): fix nasty crash reported on
182 * IPython/iplib.py (handle_normal): fix nasty crash reported on
178 SAGE list, from improper log() calls.
183 SAGE list, from improper log() calls.
179
184
180 2006-05-31 Ville Vainio <vivainio@gmail.com>
185 2006-05-31 Ville Vainio <vivainio@gmail.com>
181
186
182 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
187 * upgrade_dir.py, Magic.py (magic_upgrade): call upgrade_dir
183 with args in parens to work correctly with dirs that have spaces.
188 with args in parens to work correctly with dirs that have spaces.
184
189
185 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
190 2006-05-30 Fernando Perez <Fernando.Perez@colorado.edu>
186
191
187 * IPython/Logger.py (Logger.logstart): add option to log raw input
192 * IPython/Logger.py (Logger.logstart): add option to log raw input
188 instead of the processed one. A -r flag was added to the
193 instead of the processed one. A -r flag was added to the
189 %logstart magic used for controlling logging.
194 %logstart magic used for controlling logging.
190
195
191 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
196 2006-05-29 Fernando Perez <Fernando.Perez@colorado.edu>
192
197
193 * IPython/iplib.py (InteractiveShell.__init__): add check for the
198 * IPython/iplib.py (InteractiveShell.__init__): add check for the
194 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
199 *BSDs to omit --color from all 'ls' aliases, since *BSD ls doesn't
195 recognize the option. After a bug report by Will Maier. This
200 recognize the option. After a bug report by Will Maier. This
196 closes #64 (will do it after confirmation from W. Maier).
201 closes #64 (will do it after confirmation from W. Maier).
197
202
198 * IPython/irunner.py: New module to run scripts as if manually
203 * IPython/irunner.py: New module to run scripts as if manually
199 typed into an interactive environment, based on pexpect. After a
204 typed into an interactive environment, based on pexpect. After a
200 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
205 submission by Ken Schutte <kschutte-AT-csail.mit.edu> on the
201 ipython-user list. Simple unittests in the tests/ directory.
206 ipython-user list. Simple unittests in the tests/ directory.
202
207
203 * tools/release: add Will Maier, OpenBSD port maintainer, to
208 * tools/release: add Will Maier, OpenBSD port maintainer, to
204 recepients list. We are now officially part of the OpenBSD ports:
209 recepients list. We are now officially part of the OpenBSD ports:
205 http://www.openbsd.org/ports.html ! Many thanks to Will for the
210 http://www.openbsd.org/ports.html ! Many thanks to Will for the
206 work.
211 work.
207
212
208 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
213 2006-05-26 Fernando Perez <Fernando.Perez@colorado.edu>
209
214
210 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
215 * IPython/ipmaker.py (make_IPython): modify sys.argv fix (below)
211 so that it doesn't break tkinter apps.
216 so that it doesn't break tkinter apps.
212
217
213 * IPython/iplib.py (_prefilter): fix bug where aliases would
218 * IPython/iplib.py (_prefilter): fix bug where aliases would
214 shadow variables when autocall was fully off. Reported by SAGE
219 shadow variables when autocall was fully off. Reported by SAGE
215 author William Stein.
220 author William Stein.
216
221
217 * IPython/OInspect.py (Inspector.__init__): add a flag to control
222 * IPython/OInspect.py (Inspector.__init__): add a flag to control
218 at what detail level strings are computed when foo? is requested.
223 at what detail level strings are computed when foo? is requested.
219 This allows users to ask for example that the string form of an
224 This allows users to ask for example that the string form of an
220 object is only computed when foo?? is called, or even never, by
225 object is only computed when foo?? is called, or even never, by
221 setting the object_info_string_level >= 2 in the configuration
226 setting the object_info_string_level >= 2 in the configuration
222 file. This new option has been added and documented. After a
227 file. This new option has been added and documented. After a
223 request by SAGE to be able to control the printing of very large
228 request by SAGE to be able to control the printing of very large
224 objects more easily.
229 objects more easily.
225
230
226 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
231 2006-05-25 Fernando Perez <Fernando.Perez@colorado.edu>
227
232
228 * IPython/ipmaker.py (make_IPython): remove the ipython call path
233 * IPython/ipmaker.py (make_IPython): remove the ipython call path
229 from sys.argv, to be 100% consistent with how Python itself works
234 from sys.argv, to be 100% consistent with how Python itself works
230 (as seen for example with python -i file.py). After a bug report
235 (as seen for example with python -i file.py). After a bug report
231 by Jeffrey Collins.
236 by Jeffrey Collins.
232
237
233 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
238 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix
234 nasty bug which was preventing custom namespaces with -pylab,
239 nasty bug which was preventing custom namespaces with -pylab,
235 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
240 reported by M. Foord. Minor cleanup, remove old matplotlib.matlab
236 compatibility (long gone from mpl).
241 compatibility (long gone from mpl).
237
242
238 * IPython/ipapi.py (make_session): name change: create->make. We
243 * IPython/ipapi.py (make_session): name change: create->make. We
239 use make in other places (ipmaker,...), it's shorter and easier to
244 use make in other places (ipmaker,...), it's shorter and easier to
240 type and say, etc. I'm trying to clean things before 0.7.2 so
245 type and say, etc. I'm trying to clean things before 0.7.2 so
241 that I can keep things stable wrt to ipapi in the chainsaw branch.
246 that I can keep things stable wrt to ipapi in the chainsaw branch.
242
247
243 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
248 * ipython.el: fix the py-pdbtrack-input-prompt variable so that
244 python-mode recognizes our debugger mode. Add support for
249 python-mode recognizes our debugger mode. Add support for
245 autoindent inside (X)emacs. After a patch sent in by Jin Liu
250 autoindent inside (X)emacs. After a patch sent in by Jin Liu
246 <m.liu.jin-AT-gmail.com> originally written by
251 <m.liu.jin-AT-gmail.com> originally written by
247 doxgen-AT-newsmth.net (with minor modifications for xemacs
252 doxgen-AT-newsmth.net (with minor modifications for xemacs
248 compatibility)
253 compatibility)
249
254
250 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
255 * IPython/Debugger.py (Pdb.format_stack_entry): fix formatting of
251 tracebacks when walking the stack so that the stack tracking system
256 tracebacks when walking the stack so that the stack tracking system
252 in emacs' python-mode can identify the frames correctly.
257 in emacs' python-mode can identify the frames correctly.
253
258
254 * IPython/ipmaker.py (make_IPython): make the internal (and
259 * IPython/ipmaker.py (make_IPython): make the internal (and
255 default config) autoedit_syntax value false by default. Too many
260 default config) autoedit_syntax value false by default. Too many
256 users have complained to me (both on and off-list) about problems
261 users have complained to me (both on and off-list) about problems
257 with this option being on by default, so I'm making it default to
262 with this option being on by default, so I'm making it default to
258 off. It can still be enabled by anyone via the usual mechanisms.
263 off. It can still be enabled by anyone via the usual mechanisms.
259
264
260 * IPython/completer.py (Completer.attr_matches): add support for
265 * IPython/completer.py (Completer.attr_matches): add support for
261 PyCrust-style _getAttributeNames magic method. Patch contributed
266 PyCrust-style _getAttributeNames magic method. Patch contributed
262 by <mscott-AT-goldenspud.com>. Closes #50.
267 by <mscott-AT-goldenspud.com>. Closes #50.
263
268
264 * IPython/iplib.py (InteractiveShell.__init__): remove the
269 * IPython/iplib.py (InteractiveShell.__init__): remove the
265 deletion of exit/quit from __builtin__, which can break
270 deletion of exit/quit from __builtin__, which can break
266 third-party tools like the Zope debugging console. The
271 third-party tools like the Zope debugging console. The
267 %exit/%quit magics remain. In general, it's probably a good idea
272 %exit/%quit magics remain. In general, it's probably a good idea
268 not to delete anything from __builtin__, since we never know what
273 not to delete anything from __builtin__, since we never know what
269 that will break. In any case, python now (for 2.5) will support
274 that will break. In any case, python now (for 2.5) will support
270 'real' exit/quit, so this issue is moot. Closes #55.
275 'real' exit/quit, so this issue is moot. Closes #55.
271
276
272 * IPython/genutils.py (with_obj): rename the 'with' function to
277 * IPython/genutils.py (with_obj): rename the 'with' function to
273 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
278 'withobj' to avoid incompatibilities with Python 2.5, where 'with'
274 becomes a language keyword. Closes #53.
279 becomes a language keyword. Closes #53.
275
280
276 * IPython/FakeModule.py (FakeModule.__init__): add a proper
281 * IPython/FakeModule.py (FakeModule.__init__): add a proper
277 __file__ attribute to this so it fools more things into thinking
282 __file__ attribute to this so it fools more things into thinking
278 it is a real module. Closes #59.
283 it is a real module. Closes #59.
279
284
280 * IPython/Magic.py (magic_edit): add -n option to open the editor
285 * IPython/Magic.py (magic_edit): add -n option to open the editor
281 at a specific line number. After a patch by Stefan van der Walt.
286 at a specific line number. After a patch by Stefan van der Walt.
282
287
283 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
288 2006-05-23 Fernando Perez <Fernando.Perez@colorado.edu>
284
289
285 * IPython/iplib.py (edit_syntax_error): fix crash when for some
290 * IPython/iplib.py (edit_syntax_error): fix crash when for some
286 reason the file could not be opened. After automatic crash
291 reason the file could not be opened. After automatic crash
287 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
292 reports sent by James Graham <jgraham-AT-ast.cam.ac.uk> and
288 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
293 Charles Dolan <charlespatrickdolan-AT-yahoo.com>.
289 (_should_recompile): Don't fire editor if using %bg, since there
294 (_should_recompile): Don't fire editor if using %bg, since there
290 is no file in the first place. From the same report as above.
295 is no file in the first place. From the same report as above.
291 (raw_input): protect against faulty third-party prefilters. After
296 (raw_input): protect against faulty third-party prefilters. After
292 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
297 an automatic crash report sent by Dirk Laurie <dirk-AT-sun.ac.za>
293 while running under SAGE.
298 while running under SAGE.
294
299
295 2006-05-23 Ville Vainio <vivainio@gmail.com>
300 2006-05-23 Ville Vainio <vivainio@gmail.com>
296
301
297 * ipapi.py: Stripped down ip.to_user_ns() to work only as
302 * ipapi.py: Stripped down ip.to_user_ns() to work only as
298 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
303 ip.to_user_ns("x1 y1"), which exposes vars x1 and y1. ipapi.get()
299 now returns None (again), unless dummy is specifically allowed by
304 now returns None (again), unless dummy is specifically allowed by
300 ipapi.get(allow_dummy=True).
305 ipapi.get(allow_dummy=True).
301
306
302 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
307 2006-05-18 Fernando Perez <Fernando.Perez@colorado.edu>
303
308
304 * IPython: remove all 2.2-compatibility objects and hacks from
309 * IPython: remove all 2.2-compatibility objects and hacks from
305 everywhere, since we only support 2.3 at this point. Docs
310 everywhere, since we only support 2.3 at this point. Docs
306 updated.
311 updated.
307
312
308 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
313 * IPython/ipapi.py (IPApi.__init__): Cleanup of all getters.
309 Anything requiring extra validation can be turned into a Python
314 Anything requiring extra validation can be turned into a Python
310 property in the future. I used a property for the db one b/c
315 property in the future. I used a property for the db one b/c
311 there was a nasty circularity problem with the initialization
316 there was a nasty circularity problem with the initialization
312 order, which right now I don't have time to clean up.
317 order, which right now I don't have time to clean up.
313
318
314 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
319 * IPython/Shell.py (MTInteractiveShell.runcode): Fix, I think,
315 another locking bug reported by Jorgen. I'm not 100% sure though,
320 another locking bug reported by Jorgen. I'm not 100% sure though,
316 so more testing is needed...
321 so more testing is needed...
317
322
318 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
323 2006-05-17 Fernando Perez <Fernando.Perez@colorado.edu>
319
324
320 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
325 * IPython/ipapi.py (IPApi.to_user_ns): New function to inject
321 local variables from any routine in user code (typically executed
326 local variables from any routine in user code (typically executed
322 with %run) directly into the interactive namespace. Very useful
327 with %run) directly into the interactive namespace. Very useful
323 when doing complex debugging.
328 when doing complex debugging.
324 (IPythonNotRunning): Changed the default None object to a dummy
329 (IPythonNotRunning): Changed the default None object to a dummy
325 whose attributes can be queried as well as called without
330 whose attributes can be queried as well as called without
326 exploding, to ease writing code which works transparently both in
331 exploding, to ease writing code which works transparently both in
327 and out of ipython and uses some of this API.
332 and out of ipython and uses some of this API.
328
333
329 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
334 2006-05-16 Fernando Perez <Fernando.Perez@colorado.edu>
330
335
331 * IPython/hooks.py (result_display): Fix the fact that our display
336 * IPython/hooks.py (result_display): Fix the fact that our display
332 hook was using str() instead of repr(), as the default python
337 hook was using str() instead of repr(), as the default python
333 console does. This had gone unnoticed b/c it only happened if
338 console does. This had gone unnoticed b/c it only happened if
334 %Pprint was off, but the inconsistency was there.
339 %Pprint was off, but the inconsistency was there.
335
340
336 2006-05-15 Ville Vainio <vivainio@gmail.com>
341 2006-05-15 Ville Vainio <vivainio@gmail.com>
337
342
338 * Oinspect.py: Only show docstring for nonexisting/binary files
343 * Oinspect.py: Only show docstring for nonexisting/binary files
339 when doing object??, closing ticket #62
344 when doing object??, closing ticket #62
340
345
341 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
346 2006-05-13 Fernando Perez <Fernando.Perez@colorado.edu>
342
347
343 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
348 * IPython/Shell.py (MTInteractiveShell.runsource): Fix threading
344 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
349 bug, closes http://www.scipy.net/roundup/ipython/issue55. A lock
345 was being released in a routine which hadn't checked if it had
350 was being released in a routine which hadn't checked if it had
346 been the one to acquire it.
351 been the one to acquire it.
347
352
348 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
353 2006-05-07 Fernando Perez <Fernando.Perez@colorado.edu>
349
354
350 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
355 * IPython/Release.py (version): put out 0.7.2.rc1 for testing.
351
356
352 2006-04-11 Ville Vainio <vivainio@gmail.com>
357 2006-04-11 Ville Vainio <vivainio@gmail.com>
353
358
354 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
359 * iplib.py, ipmaker.py: .ipy extension now means "ipython batch file"
355 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
360 in command line. E.g. "ipython test.ipy" runs test.ipy with ipython
356 prefilters, allowing stuff like magics and aliases in the file.
361 prefilters, allowing stuff like magics and aliases in the file.
357
362
358 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
363 * Prompts.py, Extensions/clearcmd.py, ipy_system_conf.py: %clear magic
359 added. Supported now are "%clear in" and "%clear out" (clear input and
364 added. Supported now are "%clear in" and "%clear out" (clear input and
360 output history, respectively). Also fixed CachedOutput.flush to
365 output history, respectively). Also fixed CachedOutput.flush to
361 properly flush the output cache.
366 properly flush the output cache.
362
367
363 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
368 * Extensions/pspersistence.py: Fix %store to avoid "%store obj.attr"
364 half-success (and fail explicitly).
369 half-success (and fail explicitly).
365
370
366 2006-03-28 Ville Vainio <vivainio@gmail.com>
371 2006-03-28 Ville Vainio <vivainio@gmail.com>
367
372
368 * iplib.py: Fix quoting of aliases so that only argless ones
373 * iplib.py: Fix quoting of aliases so that only argless ones
369 are quoted
374 are quoted
370
375
371 2006-03-28 Ville Vainio <vivainio@gmail.com>
376 2006-03-28 Ville Vainio <vivainio@gmail.com>
372
377
373 * iplib.py: Quote aliases with spaces in the name.
378 * iplib.py: Quote aliases with spaces in the name.
374 "c:\program files\blah\bin" is now legal alias target.
379 "c:\program files\blah\bin" is now legal alias target.
375
380
376 * ext_rehashdir.py: Space no longer allowed as arg
381 * ext_rehashdir.py: Space no longer allowed as arg
377 separator, since space is legal in path names.
382 separator, since space is legal in path names.
378
383
379 2006-03-16 Ville Vainio <vivainio@gmail.com>
384 2006-03-16 Ville Vainio <vivainio@gmail.com>
380
385
381 * upgrade_dir.py: Take path.py from Extensions, correcting
386 * upgrade_dir.py: Take path.py from Extensions, correcting
382 %upgrade magic
387 %upgrade magic
383
388
384 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
389 * ipmaker.py: Suggest using %upgrade if ipy_user_conf.py isn't found.
385
390
386 * hooks.py: Only enclose editor binary in quotes if legal and
391 * hooks.py: Only enclose editor binary in quotes if legal and
387 necessary (space in the name, and is an existing file). Fixes a bug
392 necessary (space in the name, and is an existing file). Fixes a bug
388 reported by Zachary Pincus.
393 reported by Zachary Pincus.
389
394
390 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
395 2006-03-13 Fernando Perez <Fernando.Perez@colorado.edu>
391
396
392 * Manual: thanks to a tip on proper color handling for Emacs, by
397 * Manual: thanks to a tip on proper color handling for Emacs, by
393 Eric J Haywiser <ejh1-AT-MIT.EDU>.
398 Eric J Haywiser <ejh1-AT-MIT.EDU>.
394
399
395 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
400 * ipython.el: close http://www.scipy.net/roundup/ipython/issue57
396 by applying the provided patch. Thanks to Liu Jin
401 by applying the provided patch. Thanks to Liu Jin
397 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
402 <m.liu.jin-AT-gmail.com> for the contribution. No problems under
398 XEmacs/Linux, I'm trusting the submitter that it actually helps
403 XEmacs/Linux, I'm trusting the submitter that it actually helps
399 under win32/GNU Emacs. Will revisit if any problems are reported.
404 under win32/GNU Emacs. Will revisit if any problems are reported.
400
405
401 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
406 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
402
407
403 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
408 * IPython/Gnuplot2.py (_FileClass): update for current Gnuplot.py
404 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
409 from SVN, thanks to a patch by Ryan Woodard <rywo@bas.ac.uk>.
405
410
406 2006-03-12 Ville Vainio <vivainio@gmail.com>
411 2006-03-12 Ville Vainio <vivainio@gmail.com>
407
412
408 * Magic.py (magic_timeit): Added %timeit magic, contributed by
413 * Magic.py (magic_timeit): Added %timeit magic, contributed by
409 Torsten Marek.
414 Torsten Marek.
410
415
411 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
416 2006-03-12 Fernando Perez <Fernando.Perez@colorado.edu>
412
417
413 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
418 * IPython/Magic.py (magic_macro): fix so that the n1-n2 syntax for
414 line ranges works again.
419 line ranges works again.
415
420
416 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
421 2006-03-11 Fernando Perez <Fernando.Perez@colorado.edu>
417
422
418 * IPython/iplib.py (showtraceback): add back sys.last_traceback
423 * IPython/iplib.py (showtraceback): add back sys.last_traceback
419 and friends, after a discussion with Zach Pincus on ipython-user.
424 and friends, after a discussion with Zach Pincus on ipython-user.
420 I'm not 100% sure, but after thinking about it quite a bit, it may
425 I'm not 100% sure, but after thinking about it quite a bit, it may
421 be OK. Testing with the multithreaded shells didn't reveal any
426 be OK. Testing with the multithreaded shells didn't reveal any
422 problems, but let's keep an eye out.
427 problems, but let's keep an eye out.
423
428
424 In the process, I fixed a few things which were calling
429 In the process, I fixed a few things which were calling
425 self.InteractiveTB() directly (like safe_execfile), which is a
430 self.InteractiveTB() directly (like safe_execfile), which is a
426 mistake: ALL exception reporting should be done by calling
431 mistake: ALL exception reporting should be done by calling
427 self.showtraceback(), which handles state and tab-completion and
432 self.showtraceback(), which handles state and tab-completion and
428 more.
433 more.
429
434
430 2006-03-01 Ville Vainio <vivainio@gmail.com>
435 2006-03-01 Ville Vainio <vivainio@gmail.com>
431
436
432 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
437 * Extensions/ipipe.py: Added Walter Doerwald's "ipipe" module.
433 To use, do "from ipipe import *".
438 To use, do "from ipipe import *".
434
439
435 2006-02-24 Ville Vainio <vivainio@gmail.com>
440 2006-02-24 Ville Vainio <vivainio@gmail.com>
436
441
437 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
442 * Magic.py, upgrade_dir.py: %upgrade magic added. Does things more
438 "cleanly" and safely than the older upgrade mechanism.
443 "cleanly" and safely than the older upgrade mechanism.
439
444
440 2006-02-21 Ville Vainio <vivainio@gmail.com>
445 2006-02-21 Ville Vainio <vivainio@gmail.com>
441
446
442 * Magic.py: %save works again.
447 * Magic.py: %save works again.
443
448
444 2006-02-15 Ville Vainio <vivainio@gmail.com>
449 2006-02-15 Ville Vainio <vivainio@gmail.com>
445
450
446 * Magic.py: %Pprint works again
451 * Magic.py: %Pprint works again
447
452
448 * Extensions/ipy_sane_defaults.py: Provide everything provided
453 * Extensions/ipy_sane_defaults.py: Provide everything provided
449 in default ipythonrc, to make it possible to have a completely empty
454 in default ipythonrc, to make it possible to have a completely empty
450 ipythonrc (and thus completely rc-file free configuration)
455 ipythonrc (and thus completely rc-file free configuration)
451
456
452 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
457 2006-02-11 Fernando Perez <Fernando.Perez@colorado.edu>
453
458
454 * IPython/hooks.py (editor): quote the call to the editor command,
459 * IPython/hooks.py (editor): quote the call to the editor command,
455 to allow commands with spaces in them. Problem noted by watching
460 to allow commands with spaces in them. Problem noted by watching
456 Ian Oswald's video about textpad under win32 at
461 Ian Oswald's video about textpad under win32 at
457 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
462 http://showmedo.com/videoListPage?listKey=PythonIPythonSeries
458
463
459 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
464 * IPython/UserConfig/ipythonrc: Replace @ signs with % when
460 describing magics (we haven't used @ for a loong time).
465 describing magics (we haven't used @ for a loong time).
461
466
462 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
467 * IPython/ultraTB.py (VerboseTB.text.text_repr): Added patch
463 contributed by marienz to close
468 contributed by marienz to close
464 http://www.scipy.net/roundup/ipython/issue53.
469 http://www.scipy.net/roundup/ipython/issue53.
465
470
466 2006-02-10 Ville Vainio <vivainio@gmail.com>
471 2006-02-10 Ville Vainio <vivainio@gmail.com>
467
472
468 * genutils.py: getoutput now works in win32 too
473 * genutils.py: getoutput now works in win32 too
469
474
470 * completer.py: alias and magic completion only invoked
475 * completer.py: alias and magic completion only invoked
471 at the first "item" in the line, to avoid "cd %store"
476 at the first "item" in the line, to avoid "cd %store"
472 nonsense.
477 nonsense.
473
478
474 2006-02-09 Ville Vainio <vivainio@gmail.com>
479 2006-02-09 Ville Vainio <vivainio@gmail.com>
475
480
476 * test/*: Added a unit testing framework (finally).
481 * test/*: Added a unit testing framework (finally).
477 '%run runtests.py' to run test_*.
482 '%run runtests.py' to run test_*.
478
483
479 * ipapi.py: Exposed runlines and set_custom_exc
484 * ipapi.py: Exposed runlines and set_custom_exc
480
485
481 2006-02-07 Ville Vainio <vivainio@gmail.com>
486 2006-02-07 Ville Vainio <vivainio@gmail.com>
482
487
483 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
488 * iplib.py: don't split "f 1 2" to "f(1,2)" in autocall,
484 instead use "f(1 2)" as before.
489 instead use "f(1 2)" as before.
485
490
486 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
491 2006-02-05 Fernando Perez <Fernando.Perez@colorado.edu>
487
492
488 * IPython/demo.py (IPythonDemo): Add new classes to the demo
493 * IPython/demo.py (IPythonDemo): Add new classes to the demo
489 facilities, for demos processed by the IPython input filter
494 facilities, for demos processed by the IPython input filter
490 (IPythonDemo), and for running a script one-line-at-a-time as a
495 (IPythonDemo), and for running a script one-line-at-a-time as a
491 demo, both for pure Python (LineDemo) and for IPython-processed
496 demo, both for pure Python (LineDemo) and for IPython-processed
492 input (IPythonLineDemo). After a request by Dave Kohel, from the
497 input (IPythonLineDemo). After a request by Dave Kohel, from the
493 SAGE team.
498 SAGE team.
494 (Demo.edit): added an edit() method to the demo objects, to edit
499 (Demo.edit): added an edit() method to the demo objects, to edit
495 the in-memory copy of the last executed block.
500 the in-memory copy of the last executed block.
496
501
497 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
502 * IPython/Magic.py (magic_edit): add '-r' option for 'raw'
498 processing to %edit, %macro and %save. These commands can now be
503 processing to %edit, %macro and %save. These commands can now be
499 invoked on the unprocessed input as it was typed by the user
504 invoked on the unprocessed input as it was typed by the user
500 (without any prefilters applied). After requests by the SAGE team
505 (without any prefilters applied). After requests by the SAGE team
501 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
506 at SAGE days 2006: http://modular.ucsd.edu/sage/days1/schedule.html.
502
507
503 2006-02-01 Ville Vainio <vivainio@gmail.com>
508 2006-02-01 Ville Vainio <vivainio@gmail.com>
504
509
505 * setup.py, eggsetup.py: easy_install ipython==dev works
510 * setup.py, eggsetup.py: easy_install ipython==dev works
506 correctly now (on Linux)
511 correctly now (on Linux)
507
512
508 * ipy_user_conf,ipmaker: user config changes, removed spurious
513 * ipy_user_conf,ipmaker: user config changes, removed spurious
509 warnings
514 warnings
510
515
511 * iplib: if rc.banner is string, use it as is.
516 * iplib: if rc.banner is string, use it as is.
512
517
513 * Magic: %pycat accepts a string argument and pages it's contents.
518 * Magic: %pycat accepts a string argument and pages it's contents.
514
519
515
520
516 2006-01-30 Ville Vainio <vivainio@gmail.com>
521 2006-01-30 Ville Vainio <vivainio@gmail.com>
517
522
518 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
523 * pickleshare,pspersistence,ipapi,Magic: persistence overhaul.
519 Now %store and bookmarks work through PickleShare, meaning that
524 Now %store and bookmarks work through PickleShare, meaning that
520 concurrent access is possible and all ipython sessions see the
525 concurrent access is possible and all ipython sessions see the
521 same database situation all the time, instead of snapshot of
526 same database situation all the time, instead of snapshot of
522 the situation when the session was started. Hence, %bookmark
527 the situation when the session was started. Hence, %bookmark
523 results are immediately accessible from othes sessions. The database
528 results are immediately accessible from othes sessions. The database
524 is also available for use by user extensions. See:
529 is also available for use by user extensions. See:
525 http://www.python.org/pypi/pickleshare
530 http://www.python.org/pypi/pickleshare
526
531
527 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
532 * hooks.py: Two new hooks, 'shutdown_hook' and 'late_startup_hook'.
528
533
529 * aliases can now be %store'd
534 * aliases can now be %store'd
530
535
531 * path.py moved to Extensions so that pickleshare does not need
536 * path.py moved to Extensions so that pickleshare does not need
532 IPython-specific import. Extensions added to pythonpath right
537 IPython-specific import. Extensions added to pythonpath right
533 at __init__.
538 at __init__.
534
539
535 * iplib.py: ipalias deprecated/redundant; aliases are converted and
540 * iplib.py: ipalias deprecated/redundant; aliases are converted and
536 called with _ip.system and the pre-transformed command string.
541 called with _ip.system and the pre-transformed command string.
537
542
538 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
543 2006-01-29 Fernando Perez <Fernando.Perez@colorado.edu>
539
544
540 * IPython/iplib.py (interact): Fix that we were not catching
545 * IPython/iplib.py (interact): Fix that we were not catching
541 KeyboardInterrupt exceptions properly. I'm not quite sure why the
546 KeyboardInterrupt exceptions properly. I'm not quite sure why the
542 logic here had to change, but it's fixed now.
547 logic here had to change, but it's fixed now.
543
548
544 2006-01-29 Ville Vainio <vivainio@gmail.com>
549 2006-01-29 Ville Vainio <vivainio@gmail.com>
545
550
546 * iplib.py: Try to import pyreadline on Windows.
551 * iplib.py: Try to import pyreadline on Windows.
547
552
548 2006-01-27 Ville Vainio <vivainio@gmail.com>
553 2006-01-27 Ville Vainio <vivainio@gmail.com>
549
554
550 * iplib.py: Expose ipapi as _ip in builtin namespace.
555 * iplib.py: Expose ipapi as _ip in builtin namespace.
551 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
556 Makes ipmagic (-> _ip.magic), ipsystem (-> _ip.system)
552 and ip_set_hook (-> _ip.set_hook) redundant. % and !
557 and ip_set_hook (-> _ip.set_hook) redundant. % and !
553 syntax now produce _ip.* variant of the commands.
558 syntax now produce _ip.* variant of the commands.
554
559
555 * "_ip.options().autoedit_syntax = 2" automatically throws
560 * "_ip.options().autoedit_syntax = 2" automatically throws
556 user to editor for syntax error correction without prompting.
561 user to editor for syntax error correction without prompting.
557
562
558 2006-01-27 Ville Vainio <vivainio@gmail.com>
563 2006-01-27 Ville Vainio <vivainio@gmail.com>
559
564
560 * ipmaker.py: Give "realistic" sys.argv for scripts (without
565 * ipmaker.py: Give "realistic" sys.argv for scripts (without
561 'ipython' at argv[0]) executed through command line.
566 'ipython' at argv[0]) executed through command line.
562 NOTE: this DEPRECATES calling ipython with multiple scripts
567 NOTE: this DEPRECATES calling ipython with multiple scripts
563 ("ipython a.py b.py c.py")
568 ("ipython a.py b.py c.py")
564
569
565 * iplib.py, hooks.py: Added configurable input prefilter,
570 * iplib.py, hooks.py: Added configurable input prefilter,
566 named 'input_prefilter'. See ext_rescapture.py for example
571 named 'input_prefilter'. See ext_rescapture.py for example
567 usage.
572 usage.
568
573
569 * ext_rescapture.py, Magic.py: Better system command output capture
574 * ext_rescapture.py, Magic.py: Better system command output capture
570 through 'var = !ls' (deprecates user-visible %sc). Same notation
575 through 'var = !ls' (deprecates user-visible %sc). Same notation
571 applies for magics, 'var = %alias' assigns alias list to var.
576 applies for magics, 'var = %alias' assigns alias list to var.
572
577
573 * ipapi.py: added meta() for accessing extension-usable data store.
578 * ipapi.py: added meta() for accessing extension-usable data store.
574
579
575 * iplib.py: added InteractiveShell.getapi(). New magics should be
580 * iplib.py: added InteractiveShell.getapi(). New magics should be
576 written doing self.getapi() instead of using the shell directly.
581 written doing self.getapi() instead of using the shell directly.
577
582
578 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
583 * Magic.py: %store now allows doing %store foo > ~/myfoo.txt and
579 %store foo >> ~/myfoo.txt to store variables to files (in clean
584 %store foo >> ~/myfoo.txt to store variables to files (in clean
580 textual form, not a restorable pickle).
585 textual form, not a restorable pickle).
581
586
582 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
587 * ipmaker.py: now import ipy_profile_PROFILENAME automatically
583
588
584 * usage.py, Magic.py: added %quickref
589 * usage.py, Magic.py: added %quickref
585
590
586 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
591 * iplib.py: ESC_PAREN fixes: /f 1 2 -> f(1,2), not f(1 2).
587
592
588 * GetoptErrors when invoking magics etc. with wrong args
593 * GetoptErrors when invoking magics etc. with wrong args
589 are now more helpful:
594 are now more helpful:
590 GetoptError: option -l not recognized (allowed: "qb" )
595 GetoptError: option -l not recognized (allowed: "qb" )
591
596
592 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
597 2006-01-25 Fernando Perez <Fernando.Perez@colorado.edu>
593
598
594 * IPython/demo.py (Demo.show): Flush stdout after each block, so
599 * IPython/demo.py (Demo.show): Flush stdout after each block, so
595 computationally intensive blocks don't appear to stall the demo.
600 computationally intensive blocks don't appear to stall the demo.
596
601
597 2006-01-24 Ville Vainio <vivainio@gmail.com>
602 2006-01-24 Ville Vainio <vivainio@gmail.com>
598
603
599 * iplib.py, hooks.py: 'result_display' hook can return a non-None
604 * iplib.py, hooks.py: 'result_display' hook can return a non-None
600 value to manipulate resulting history entry.
605 value to manipulate resulting history entry.
601
606
602 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
607 * ipapi.py: Moved TryNext here from hooks.py. Moved functions
603 to instance methods of IPApi class, to make extending an embedded
608 to instance methods of IPApi class, to make extending an embedded
604 IPython feasible. See ext_rehashdir.py for example usage.
609 IPython feasible. See ext_rehashdir.py for example usage.
605
610
606 * Merged 1071-1076 from branches/0.7.1
611 * Merged 1071-1076 from branches/0.7.1
607
612
608
613
609 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
614 2006-01-23 Fernando Perez <Fernando.Perez@colorado.edu>
610
615
611 * tools/release (daystamp): Fix build tools to use the new
616 * tools/release (daystamp): Fix build tools to use the new
612 eggsetup.py script to build lightweight eggs.
617 eggsetup.py script to build lightweight eggs.
613
618
614 * Applied changesets 1062 and 1064 before 0.7.1 release.
619 * Applied changesets 1062 and 1064 before 0.7.1 release.
615
620
616 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
621 * IPython/Magic.py (magic_history): Add '-r' option to %hist, to
617 see the raw input history (without conversions like %ls ->
622 see the raw input history (without conversions like %ls ->
618 ipmagic("ls")). After a request from W. Stein, SAGE
623 ipmagic("ls")). After a request from W. Stein, SAGE
619 (http://modular.ucsd.edu/sage) developer. This information is
624 (http://modular.ucsd.edu/sage) developer. This information is
620 stored in the input_hist_raw attribute of the IPython instance, so
625 stored in the input_hist_raw attribute of the IPython instance, so
621 developers can access it if needed (it's an InputList instance).
626 developers can access it if needed (it's an InputList instance).
622
627
623 * Versionstring = 0.7.2.svn
628 * Versionstring = 0.7.2.svn
624
629
625 * eggsetup.py: A separate script for constructing eggs, creates
630 * eggsetup.py: A separate script for constructing eggs, creates
626 proper launch scripts even on Windows (an .exe file in
631 proper launch scripts even on Windows (an .exe file in
627 \python24\scripts).
632 \python24\scripts).
628
633
629 * ipapi.py: launch_new_instance, launch entry point needed for the
634 * ipapi.py: launch_new_instance, launch entry point needed for the
630 egg.
635 egg.
631
636
632 2006-01-23 Ville Vainio <vivainio@gmail.com>
637 2006-01-23 Ville Vainio <vivainio@gmail.com>
633
638
634 * Added %cpaste magic for pasting python code
639 * Added %cpaste magic for pasting python code
635
640
636 2006-01-22 Ville Vainio <vivainio@gmail.com>
641 2006-01-22 Ville Vainio <vivainio@gmail.com>
637
642
638 * Merge from branches/0.7.1 into trunk, revs 1052-1057
643 * Merge from branches/0.7.1 into trunk, revs 1052-1057
639
644
640 * Versionstring = 0.7.2.svn
645 * Versionstring = 0.7.2.svn
641
646
642 * eggsetup.py: A separate script for constructing eggs, creates
647 * eggsetup.py: A separate script for constructing eggs, creates
643 proper launch scripts even on Windows (an .exe file in
648 proper launch scripts even on Windows (an .exe file in
644 \python24\scripts).
649 \python24\scripts).
645
650
646 * ipapi.py: launch_new_instance, launch entry point needed for the
651 * ipapi.py: launch_new_instance, launch entry point needed for the
647 egg.
652 egg.
648
653
649 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
654 2006-01-22 Fernando Perez <Fernando.Perez@colorado.edu>
650
655
651 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
656 * IPython/OInspect.py (Inspector.pinfo): fix bug where foo?? or
652 %pfile foo would print the file for foo even if it was a binary.
657 %pfile foo would print the file for foo even if it was a binary.
653 Now, extensions '.so' and '.dll' are skipped.
658 Now, extensions '.so' and '.dll' are skipped.
654
659
655 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
660 * IPython/Shell.py (MTInteractiveShell.__init__): Fix threading
656 bug, where macros would fail in all threaded modes. I'm not 100%
661 bug, where macros would fail in all threaded modes. I'm not 100%
657 sure, so I'm going to put out an rc instead of making a release
662 sure, so I'm going to put out an rc instead of making a release
658 today, and wait for feedback for at least a few days.
663 today, and wait for feedback for at least a few days.
659
664
660 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
665 * IPython/iplib.py (handle_normal): fix (finally? somehow I doubt
661 it...) the handling of pasting external code with autoindent on.
666 it...) the handling of pasting external code with autoindent on.
662 To get out of a multiline input, the rule will appear for most
667 To get out of a multiline input, the rule will appear for most
663 users unchanged: two blank lines or change the indent level
668 users unchanged: two blank lines or change the indent level
664 proposed by IPython. But there is a twist now: you can
669 proposed by IPython. But there is a twist now: you can
665 add/subtract only *one or two spaces*. If you add/subtract three
670 add/subtract only *one or two spaces*. If you add/subtract three
666 or more (unless you completely delete the line), IPython will
671 or more (unless you completely delete the line), IPython will
667 accept that line, and you'll need to enter a second one of pure
672 accept that line, and you'll need to enter a second one of pure
668 whitespace. I know it sounds complicated, but I can't find a
673 whitespace. I know it sounds complicated, but I can't find a
669 different solution that covers all the cases, with the right
674 different solution that covers all the cases, with the right
670 heuristics. Hopefully in actual use, nobody will really notice
675 heuristics. Hopefully in actual use, nobody will really notice
671 all these strange rules and things will 'just work'.
676 all these strange rules and things will 'just work'.
672
677
673 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
678 2006-01-21 Fernando Perez <Fernando.Perez@colorado.edu>
674
679
675 * IPython/iplib.py (interact): catch exceptions which can be
680 * IPython/iplib.py (interact): catch exceptions which can be
676 triggered asynchronously by signal handlers. Thanks to an
681 triggered asynchronously by signal handlers. Thanks to an
677 automatic crash report, submitted by Colin Kingsley
682 automatic crash report, submitted by Colin Kingsley
678 <tercel-AT-gentoo.org>.
683 <tercel-AT-gentoo.org>.
679
684
680 2006-01-20 Ville Vainio <vivainio@gmail.com>
685 2006-01-20 Ville Vainio <vivainio@gmail.com>
681
686
682 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
687 * Ipython/Extensions/ext_rehashdir.py: Created a usable example
683 (%rehashdir, very useful, try it out) of how to extend ipython
688 (%rehashdir, very useful, try it out) of how to extend ipython
684 with new magics. Also added Extensions dir to pythonpath to make
689 with new magics. Also added Extensions dir to pythonpath to make
685 importing extensions easy.
690 importing extensions easy.
686
691
687 * %store now complains when trying to store interactively declared
692 * %store now complains when trying to store interactively declared
688 classes / instances of those classes.
693 classes / instances of those classes.
689
694
690 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
695 * Extensions/ipy_system_conf.py, UserConfig/ipy_user_conf.py,
691 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
696 ipmaker.py: Config rehaul. Now ipy_..._conf.py are always imported
692 if they exist, and ipy_user_conf.py with some defaults is created for
697 if they exist, and ipy_user_conf.py with some defaults is created for
693 the user.
698 the user.
694
699
695 * Startup rehashing done by the config file, not InterpreterExec.
700 * Startup rehashing done by the config file, not InterpreterExec.
696 This means system commands are available even without selecting the
701 This means system commands are available even without selecting the
697 pysh profile. It's the sensible default after all.
702 pysh profile. It's the sensible default after all.
698
703
699 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
704 2006-01-20 Fernando Perez <Fernando.Perez@colorado.edu>
700
705
701 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
706 * IPython/iplib.py (raw_input): I _think_ I got the pasting of
702 multiline code with autoindent on working. But I am really not
707 multiline code with autoindent on working. But I am really not
703 sure, so this needs more testing. Will commit a debug-enabled
708 sure, so this needs more testing. Will commit a debug-enabled
704 version for now, while I test it some more, so that Ville and
709 version for now, while I test it some more, so that Ville and
705 others may also catch any problems. Also made
710 others may also catch any problems. Also made
706 self.indent_current_str() a method, to ensure that there's no
711 self.indent_current_str() a method, to ensure that there's no
707 chance of the indent space count and the corresponding string
712 chance of the indent space count and the corresponding string
708 falling out of sync. All code needing the string should just call
713 falling out of sync. All code needing the string should just call
709 the method.
714 the method.
710
715
711 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
716 2006-01-18 Fernando Perez <Fernando.Perez@colorado.edu>
712
717
713 * IPython/Magic.py (magic_edit): fix check for when users don't
718 * IPython/Magic.py (magic_edit): fix check for when users don't
714 save their output files, the try/except was in the wrong section.
719 save their output files, the try/except was in the wrong section.
715
720
716 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
721 2006-01-17 Fernando Perez <Fernando.Perez@colorado.edu>
717
722
718 * IPython/Magic.py (magic_run): fix __file__ global missing from
723 * IPython/Magic.py (magic_run): fix __file__ global missing from
719 script's namespace when executed via %run. After a report by
724 script's namespace when executed via %run. After a report by
720 Vivian.
725 Vivian.
721
726
722 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
727 * IPython/Debugger.py (Pdb.__init__): Fix breakage with '%run -d'
723 when using python 2.4. The parent constructor changed in 2.4, and
728 when using python 2.4. The parent constructor changed in 2.4, and
724 we need to track it directly (we can't call it, as it messes up
729 we need to track it directly (we can't call it, as it messes up
725 readline and tab-completion inside our pdb would stop working).
730 readline and tab-completion inside our pdb would stop working).
726 After a bug report by R. Bernstein <rocky-AT-panix.com>.
731 After a bug report by R. Bernstein <rocky-AT-panix.com>.
727
732
728 2006-01-16 Ville Vainio <vivainio@gmail.com>
733 2006-01-16 Ville Vainio <vivainio@gmail.com>
729
734
730 * Ipython/magic.py: Reverted back to old %edit functionality
735 * Ipython/magic.py: Reverted back to old %edit functionality
731 that returns file contents on exit.
736 that returns file contents on exit.
732
737
733 * IPython/path.py: Added Jason Orendorff's "path" module to
738 * IPython/path.py: Added Jason Orendorff's "path" module to
734 IPython tree, http://www.jorendorff.com/articles/python/path/.
739 IPython tree, http://www.jorendorff.com/articles/python/path/.
735 You can get path objects conveniently through %sc, and !!, e.g.:
740 You can get path objects conveniently through %sc, and !!, e.g.:
736 sc files=ls
741 sc files=ls
737 for p in files.paths: # or files.p
742 for p in files.paths: # or files.p
738 print p,p.mtime
743 print p,p.mtime
739
744
740 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
745 * Ipython/iplib.py:"," and ";" autoquoting-upon-autocall
741 now work again without considering the exclusion regexp -
746 now work again without considering the exclusion regexp -
742 hence, things like ',foo my/path' turn to 'foo("my/path")'
747 hence, things like ',foo my/path' turn to 'foo("my/path")'
743 instead of syntax error.
748 instead of syntax error.
744
749
745
750
746 2006-01-14 Ville Vainio <vivainio@gmail.com>
751 2006-01-14 Ville Vainio <vivainio@gmail.com>
747
752
748 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
753 * IPython/ipapi.py (ashook, asmagic, options): Added convenience
749 ipapi decorators for python 2.4 users, options() provides access to rc
754 ipapi decorators for python 2.4 users, options() provides access to rc
750 data.
755 data.
751
756
752 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
757 * IPython/Magic.py (magic_cd): %cd now accepts backslashes
753 as path separators (even on Linux ;-). Space character after
758 as path separators (even on Linux ;-). Space character after
754 backslash (as yielded by tab completer) is still space;
759 backslash (as yielded by tab completer) is still space;
755 "%cd long\ name" works as expected.
760 "%cd long\ name" works as expected.
756
761
757 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
762 * IPython/ipapi.py,hooks.py,iplib.py: Hooks now implemented
758 as "chain of command", with priority. API stays the same,
763 as "chain of command", with priority. API stays the same,
759 TryNext exception raised by a hook function signals that
764 TryNext exception raised by a hook function signals that
760 current hook failed and next hook should try handling it, as
765 current hook failed and next hook should try handling it, as
761 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
766 suggested by Walter DΓΆrwald <walter@livinglogic.de>. Walter also
762 requested configurable display hook, which is now implemented.
767 requested configurable display hook, which is now implemented.
763
768
764 2006-01-13 Ville Vainio <vivainio@gmail.com>
769 2006-01-13 Ville Vainio <vivainio@gmail.com>
765
770
766 * IPython/platutils*.py: platform specific utility functions,
771 * IPython/platutils*.py: platform specific utility functions,
767 so far only set_term_title is implemented (change terminal
772 so far only set_term_title is implemented (change terminal
768 label in windowing systems). %cd now changes the title to
773 label in windowing systems). %cd now changes the title to
769 current dir.
774 current dir.
770
775
771 * IPython/Release.py: Added myself to "authors" list,
776 * IPython/Release.py: Added myself to "authors" list,
772 had to create new files.
777 had to create new files.
773
778
774 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
779 * IPython/iplib.py (handle_shell_escape): fixed logical flaw in
775 shell escape; not a known bug but had potential to be one in the
780 shell escape; not a known bug but had potential to be one in the
776 future.
781 future.
777
782
778 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
783 * IPython/ipapi.py (added),OInspect.py,iplib.py: "Public"
779 extension API for IPython! See the module for usage example. Fix
784 extension API for IPython! See the module for usage example. Fix
780 OInspect for docstring-less magic functions.
785 OInspect for docstring-less magic functions.
781
786
782
787
783 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
788 2006-01-13 Fernando Perez <Fernando.Perez@colorado.edu>
784
789
785 * IPython/iplib.py (raw_input): temporarily deactivate all
790 * IPython/iplib.py (raw_input): temporarily deactivate all
786 attempts at allowing pasting of code with autoindent on. It
791 attempts at allowing pasting of code with autoindent on. It
787 introduced bugs (reported by Prabhu) and I can't seem to find a
792 introduced bugs (reported by Prabhu) and I can't seem to find a
788 robust combination which works in all cases. Will have to revisit
793 robust combination which works in all cases. Will have to revisit
789 later.
794 later.
790
795
791 * IPython/genutils.py: remove isspace() function. We've dropped
796 * IPython/genutils.py: remove isspace() function. We've dropped
792 2.2 compatibility, so it's OK to use the string method.
797 2.2 compatibility, so it's OK to use the string method.
793
798
794 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
799 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
795
800
796 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
801 * IPython/iplib.py (InteractiveShell.__init__): fix regexp
797 matching what NOT to autocall on, to include all python binary
802 matching what NOT to autocall on, to include all python binary
798 operators (including things like 'and', 'or', 'is' and 'in').
803 operators (including things like 'and', 'or', 'is' and 'in').
799 Prompted by a bug report on 'foo & bar', but I realized we had
804 Prompted by a bug report on 'foo & bar', but I realized we had
800 many more potential bug cases with other operators. The regexp is
805 many more potential bug cases with other operators. The regexp is
801 self.re_exclude_auto, it's fairly commented.
806 self.re_exclude_auto, it's fairly commented.
802
807
803 2006-01-12 Ville Vainio <vivainio@gmail.com>
808 2006-01-12 Ville Vainio <vivainio@gmail.com>
804
809
805 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
810 * IPython/iplib.py (make_quoted_expr,handle_shell_escape):
806 Prettified and hardened string/backslash quoting with ipsystem(),
811 Prettified and hardened string/backslash quoting with ipsystem(),
807 ipalias() and ipmagic(). Now even \ characters are passed to
812 ipalias() and ipmagic(). Now even \ characters are passed to
808 %magics, !shell escapes and aliases exactly as they are in the
813 %magics, !shell escapes and aliases exactly as they are in the
809 ipython command line. Should improve backslash experience,
814 ipython command line. Should improve backslash experience,
810 particularly in Windows (path delimiter for some commands that
815 particularly in Windows (path delimiter for some commands that
811 won't understand '/'), but Unix benefits as well (regexps). %cd
816 won't understand '/'), but Unix benefits as well (regexps). %cd
812 magic still doesn't support backslash path delimiters, though. Also
817 magic still doesn't support backslash path delimiters, though. Also
813 deleted all pretense of supporting multiline command strings in
818 deleted all pretense of supporting multiline command strings in
814 !system or %magic commands. Thanks to Jerry McRae for suggestions.
819 !system or %magic commands. Thanks to Jerry McRae for suggestions.
815
820
816 * doc/build_doc_instructions.txt added. Documentation on how to
821 * doc/build_doc_instructions.txt added. Documentation on how to
817 use doc/update_manual.py, added yesterday. Both files contributed
822 use doc/update_manual.py, added yesterday. Both files contributed
818 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
823 by JΓΆrgen Stenarson <jorgen.stenarson-AT-bostream.nu>. This slates
819 doc/*.sh for deprecation at a later date.
824 doc/*.sh for deprecation at a later date.
820
825
821 * /ipython.py Added ipython.py to root directory for
826 * /ipython.py Added ipython.py to root directory for
822 zero-installation (tar xzvf ipython.tgz; cd ipython; python
827 zero-installation (tar xzvf ipython.tgz; cd ipython; python
823 ipython.py) and development convenience (no need to keep doing
828 ipython.py) and development convenience (no need to keep doing
824 "setup.py install" between changes).
829 "setup.py install" between changes).
825
830
826 * Made ! and !! shell escapes work (again) in multiline expressions:
831 * Made ! and !! shell escapes work (again) in multiline expressions:
827 if 1:
832 if 1:
828 !ls
833 !ls
829 !!ls
834 !!ls
830
835
831 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
836 2006-01-12 Fernando Perez <Fernando.Perez@colorado.edu>
832
837
833 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
838 * IPython/ipstruct.py (Struct): Rename IPython.Struct to
834 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
839 IPython.ipstruct, to avoid local shadowing of the stdlib 'struct'
835 module in case-insensitive installation. Was causing crashes
840 module in case-insensitive installation. Was causing crashes
836 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
841 under win32. Closes http://www.scipy.net/roundup/ipython/issue49.
837
842
838 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
843 * IPython/Magic.py (magic_pycat): Fix pycat, patch by Marien Zwart
839 <marienz-AT-gentoo.org>, closes
844 <marienz-AT-gentoo.org>, closes
840 http://www.scipy.net/roundup/ipython/issue51.
845 http://www.scipy.net/roundup/ipython/issue51.
841
846
842 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
847 2006-01-11 Fernando Perez <Fernando.Perez@colorado.edu>
843
848
844 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
849 * IPython/Shell.py (IPShellGTK.on_timer): Finally fix the
845 problem of excessive CPU usage under *nix and keyboard lag under
850 problem of excessive CPU usage under *nix and keyboard lag under
846 win32.
851 win32.
847
852
848 2006-01-10 *** Released version 0.7.0
853 2006-01-10 *** Released version 0.7.0
849
854
850 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
855 2006-01-10 Fernando Perez <Fernando.Perez@colorado.edu>
851
856
852 * IPython/Release.py (revision): tag version number to 0.7.0,
857 * IPython/Release.py (revision): tag version number to 0.7.0,
853 ready for release.
858 ready for release.
854
859
855 * IPython/Magic.py (magic_edit): Add print statement to %edit so
860 * IPython/Magic.py (magic_edit): Add print statement to %edit so
856 it informs the user of the name of the temp. file used. This can
861 it informs the user of the name of the temp. file used. This can
857 help if you decide later to reuse that same file, so you know
862 help if you decide later to reuse that same file, so you know
858 where to copy the info from.
863 where to copy the info from.
859
864
860 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
865 2006-01-09 Fernando Perez <Fernando.Perez@colorado.edu>
861
866
862 * setup_bdist_egg.py: little script to build an egg. Added
867 * setup_bdist_egg.py: little script to build an egg. Added
863 support in the release tools as well.
868 support in the release tools as well.
864
869
865 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
870 2006-01-08 Fernando Perez <Fernando.Perez@colorado.edu>
866
871
867 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
872 * IPython/Shell.py (IPShellWX.__init__): add support for WXPython
868 version selection (new -wxversion command line and ipythonrc
873 version selection (new -wxversion command line and ipythonrc
869 parameter). Patch contributed by Arnd Baecker
874 parameter). Patch contributed by Arnd Baecker
870 <arnd.baecker-AT-web.de>.
875 <arnd.baecker-AT-web.de>.
871
876
872 * IPython/iplib.py (embed_mainloop): fix tab-completion in
877 * IPython/iplib.py (embed_mainloop): fix tab-completion in
873 embedded instances, for variables defined at the interactive
878 embedded instances, for variables defined at the interactive
874 prompt of the embedded ipython. Reported by Arnd.
879 prompt of the embedded ipython. Reported by Arnd.
875
880
876 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
881 * IPython/Magic.py (magic_autocall): Fix %autocall magic. Now
877 it can be used as a (stateful) toggle, or with a direct parameter.
882 it can be used as a (stateful) toggle, or with a direct parameter.
878
883
879 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
884 * IPython/ultraTB.py (_fixed_getinnerframes): remove debug assert which
880 could be triggered in certain cases and cause the traceback
885 could be triggered in certain cases and cause the traceback
881 printer not to work.
886 printer not to work.
882
887
883 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
888 2006-01-07 Fernando Perez <Fernando.Perez@colorado.edu>
884
889
885 * IPython/iplib.py (_should_recompile): Small fix, closes
890 * IPython/iplib.py (_should_recompile): Small fix, closes
886 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
891 http://www.scipy.net/roundup/ipython/issue48. Patch by Scott.
887
892
888 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
893 2006-01-04 Fernando Perez <Fernando.Perez@colorado.edu>
889
894
890 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
895 * IPython/Shell.py (IPShellGTK.mainloop): fix bug in the GTK
891 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
896 backend for matplotlib (100% cpu utiliziation). Thanks to Charlie
892 Moad for help with tracking it down.
897 Moad for help with tracking it down.
893
898
894 * IPython/iplib.py (handle_auto): fix autocall handling for
899 * IPython/iplib.py (handle_auto): fix autocall handling for
895 objects which support BOTH __getitem__ and __call__ (so that f [x]
900 objects which support BOTH __getitem__ and __call__ (so that f [x]
896 is left alone, instead of becoming f([x]) automatically).
901 is left alone, instead of becoming f([x]) automatically).
897
902
898 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
903 * IPython/Magic.py (magic_cd): fix crash when cd -b was used.
899 Ville's patch.
904 Ville's patch.
900
905
901 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
906 2006-01-03 Fernando Perez <Fernando.Perez@colorado.edu>
902
907
903 * IPython/iplib.py (handle_auto): changed autocall semantics to
908 * IPython/iplib.py (handle_auto): changed autocall semantics to
904 include 'smart' mode, where the autocall transformation is NOT
909 include 'smart' mode, where the autocall transformation is NOT
905 applied if there are no arguments on the line. This allows you to
910 applied if there are no arguments on the line. This allows you to
906 just type 'foo' if foo is a callable to see its internal form,
911 just type 'foo' if foo is a callable to see its internal form,
907 instead of having it called with no arguments (typically a
912 instead of having it called with no arguments (typically a
908 mistake). The old 'full' autocall still exists: for that, you
913 mistake). The old 'full' autocall still exists: for that, you
909 need to set the 'autocall' parameter to 2 in your ipythonrc file.
914 need to set the 'autocall' parameter to 2 in your ipythonrc file.
910
915
911 * IPython/completer.py (Completer.attr_matches): add
916 * IPython/completer.py (Completer.attr_matches): add
912 tab-completion support for Enthoughts' traits. After a report by
917 tab-completion support for Enthoughts' traits. After a report by
913 Arnd and a patch by Prabhu.
918 Arnd and a patch by Prabhu.
914
919
915 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
920 2006-01-02 Fernando Perez <Fernando.Perez@colorado.edu>
916
921
917 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
922 * IPython/ultraTB.py (_fixed_getinnerframes): added Alex
918 Schmolck's patch to fix inspect.getinnerframes().
923 Schmolck's patch to fix inspect.getinnerframes().
919
924
920 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
925 * IPython/iplib.py (InteractiveShell.__init__): significant fixes
921 for embedded instances, regarding handling of namespaces and items
926 for embedded instances, regarding handling of namespaces and items
922 added to the __builtin__ one. Multiple embedded instances and
927 added to the __builtin__ one. Multiple embedded instances and
923 recursive embeddings should work better now (though I'm not sure
928 recursive embeddings should work better now (though I'm not sure
924 I've got all the corner cases fixed, that code is a bit of a brain
929 I've got all the corner cases fixed, that code is a bit of a brain
925 twister).
930 twister).
926
931
927 * IPython/Magic.py (magic_edit): added support to edit in-memory
932 * IPython/Magic.py (magic_edit): added support to edit in-memory
928 macros (automatically creates the necessary temp files). %edit
933 macros (automatically creates the necessary temp files). %edit
929 also doesn't return the file contents anymore, it's just noise.
934 also doesn't return the file contents anymore, it's just noise.
930
935
931 * IPython/completer.py (Completer.attr_matches): revert change to
936 * IPython/completer.py (Completer.attr_matches): revert change to
932 complete only on attributes listed in __all__. I realized it
937 complete only on attributes listed in __all__. I realized it
933 cripples the tab-completion system as a tool for exploring the
938 cripples the tab-completion system as a tool for exploring the
934 internals of unknown libraries (it renders any non-__all__
939 internals of unknown libraries (it renders any non-__all__
935 attribute off-limits). I got bit by this when trying to see
940 attribute off-limits). I got bit by this when trying to see
936 something inside the dis module.
941 something inside the dis module.
937
942
938 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
943 2005-12-31 Fernando Perez <Fernando.Perez@colorado.edu>
939
944
940 * IPython/iplib.py (InteractiveShell.__init__): add .meta
945 * IPython/iplib.py (InteractiveShell.__init__): add .meta
941 namespace for users and extension writers to hold data in. This
946 namespace for users and extension writers to hold data in. This
942 follows the discussion in
947 follows the discussion in
943 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
948 http://projects.scipy.org/ipython/ipython/wiki/RefactoringIPython.
944
949
945 * IPython/completer.py (IPCompleter.complete): small patch to help
950 * IPython/completer.py (IPCompleter.complete): small patch to help
946 tab-completion under Emacs, after a suggestion by John Barnard
951 tab-completion under Emacs, after a suggestion by John Barnard
947 <barnarj-AT-ccf.org>.
952 <barnarj-AT-ccf.org>.
948
953
949 * IPython/Magic.py (Magic.extract_input_slices): added support for
954 * IPython/Magic.py (Magic.extract_input_slices): added support for
950 the slice notation in magics to use N-M to represent numbers N...M
955 the slice notation in magics to use N-M to represent numbers N...M
951 (closed endpoints). This is used by %macro and %save.
956 (closed endpoints). This is used by %macro and %save.
952
957
953 * IPython/completer.py (Completer.attr_matches): for modules which
958 * IPython/completer.py (Completer.attr_matches): for modules which
954 define __all__, complete only on those. After a patch by Jeffrey
959 define __all__, complete only on those. After a patch by Jeffrey
955 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
960 Collins <jcollins_boulder-AT-earthlink.net>. Also, clean up and
956 speed up this routine.
961 speed up this routine.
957
962
958 * IPython/Logger.py (Logger.log): fix a history handling bug. I
963 * IPython/Logger.py (Logger.log): fix a history handling bug. I
959 don't know if this is the end of it, but the behavior now is
964 don't know if this is the end of it, but the behavior now is
960 certainly much more correct. Note that coupled with macros,
965 certainly much more correct. Note that coupled with macros,
961 slightly surprising (at first) behavior may occur: a macro will in
966 slightly surprising (at first) behavior may occur: a macro will in
962 general expand to multiple lines of input, so upon exiting, the
967 general expand to multiple lines of input, so upon exiting, the
963 in/out counters will both be bumped by the corresponding amount
968 in/out counters will both be bumped by the corresponding amount
964 (as if the macro's contents had been typed interactively). Typing
969 (as if the macro's contents had been typed interactively). Typing
965 %hist will reveal the intermediate (silently processed) lines.
970 %hist will reveal the intermediate (silently processed) lines.
966
971
967 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
972 * IPython/Magic.py (magic_run): fix a subtle bug which could cause
968 pickle to fail (%run was overwriting __main__ and not restoring
973 pickle to fail (%run was overwriting __main__ and not restoring
969 it, but pickle relies on __main__ to operate).
974 it, but pickle relies on __main__ to operate).
970
975
971 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
976 * IPython/iplib.py (InteractiveShell): fix pdb calling: I'm now
972 using properties, but forgot to make the main InteractiveShell
977 using properties, but forgot to make the main InteractiveShell
973 class a new-style class. Properties fail silently, and
978 class a new-style class. Properties fail silently, and
974 mysteriously, with old-style class (getters work, but
979 mysteriously, with old-style class (getters work, but
975 setters don't do anything).
980 setters don't do anything).
976
981
977 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
982 2005-12-30 Fernando Perez <Fernando.Perez@colorado.edu>
978
983
979 * IPython/Magic.py (magic_history): fix history reporting bug (I
984 * IPython/Magic.py (magic_history): fix history reporting bug (I
980 know some nasties are still there, I just can't seem to find a
985 know some nasties are still there, I just can't seem to find a
981 reproducible test case to track them down; the input history is
986 reproducible test case to track them down; the input history is
982 falling out of sync...)
987 falling out of sync...)
983
988
984 * IPython/iplib.py (handle_shell_escape): fix bug where both
989 * IPython/iplib.py (handle_shell_escape): fix bug where both
985 aliases and system accesses where broken for indented code (such
990 aliases and system accesses where broken for indented code (such
986 as loops).
991 as loops).
987
992
988 * IPython/genutils.py (shell): fix small but critical bug for
993 * IPython/genutils.py (shell): fix small but critical bug for
989 win32 system access.
994 win32 system access.
990
995
991 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
996 2005-12-29 Fernando Perez <Fernando.Perez@colorado.edu>
992
997
993 * IPython/iplib.py (showtraceback): remove use of the
998 * IPython/iplib.py (showtraceback): remove use of the
994 sys.last_{type/value/traceback} structures, which are non
999 sys.last_{type/value/traceback} structures, which are non
995 thread-safe.
1000 thread-safe.
996 (_prefilter): change control flow to ensure that we NEVER
1001 (_prefilter): change control flow to ensure that we NEVER
997 introspect objects when autocall is off. This will guarantee that
1002 introspect objects when autocall is off. This will guarantee that
998 having an input line of the form 'x.y', where access to attribute
1003 having an input line of the form 'x.y', where access to attribute
999 'y' has side effects, doesn't trigger the side effect TWICE. It
1004 'y' has side effects, doesn't trigger the side effect TWICE. It
1000 is important to note that, with autocall on, these side effects
1005 is important to note that, with autocall on, these side effects
1001 can still happen.
1006 can still happen.
1002 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1007 (ipsystem): new builtin, to complete the ip{magic/alias/system}
1003 trio. IPython offers these three kinds of special calls which are
1008 trio. IPython offers these three kinds of special calls which are
1004 not python code, and it's a good thing to have their call method
1009 not python code, and it's a good thing to have their call method
1005 be accessible as pure python functions (not just special syntax at
1010 be accessible as pure python functions (not just special syntax at
1006 the command line). It gives us a better internal implementation
1011 the command line). It gives us a better internal implementation
1007 structure, as well as exposing these for user scripting more
1012 structure, as well as exposing these for user scripting more
1008 cleanly.
1013 cleanly.
1009
1014
1010 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1015 * IPython/macro.py (Macro.__init__): moved macros to a standalone
1011 file. Now that they'll be more likely to be used with the
1016 file. Now that they'll be more likely to be used with the
1012 persistance system (%store), I want to make sure their module path
1017 persistance system (%store), I want to make sure their module path
1013 doesn't change in the future, so that we don't break things for
1018 doesn't change in the future, so that we don't break things for
1014 users' persisted data.
1019 users' persisted data.
1015
1020
1016 * IPython/iplib.py (autoindent_update): move indentation
1021 * IPython/iplib.py (autoindent_update): move indentation
1017 management into the _text_ processing loop, not the keyboard
1022 management into the _text_ processing loop, not the keyboard
1018 interactive one. This is necessary to correctly process non-typed
1023 interactive one. This is necessary to correctly process non-typed
1019 multiline input (such as macros).
1024 multiline input (such as macros).
1020
1025
1021 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1026 * IPython/Magic.py (Magic.format_latex): patch by Stefan van der
1022 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1027 Walt <stefan-AT-sun.ac.za> to fix latex formatting of docstrings,
1023 which was producing problems in the resulting manual.
1028 which was producing problems in the resulting manual.
1024 (magic_whos): improve reporting of instances (show their class,
1029 (magic_whos): improve reporting of instances (show their class,
1025 instead of simply printing 'instance' which isn't terribly
1030 instead of simply printing 'instance' which isn't terribly
1026 informative).
1031 informative).
1027
1032
1028 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1033 * IPython/genutils.py (shell): commit Jorgen Stenarson's patch
1029 (minor mods) to support network shares under win32.
1034 (minor mods) to support network shares under win32.
1030
1035
1031 * IPython/winconsole.py (get_console_size): add new winconsole
1036 * IPython/winconsole.py (get_console_size): add new winconsole
1032 module and fixes to page_dumb() to improve its behavior under
1037 module and fixes to page_dumb() to improve its behavior under
1033 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1038 win32. Contributed by Alexander Belchenko <bialix-AT-ukr.net>.
1034
1039
1035 * IPython/Magic.py (Macro): simplified Macro class to just
1040 * IPython/Magic.py (Macro): simplified Macro class to just
1036 subclass list. We've had only 2.2 compatibility for a very long
1041 subclass list. We've had only 2.2 compatibility for a very long
1037 time, yet I was still avoiding subclassing the builtin types. No
1042 time, yet I was still avoiding subclassing the builtin types. No
1038 more (I'm also starting to use properties, though I won't shift to
1043 more (I'm also starting to use properties, though I won't shift to
1039 2.3-specific features quite yet).
1044 2.3-specific features quite yet).
1040 (magic_store): added Ville's patch for lightweight variable
1045 (magic_store): added Ville's patch for lightweight variable
1041 persistence, after a request on the user list by Matt Wilkie
1046 persistence, after a request on the user list by Matt Wilkie
1042 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1047 <maphew-AT-gmail.com>. The new %store magic's docstring has full
1043 details.
1048 details.
1044
1049
1045 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1050 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1046 changed the default logfile name from 'ipython.log' to
1051 changed the default logfile name from 'ipython.log' to
1047 'ipython_log.py'. These logs are real python files, and now that
1052 'ipython_log.py'. These logs are real python files, and now that
1048 we have much better multiline support, people are more likely to
1053 we have much better multiline support, people are more likely to
1049 want to use them as such. Might as well name them correctly.
1054 want to use them as such. Might as well name them correctly.
1050
1055
1051 * IPython/Magic.py: substantial cleanup. While we can't stop
1056 * IPython/Magic.py: substantial cleanup. While we can't stop
1052 using magics as mixins, due to the existing customizations 'out
1057 using magics as mixins, due to the existing customizations 'out
1053 there' which rely on the mixin naming conventions, at least I
1058 there' which rely on the mixin naming conventions, at least I
1054 cleaned out all cross-class name usage. So once we are OK with
1059 cleaned out all cross-class name usage. So once we are OK with
1055 breaking compatibility, the two systems can be separated.
1060 breaking compatibility, the two systems can be separated.
1056
1061
1057 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1062 * IPython/Logger.py: major cleanup. This one is NOT a mixin
1058 anymore, and the class is a fair bit less hideous as well. New
1063 anymore, and the class is a fair bit less hideous as well. New
1059 features were also introduced: timestamping of input, and logging
1064 features were also introduced: timestamping of input, and logging
1060 of output results. These are user-visible with the -t and -o
1065 of output results. These are user-visible with the -t and -o
1061 options to %logstart. Closes
1066 options to %logstart. Closes
1062 http://www.scipy.net/roundup/ipython/issue11 and a request by
1067 http://www.scipy.net/roundup/ipython/issue11 and a request by
1063 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1068 William Stein (SAGE developer - http://modular.ucsd.edu/sage).
1064
1069
1065 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1070 2005-12-28 Fernando Perez <Fernando.Perez@colorado.edu>
1066
1071
1067 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1072 * IPython/iplib.py (handle_shell_escape): add Ville's patch to
1068 better handle backslashes in paths. See the thread 'More Windows
1073 better handle backslashes in paths. See the thread 'More Windows
1069 questions part 2 - \/ characters revisited' on the iypthon user
1074 questions part 2 - \/ characters revisited' on the iypthon user
1070 list:
1075 list:
1071 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1076 http://scipy.net/pipermail/ipython-user/2005-June/000907.html
1072
1077
1073 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1078 (InteractiveShell.__init__): fix tab-completion bug in threaded shells.
1074
1079
1075 (InteractiveShell.__init__): change threaded shells to not use the
1080 (InteractiveShell.__init__): change threaded shells to not use the
1076 ipython crash handler. This was causing more problems than not,
1081 ipython crash handler. This was causing more problems than not,
1077 as exceptions in the main thread (GUI code, typically) would
1082 as exceptions in the main thread (GUI code, typically) would
1078 always show up as a 'crash', when they really weren't.
1083 always show up as a 'crash', when they really weren't.
1079
1084
1080 The colors and exception mode commands (%colors/%xmode) have been
1085 The colors and exception mode commands (%colors/%xmode) have been
1081 synchronized to also take this into account, so users can get
1086 synchronized to also take this into account, so users can get
1082 verbose exceptions for their threaded code as well. I also added
1087 verbose exceptions for their threaded code as well. I also added
1083 support for activating pdb inside this exception handler as well,
1088 support for activating pdb inside this exception handler as well,
1084 so now GUI authors can use IPython's enhanced pdb at runtime.
1089 so now GUI authors can use IPython's enhanced pdb at runtime.
1085
1090
1086 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1091 * IPython/ipmaker.py (make_IPython): make the autoedit_syntax flag
1087 true by default, and add it to the shipped ipythonrc file. Since
1092 true by default, and add it to the shipped ipythonrc file. Since
1088 this asks the user before proceeding, I think it's OK to make it
1093 this asks the user before proceeding, I think it's OK to make it
1089 true by default.
1094 true by default.
1090
1095
1091 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1096 * IPython/Magic.py (magic_exit): make new exit/quit magics instead
1092 of the previous special-casing of input in the eval loop. I think
1097 of the previous special-casing of input in the eval loop. I think
1093 this is cleaner, as they really are commands and shouldn't have
1098 this is cleaner, as they really are commands and shouldn't have
1094 a special role in the middle of the core code.
1099 a special role in the middle of the core code.
1095
1100
1096 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1101 2005-12-27 Fernando Perez <Fernando.Perez@colorado.edu>
1097
1102
1098 * IPython/iplib.py (edit_syntax_error): added support for
1103 * IPython/iplib.py (edit_syntax_error): added support for
1099 automatically reopening the editor if the file had a syntax error
1104 automatically reopening the editor if the file had a syntax error
1100 in it. Thanks to scottt who provided the patch at:
1105 in it. Thanks to scottt who provided the patch at:
1101 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1106 http://www.scipy.net/roundup/ipython/issue36 (slightly modified
1102 version committed).
1107 version committed).
1103
1108
1104 * IPython/iplib.py (handle_normal): add suport for multi-line
1109 * IPython/iplib.py (handle_normal): add suport for multi-line
1105 input with emtpy lines. This fixes
1110 input with emtpy lines. This fixes
1106 http://www.scipy.net/roundup/ipython/issue43 and a similar
1111 http://www.scipy.net/roundup/ipython/issue43 and a similar
1107 discussion on the user list.
1112 discussion on the user list.
1108
1113
1109 WARNING: a behavior change is necessarily introduced to support
1114 WARNING: a behavior change is necessarily introduced to support
1110 blank lines: now a single blank line with whitespace does NOT
1115 blank lines: now a single blank line with whitespace does NOT
1111 break the input loop, which means that when autoindent is on, by
1116 break the input loop, which means that when autoindent is on, by
1112 default hitting return on the next (indented) line does NOT exit.
1117 default hitting return on the next (indented) line does NOT exit.
1113
1118
1114 Instead, to exit a multiline input you can either have:
1119 Instead, to exit a multiline input you can either have:
1115
1120
1116 - TWO whitespace lines (just hit return again), or
1121 - TWO whitespace lines (just hit return again), or
1117 - a single whitespace line of a different length than provided
1122 - a single whitespace line of a different length than provided
1118 by the autoindent (add or remove a space).
1123 by the autoindent (add or remove a space).
1119
1124
1120 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1125 * IPython/completer.py (MagicCompleter.__init__): new 'completer'
1121 module to better organize all readline-related functionality.
1126 module to better organize all readline-related functionality.
1122 I've deleted FlexCompleter and put all completion clases here.
1127 I've deleted FlexCompleter and put all completion clases here.
1123
1128
1124 * IPython/iplib.py (raw_input): improve indentation management.
1129 * IPython/iplib.py (raw_input): improve indentation management.
1125 It is now possible to paste indented code with autoindent on, and
1130 It is now possible to paste indented code with autoindent on, and
1126 the code is interpreted correctly (though it still looks bad on
1131 the code is interpreted correctly (though it still looks bad on
1127 screen, due to the line-oriented nature of ipython).
1132 screen, due to the line-oriented nature of ipython).
1128 (MagicCompleter.complete): change behavior so that a TAB key on an
1133 (MagicCompleter.complete): change behavior so that a TAB key on an
1129 otherwise empty line actually inserts a tab, instead of completing
1134 otherwise empty line actually inserts a tab, instead of completing
1130 on the entire global namespace. This makes it easier to use the
1135 on the entire global namespace. This makes it easier to use the
1131 TAB key for indentation. After a request by Hans Meine
1136 TAB key for indentation. After a request by Hans Meine
1132 <hans_meine-AT-gmx.net>
1137 <hans_meine-AT-gmx.net>
1133 (_prefilter): add support so that typing plain 'exit' or 'quit'
1138 (_prefilter): add support so that typing plain 'exit' or 'quit'
1134 does a sensible thing. Originally I tried to deviate as little as
1139 does a sensible thing. Originally I tried to deviate as little as
1135 possible from the default python behavior, but even that one may
1140 possible from the default python behavior, but even that one may
1136 change in this direction (thread on python-dev to that effect).
1141 change in this direction (thread on python-dev to that effect).
1137 Regardless, ipython should do the right thing even if CPython's
1142 Regardless, ipython should do the right thing even if CPython's
1138 '>>>' prompt doesn't.
1143 '>>>' prompt doesn't.
1139 (InteractiveShell): removed subclassing code.InteractiveConsole
1144 (InteractiveShell): removed subclassing code.InteractiveConsole
1140 class. By now we'd overridden just about all of its methods: I've
1145 class. By now we'd overridden just about all of its methods: I've
1141 copied the remaining two over, and now ipython is a standalone
1146 copied the remaining two over, and now ipython is a standalone
1142 class. This will provide a clearer picture for the chainsaw
1147 class. This will provide a clearer picture for the chainsaw
1143 branch refactoring.
1148 branch refactoring.
1144
1149
1145 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1150 2005-12-26 Fernando Perez <Fernando.Perez@colorado.edu>
1146
1151
1147 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1152 * IPython/ultraTB.py (VerboseTB.text): harden reporting against
1148 failures for objects which break when dir() is called on them.
1153 failures for objects which break when dir() is called on them.
1149
1154
1150 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1155 * IPython/FlexCompleter.py (Completer.__init__): Added support for
1151 distinct local and global namespaces in the completer API. This
1156 distinct local and global namespaces in the completer API. This
1152 change allows us to properly handle completion with distinct
1157 change allows us to properly handle completion with distinct
1153 scopes, including in embedded instances (this had never really
1158 scopes, including in embedded instances (this had never really
1154 worked correctly).
1159 worked correctly).
1155
1160
1156 Note: this introduces a change in the constructor for
1161 Note: this introduces a change in the constructor for
1157 MagicCompleter, as a new global_namespace parameter is now the
1162 MagicCompleter, as a new global_namespace parameter is now the
1158 second argument (the others were bumped one position).
1163 second argument (the others were bumped one position).
1159
1164
1160 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1165 2005-12-25 Fernando Perez <Fernando.Perez@colorado.edu>
1161
1166
1162 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1167 * IPython/iplib.py (embed_mainloop): fix tab-completion in
1163 embedded instances (which can be done now thanks to Vivian's
1168 embedded instances (which can be done now thanks to Vivian's
1164 frame-handling fixes for pdb).
1169 frame-handling fixes for pdb).
1165 (InteractiveShell.__init__): Fix namespace handling problem in
1170 (InteractiveShell.__init__): Fix namespace handling problem in
1166 embedded instances. We were overwriting __main__ unconditionally,
1171 embedded instances. We were overwriting __main__ unconditionally,
1167 and this should only be done for 'full' (non-embedded) IPython;
1172 and this should only be done for 'full' (non-embedded) IPython;
1168 embedded instances must respect the caller's __main__. Thanks to
1173 embedded instances must respect the caller's __main__. Thanks to
1169 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1174 a bug report by Yaroslav Bulatov <yaroslavvb-AT-gmail.com>
1170
1175
1171 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1176 2005-12-24 Fernando Perez <Fernando.Perez@colorado.edu>
1172
1177
1173 * setup.py: added download_url to setup(). This registers the
1178 * setup.py: added download_url to setup(). This registers the
1174 download address at PyPI, which is not only useful to humans
1179 download address at PyPI, which is not only useful to humans
1175 browsing the site, but is also picked up by setuptools (the Eggs
1180 browsing the site, but is also picked up by setuptools (the Eggs
1176 machinery). Thanks to Ville and R. Kern for the info/discussion
1181 machinery). Thanks to Ville and R. Kern for the info/discussion
1177 on this.
1182 on this.
1178
1183
1179 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1184 2005-12-23 Fernando Perez <Fernando.Perez@colorado.edu>
1180
1185
1181 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1186 * IPython/Debugger.py (Pdb.__init__): Major pdb mode enhancements.
1182 This brings a lot of nice functionality to the pdb mode, which now
1187 This brings a lot of nice functionality to the pdb mode, which now
1183 has tab-completion, syntax highlighting, and better stack handling
1188 has tab-completion, syntax highlighting, and better stack handling
1184 than before. Many thanks to Vivian De Smedt
1189 than before. Many thanks to Vivian De Smedt
1185 <vivian-AT-vdesmedt.com> for the original patches.
1190 <vivian-AT-vdesmedt.com> for the original patches.
1186
1191
1187 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1192 2005-12-08 Fernando Perez <Fernando.Perez@colorado.edu>
1188
1193
1189 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1194 * IPython/Shell.py (IPShellGTK.mainloop): fix mainloop() calling
1190 sequence to consistently accept the banner argument. The
1195 sequence to consistently accept the banner argument. The
1191 inconsistency was tripping SAGE, thanks to Gary Zablackis
1196 inconsistency was tripping SAGE, thanks to Gary Zablackis
1192 <gzabl-AT-yahoo.com> for the report.
1197 <gzabl-AT-yahoo.com> for the report.
1193
1198
1194 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1199 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1195
1200
1196 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1201 * IPython/iplib.py (InteractiveShell.post_config_initialization):
1197 Fix bug where a naked 'alias' call in the ipythonrc file would
1202 Fix bug where a naked 'alias' call in the ipythonrc file would
1198 cause a crash. Bug reported by Jorgen Stenarson.
1203 cause a crash. Bug reported by Jorgen Stenarson.
1199
1204
1200 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1205 2005-11-15 Fernando Perez <Fernando.Perez@colorado.edu>
1201
1206
1202 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1207 * IPython/ipmaker.py (make_IPython): cleanups which should improve
1203 startup time.
1208 startup time.
1204
1209
1205 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1210 * IPython/iplib.py (runcode): my globals 'fix' for embedded
1206 instances had introduced a bug with globals in normal code. Now
1211 instances had introduced a bug with globals in normal code. Now
1207 it's working in all cases.
1212 it's working in all cases.
1208
1213
1209 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1214 * IPython/Magic.py (magic_psearch): Finish wildcard cleanup and
1210 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1215 API changes. A new ipytonrc option, 'wildcards_case_sensitive'
1211 has been introduced to set the default case sensitivity of the
1216 has been introduced to set the default case sensitivity of the
1212 searches. Users can still select either mode at runtime on a
1217 searches. Users can still select either mode at runtime on a
1213 per-search basis.
1218 per-search basis.
1214
1219
1215 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1220 2005-11-13 Fernando Perez <Fernando.Perez@colorado.edu>
1216
1221
1217 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1222 * IPython/wildcard.py (NameSpace.__init__): fix resolution of
1218 attributes in wildcard searches for subclasses. Modified version
1223 attributes in wildcard searches for subclasses. Modified version
1219 of a patch by Jorgen.
1224 of a patch by Jorgen.
1220
1225
1221 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1226 2005-11-12 Fernando Perez <Fernando.Perez@colorado.edu>
1222
1227
1223 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1228 * IPython/iplib.py (embed_mainloop): Fix handling of globals for
1224 embedded instances. I added a user_global_ns attribute to the
1229 embedded instances. I added a user_global_ns attribute to the
1225 InteractiveShell class to handle this.
1230 InteractiveShell class to handle this.
1226
1231
1227 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1232 2005-10-31 Fernando Perez <Fernando.Perez@colorado.edu>
1228
1233
1229 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1234 * IPython/Shell.py (IPShellGTK.mainloop): Change timeout_add to
1230 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1235 idle_add, which fixes horrible keyboard lag problems under gtk 2.6
1231 (reported under win32, but may happen also in other platforms).
1236 (reported under win32, but may happen also in other platforms).
1232 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1237 Bug report and fix courtesy of Sean Moore <smm-AT-logic.bm>
1233
1238
1234 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1239 2005-10-15 Fernando Perez <Fernando.Perez@colorado.edu>
1235
1240
1236 * IPython/Magic.py (magic_psearch): new support for wildcard
1241 * IPython/Magic.py (magic_psearch): new support for wildcard
1237 patterns. Now, typing ?a*b will list all names which begin with a
1242 patterns. Now, typing ?a*b will list all names which begin with a
1238 and end in b, for example. The %psearch magic has full
1243 and end in b, for example. The %psearch magic has full
1239 docstrings. Many thanks to JΓΆrgen Stenarson
1244 docstrings. Many thanks to JΓΆrgen Stenarson
1240 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1245 <jorgen.stenarson-AT-bostream.nu>, author of the patches
1241 implementing this functionality.
1246 implementing this functionality.
1242
1247
1243 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1248 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1244
1249
1245 * Manual: fixed long-standing annoyance of double-dashes (as in
1250 * Manual: fixed long-standing annoyance of double-dashes (as in
1246 --prefix=~, for example) being stripped in the HTML version. This
1251 --prefix=~, for example) being stripped in the HTML version. This
1247 is a latex2html bug, but a workaround was provided. Many thanks
1252 is a latex2html bug, but a workaround was provided. Many thanks
1248 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1253 to George K. Thiruvathukal <gthiruv-AT-luc.edu> for the detailed
1249 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1254 help, and Michael Tobis <mtobis-AT-gmail.com> for getting the ball
1250 rolling. This seemingly small issue had tripped a number of users
1255 rolling. This seemingly small issue had tripped a number of users
1251 when first installing, so I'm glad to see it gone.
1256 when first installing, so I'm glad to see it gone.
1252
1257
1253 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1258 2005-09-27 Fernando Perez <Fernando.Perez@colorado.edu>
1254
1259
1255 * IPython/Extensions/numeric_formats.py: fix missing import,
1260 * IPython/Extensions/numeric_formats.py: fix missing import,
1256 reported by Stephen Walton.
1261 reported by Stephen Walton.
1257
1262
1258 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1263 2005-09-24 Fernando Perez <Fernando.Perez@colorado.edu>
1259
1264
1260 * IPython/demo.py: finish demo module, fully documented now.
1265 * IPython/demo.py: finish demo module, fully documented now.
1261
1266
1262 * IPython/genutils.py (file_read): simple little utility to read a
1267 * IPython/genutils.py (file_read): simple little utility to read a
1263 file and ensure it's closed afterwards.
1268 file and ensure it's closed afterwards.
1264
1269
1265 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1270 2005-09-23 Fernando Perez <Fernando.Perez@colorado.edu>
1266
1271
1267 * IPython/demo.py (Demo.__init__): added support for individually
1272 * IPython/demo.py (Demo.__init__): added support for individually
1268 tagging blocks for automatic execution.
1273 tagging blocks for automatic execution.
1269
1274
1270 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1275 * IPython/Magic.py (magic_pycat): new %pycat magic for showing
1271 syntax-highlighted python sources, requested by John.
1276 syntax-highlighted python sources, requested by John.
1272
1277
1273 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1278 2005-09-22 Fernando Perez <Fernando.Perez@colorado.edu>
1274
1279
1275 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1280 * IPython/demo.py (Demo.again): fix bug where again() blocks after
1276 finishing.
1281 finishing.
1277
1282
1278 * IPython/genutils.py (shlex_split): moved from Magic to here,
1283 * IPython/genutils.py (shlex_split): moved from Magic to here,
1279 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1284 where all 2.2 compatibility stuff lives. I needed it for demo.py.
1280
1285
1281 * IPython/demo.py (Demo.__init__): added support for silent
1286 * IPython/demo.py (Demo.__init__): added support for silent
1282 blocks, improved marks as regexps, docstrings written.
1287 blocks, improved marks as regexps, docstrings written.
1283 (Demo.__init__): better docstring, added support for sys.argv.
1288 (Demo.__init__): better docstring, added support for sys.argv.
1284
1289
1285 * IPython/genutils.py (marquee): little utility used by the demo
1290 * IPython/genutils.py (marquee): little utility used by the demo
1286 code, handy in general.
1291 code, handy in general.
1287
1292
1288 * IPython/demo.py (Demo.__init__): new class for interactive
1293 * IPython/demo.py (Demo.__init__): new class for interactive
1289 demos. Not documented yet, I just wrote it in a hurry for
1294 demos. Not documented yet, I just wrote it in a hurry for
1290 scipy'05. Will docstring later.
1295 scipy'05. Will docstring later.
1291
1296
1292 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1297 2005-09-20 Fernando Perez <Fernando.Perez@colorado.edu>
1293
1298
1294 * IPython/Shell.py (sigint_handler): Drastic simplification which
1299 * IPython/Shell.py (sigint_handler): Drastic simplification which
1295 also seems to make Ctrl-C work correctly across threads! This is
1300 also seems to make Ctrl-C work correctly across threads! This is
1296 so simple, that I can't beleive I'd missed it before. Needs more
1301 so simple, that I can't beleive I'd missed it before. Needs more
1297 testing, though.
1302 testing, though.
1298 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1303 (KBINT): Never mind, revert changes. I'm sure I'd tried something
1299 like this before...
1304 like this before...
1300
1305
1301 * IPython/genutils.py (get_home_dir): add protection against
1306 * IPython/genutils.py (get_home_dir): add protection against
1302 non-dirs in win32 registry.
1307 non-dirs in win32 registry.
1303
1308
1304 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1309 * IPython/iplib.py (InteractiveShell.alias_table_validate): fix
1305 bug where dict was mutated while iterating (pysh crash).
1310 bug where dict was mutated while iterating (pysh crash).
1306
1311
1307 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1312 2005-09-06 Fernando Perez <Fernando.Perez@colorado.edu>
1308
1313
1309 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1314 * IPython/iplib.py (handle_auto): Fix inconsistency arising from
1310 spurious newlines added by this routine. After a report by
1315 spurious newlines added by this routine. After a report by
1311 F. Mantegazza.
1316 F. Mantegazza.
1312
1317
1313 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1318 2005-09-05 Fernando Perez <Fernando.Perez@colorado.edu>
1314
1319
1315 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1320 * IPython/Shell.py (hijack_gtk): remove pygtk.require("2.0")
1316 calls. These were a leftover from the GTK 1.x days, and can cause
1321 calls. These were a leftover from the GTK 1.x days, and can cause
1317 problems in certain cases (after a report by John Hunter).
1322 problems in certain cases (after a report by John Hunter).
1318
1323
1319 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1324 * IPython/iplib.py (InteractiveShell.__init__): Trap exception if
1320 os.getcwd() fails at init time. Thanks to patch from David Remahl
1325 os.getcwd() fails at init time. Thanks to patch from David Remahl
1321 <chmod007-AT-mac.com>.
1326 <chmod007-AT-mac.com>.
1322 (InteractiveShell.__init__): prevent certain special magics from
1327 (InteractiveShell.__init__): prevent certain special magics from
1323 being shadowed by aliases. Closes
1328 being shadowed by aliases. Closes
1324 http://www.scipy.net/roundup/ipython/issue41.
1329 http://www.scipy.net/roundup/ipython/issue41.
1325
1330
1326 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1331 2005-08-31 Fernando Perez <Fernando.Perez@colorado.edu>
1327
1332
1328 * IPython/iplib.py (InteractiveShell.complete): Added new
1333 * IPython/iplib.py (InteractiveShell.complete): Added new
1329 top-level completion method to expose the completion mechanism
1334 top-level completion method to expose the completion mechanism
1330 beyond readline-based environments.
1335 beyond readline-based environments.
1331
1336
1332 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1337 2005-08-19 Fernando Perez <Fernando.Perez@colorado.edu>
1333
1338
1334 * tools/ipsvnc (svnversion): fix svnversion capture.
1339 * tools/ipsvnc (svnversion): fix svnversion capture.
1335
1340
1336 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1341 * IPython/iplib.py (InteractiveShell.__init__): Add has_readline
1337 attribute to self, which was missing. Before, it was set by a
1342 attribute to self, which was missing. Before, it was set by a
1338 routine which in certain cases wasn't being called, so the
1343 routine which in certain cases wasn't being called, so the
1339 instance could end up missing the attribute. This caused a crash.
1344 instance could end up missing the attribute. This caused a crash.
1340 Closes http://www.scipy.net/roundup/ipython/issue40.
1345 Closes http://www.scipy.net/roundup/ipython/issue40.
1341
1346
1342 2005-08-16 Fernando Perez <fperez@colorado.edu>
1347 2005-08-16 Fernando Perez <fperez@colorado.edu>
1343
1348
1344 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1349 * IPython/ultraTB.py (VerboseTB.text): don't crash if object
1345 contains non-string attribute. Closes
1350 contains non-string attribute. Closes
1346 http://www.scipy.net/roundup/ipython/issue38.
1351 http://www.scipy.net/roundup/ipython/issue38.
1347
1352
1348 2005-08-14 Fernando Perez <fperez@colorado.edu>
1353 2005-08-14 Fernando Perez <fperez@colorado.edu>
1349
1354
1350 * tools/ipsvnc: Minor improvements, to add changeset info.
1355 * tools/ipsvnc: Minor improvements, to add changeset info.
1351
1356
1352 2005-08-12 Fernando Perez <fperez@colorado.edu>
1357 2005-08-12 Fernando Perez <fperez@colorado.edu>
1353
1358
1354 * IPython/iplib.py (runsource): remove self.code_to_run_src
1359 * IPython/iplib.py (runsource): remove self.code_to_run_src
1355 attribute. I realized this is nothing more than
1360 attribute. I realized this is nothing more than
1356 '\n'.join(self.buffer), and having the same data in two different
1361 '\n'.join(self.buffer), and having the same data in two different
1357 places is just asking for synchronization bugs. This may impact
1362 places is just asking for synchronization bugs. This may impact
1358 people who have custom exception handlers, so I need to warn
1363 people who have custom exception handlers, so I need to warn
1359 ipython-dev about it (F. Mantegazza may use them).
1364 ipython-dev about it (F. Mantegazza may use them).
1360
1365
1361 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1366 2005-07-29 Fernando Perez <Fernando.Perez@colorado.edu>
1362
1367
1363 * IPython/genutils.py: fix 2.2 compatibility (generators)
1368 * IPython/genutils.py: fix 2.2 compatibility (generators)
1364
1369
1365 2005-07-18 Fernando Perez <fperez@colorado.edu>
1370 2005-07-18 Fernando Perez <fperez@colorado.edu>
1366
1371
1367 * IPython/genutils.py (get_home_dir): fix to help users with
1372 * IPython/genutils.py (get_home_dir): fix to help users with
1368 invalid $HOME under win32.
1373 invalid $HOME under win32.
1369
1374
1370 2005-07-17 Fernando Perez <fperez@colorado.edu>
1375 2005-07-17 Fernando Perez <fperez@colorado.edu>
1371
1376
1372 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1377 * IPython/Prompts.py (str_safe): Make unicode-safe. Also remove
1373 some old hacks and clean up a bit other routines; code should be
1378 some old hacks and clean up a bit other routines; code should be
1374 simpler and a bit faster.
1379 simpler and a bit faster.
1375
1380
1376 * IPython/iplib.py (interact): removed some last-resort attempts
1381 * IPython/iplib.py (interact): removed some last-resort attempts
1377 to survive broken stdout/stderr. That code was only making it
1382 to survive broken stdout/stderr. That code was only making it
1378 harder to abstract out the i/o (necessary for gui integration),
1383 harder to abstract out the i/o (necessary for gui integration),
1379 and the crashes it could prevent were extremely rare in practice
1384 and the crashes it could prevent were extremely rare in practice
1380 (besides being fully user-induced in a pretty violent manner).
1385 (besides being fully user-induced in a pretty violent manner).
1381
1386
1382 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1387 * IPython/genutils.py (IOStream.__init__): Simplify the i/o stuff.
1383 Nothing major yet, but the code is simpler to read; this should
1388 Nothing major yet, but the code is simpler to read; this should
1384 make it easier to do more serious modifications in the future.
1389 make it easier to do more serious modifications in the future.
1385
1390
1386 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1391 * IPython/Extensions/InterpreterExec.py: Fix auto-quoting in pysh,
1387 which broke in .15 (thanks to a report by Ville).
1392 which broke in .15 (thanks to a report by Ville).
1388
1393
1389 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1394 * IPython/Itpl.py (Itpl.__init__): add unicode support (it may not
1390 be quite correct, I know next to nothing about unicode). This
1395 be quite correct, I know next to nothing about unicode). This
1391 will allow unicode strings to be used in prompts, amongst other
1396 will allow unicode strings to be used in prompts, amongst other
1392 cases. It also will prevent ipython from crashing when unicode
1397 cases. It also will prevent ipython from crashing when unicode
1393 shows up unexpectedly in many places. If ascii encoding fails, we
1398 shows up unexpectedly in many places. If ascii encoding fails, we
1394 assume utf_8. Currently the encoding is not a user-visible
1399 assume utf_8. Currently the encoding is not a user-visible
1395 setting, though it could be made so if there is demand for it.
1400 setting, though it could be made so if there is demand for it.
1396
1401
1397 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1402 * IPython/ipmaker.py (make_IPython): remove old 2.1-specific hack.
1398
1403
1399 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1404 * IPython/Struct.py (Struct.merge): switch keys() to iterator.
1400
1405
1401 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1406 * IPython/background_jobs.py: moved 2.2 compatibility to genutils.
1402
1407
1403 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1408 * IPython/genutils.py: Add 2.2 compatibility here, so all other
1404 code can work transparently for 2.2/2.3.
1409 code can work transparently for 2.2/2.3.
1405
1410
1406 2005-07-16 Fernando Perez <fperez@colorado.edu>
1411 2005-07-16 Fernando Perez <fperez@colorado.edu>
1407
1412
1408 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1413 * IPython/ultraTB.py (ExceptionColors): Make a global variable
1409 out of the color scheme table used for coloring exception
1414 out of the color scheme table used for coloring exception
1410 tracebacks. This allows user code to add new schemes at runtime.
1415 tracebacks. This allows user code to add new schemes at runtime.
1411 This is a minimally modified version of the patch at
1416 This is a minimally modified version of the patch at
1412 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1417 http://www.scipy.net/roundup/ipython/issue35, many thanks to pabw
1413 for the contribution.
1418 for the contribution.
1414
1419
1415 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1420 * IPython/FlexCompleter.py (Completer.attr_matches): Add a
1416 slightly modified version of the patch in
1421 slightly modified version of the patch in
1417 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1422 http://www.scipy.net/roundup/ipython/issue34, which also allows me
1418 to remove the previous try/except solution (which was costlier).
1423 to remove the previous try/except solution (which was costlier).
1419 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1424 Thanks to Gaetan Lehmann <gaetan.lehmann-AT-jouy.inra.fr> for the fix.
1420
1425
1421 2005-06-08 Fernando Perez <fperez@colorado.edu>
1426 2005-06-08 Fernando Perez <fperez@colorado.edu>
1422
1427
1423 * IPython/iplib.py (write/write_err): Add methods to abstract all
1428 * IPython/iplib.py (write/write_err): Add methods to abstract all
1424 I/O a bit more.
1429 I/O a bit more.
1425
1430
1426 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1431 * IPython/Shell.py (IPShellGTK.mainloop): Fix GTK deprecation
1427 warning, reported by Aric Hagberg, fix by JD Hunter.
1432 warning, reported by Aric Hagberg, fix by JD Hunter.
1428
1433
1429 2005-06-02 *** Released version 0.6.15
1434 2005-06-02 *** Released version 0.6.15
1430
1435
1431 2005-06-01 Fernando Perez <fperez@colorado.edu>
1436 2005-06-01 Fernando Perez <fperez@colorado.edu>
1432
1437
1433 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1438 * IPython/iplib.py (MagicCompleter.file_matches): Fix
1434 tab-completion of filenames within open-quoted strings. Note that
1439 tab-completion of filenames within open-quoted strings. Note that
1435 this requires that in ~/.ipython/ipythonrc, users change the
1440 this requires that in ~/.ipython/ipythonrc, users change the
1436 readline delimiters configuration to read:
1441 readline delimiters configuration to read:
1437
1442
1438 readline_remove_delims -/~
1443 readline_remove_delims -/~
1439
1444
1440
1445
1441 2005-05-31 *** Released version 0.6.14
1446 2005-05-31 *** Released version 0.6.14
1442
1447
1443 2005-05-29 Fernando Perez <fperez@colorado.edu>
1448 2005-05-29 Fernando Perez <fperez@colorado.edu>
1444
1449
1445 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1450 * IPython/ultraTB.py (VerboseTB.text): Fix crash for tracebacks
1446 with files not on the filesystem. Reported by Eliyahu Sandler
1451 with files not on the filesystem. Reported by Eliyahu Sandler
1447 <eli@gondolin.net>
1452 <eli@gondolin.net>
1448
1453
1449 2005-05-22 Fernando Perez <fperez@colorado.edu>
1454 2005-05-22 Fernando Perez <fperez@colorado.edu>
1450
1455
1451 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1456 * IPython/iplib.py: Fix a few crashes in the --upgrade option.
1452 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1457 After an initial report by LUK ShunTim <shuntim.luk@polyu.edu.hk>.
1453
1458
1454 2005-05-19 Fernando Perez <fperez@colorado.edu>
1459 2005-05-19 Fernando Perez <fperez@colorado.edu>
1455
1460
1456 * IPython/iplib.py (safe_execfile): close a file which could be
1461 * IPython/iplib.py (safe_execfile): close a file which could be
1457 left open (causing problems in win32, which locks open files).
1462 left open (causing problems in win32, which locks open files).
1458 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1463 Thanks to a bug report by D Brown <dbrown2@yahoo.com>.
1459
1464
1460 2005-05-18 Fernando Perez <fperez@colorado.edu>
1465 2005-05-18 Fernando Perez <fperez@colorado.edu>
1461
1466
1462 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1467 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): pass all
1463 keyword arguments correctly to safe_execfile().
1468 keyword arguments correctly to safe_execfile().
1464
1469
1465 2005-05-13 Fernando Perez <fperez@colorado.edu>
1470 2005-05-13 Fernando Perez <fperez@colorado.edu>
1466
1471
1467 * ipython.1: Added info about Qt to manpage, and threads warning
1472 * ipython.1: Added info about Qt to manpage, and threads warning
1468 to usage page (invoked with --help).
1473 to usage page (invoked with --help).
1469
1474
1470 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1475 * IPython/iplib.py (MagicCompleter.python_func_kw_matches): Added
1471 new matcher (it goes at the end of the priority list) to do
1476 new matcher (it goes at the end of the priority list) to do
1472 tab-completion on named function arguments. Submitted by George
1477 tab-completion on named function arguments. Submitted by George
1473 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1478 Sakkis <gsakkis-AT-eden.rutgers.edu>. See the thread at
1474 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1479 http://www.scipy.net/pipermail/ipython-dev/2005-April/000436.html
1475 for more details.
1480 for more details.
1476
1481
1477 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1482 * IPython/Magic.py (magic_run): Added new -e flag to ignore
1478 SystemExit exceptions in the script being run. Thanks to a report
1483 SystemExit exceptions in the script being run. Thanks to a report
1479 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1484 by danny shevitz <danny_shevitz-AT-yahoo.com>, about this
1480 producing very annoying behavior when running unit tests.
1485 producing very annoying behavior when running unit tests.
1481
1486
1482 2005-05-12 Fernando Perez <fperez@colorado.edu>
1487 2005-05-12 Fernando Perez <fperez@colorado.edu>
1483
1488
1484 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1489 * IPython/iplib.py (handle_auto): fixed auto-quoting and parens,
1485 which I'd broken (again) due to a changed regexp. In the process,
1490 which I'd broken (again) due to a changed regexp. In the process,
1486 added ';' as an escape to auto-quote the whole line without
1491 added ';' as an escape to auto-quote the whole line without
1487 splitting its arguments. Thanks to a report by Jerry McRae
1492 splitting its arguments. Thanks to a report by Jerry McRae
1488 <qrs0xyc02-AT-sneakemail.com>.
1493 <qrs0xyc02-AT-sneakemail.com>.
1489
1494
1490 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1495 * IPython/ultraTB.py (VerboseTB.text): protect against rare but
1491 possible crashes caused by a TokenError. Reported by Ed Schofield
1496 possible crashes caused by a TokenError. Reported by Ed Schofield
1492 <schofield-AT-ftw.at>.
1497 <schofield-AT-ftw.at>.
1493
1498
1494 2005-05-06 Fernando Perez <fperez@colorado.edu>
1499 2005-05-06 Fernando Perez <fperez@colorado.edu>
1495
1500
1496 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1501 * IPython/Shell.py (hijack_wx): Fix to work with WX v.2.6.
1497
1502
1498 2005-04-29 Fernando Perez <fperez@colorado.edu>
1503 2005-04-29 Fernando Perez <fperez@colorado.edu>
1499
1504
1500 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1505 * IPython/Shell.py (IPShellQt): Thanks to Denis Rivière
1501 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1506 <nudz-AT-free.fr>, Yann Cointepas <yann-AT-sapetnioc.org> and Benjamin
1502 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1507 Thyreau <Benji2-AT-decideur.info>, we now have a -qthread option
1503 which provides support for Qt interactive usage (similar to the
1508 which provides support for Qt interactive usage (similar to the
1504 existing one for WX and GTK). This had been often requested.
1509 existing one for WX and GTK). This had been often requested.
1505
1510
1506 2005-04-14 *** Released version 0.6.13
1511 2005-04-14 *** Released version 0.6.13
1507
1512
1508 2005-04-08 Fernando Perez <fperez@colorado.edu>
1513 2005-04-08 Fernando Perez <fperez@colorado.edu>
1509
1514
1510 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1515 * IPython/Magic.py (Magic._ofind): remove docstring evaluation
1511 from _ofind, which gets called on almost every input line. Now,
1516 from _ofind, which gets called on almost every input line. Now,
1512 we only try to get docstrings if they are actually going to be
1517 we only try to get docstrings if they are actually going to be
1513 used (the overhead of fetching unnecessary docstrings can be
1518 used (the overhead of fetching unnecessary docstrings can be
1514 noticeable for certain objects, such as Pyro proxies).
1519 noticeable for certain objects, such as Pyro proxies).
1515
1520
1516 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1521 * IPython/iplib.py (MagicCompleter.python_matches): Change the API
1517 for completers. For some reason I had been passing them the state
1522 for completers. For some reason I had been passing them the state
1518 variable, which completers never actually need, and was in
1523 variable, which completers never actually need, and was in
1519 conflict with the rlcompleter API. Custom completers ONLY need to
1524 conflict with the rlcompleter API. Custom completers ONLY need to
1520 take the text parameter.
1525 take the text parameter.
1521
1526
1522 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1527 * IPython/Extensions/InterpreterExec.py: Fix regexp so that magics
1523 work correctly in pysh. I've also moved all the logic which used
1528 work correctly in pysh. I've also moved all the logic which used
1524 to be in pysh.py here, which will prevent problems with future
1529 to be in pysh.py here, which will prevent problems with future
1525 upgrades. However, this time I must warn users to update their
1530 upgrades. However, this time I must warn users to update their
1526 pysh profile to include the line
1531 pysh profile to include the line
1527
1532
1528 import_all IPython.Extensions.InterpreterExec
1533 import_all IPython.Extensions.InterpreterExec
1529
1534
1530 because otherwise things won't work for them. They MUST also
1535 because otherwise things won't work for them. They MUST also
1531 delete pysh.py and the line
1536 delete pysh.py and the line
1532
1537
1533 execfile pysh.py
1538 execfile pysh.py
1534
1539
1535 from their ipythonrc-pysh.
1540 from their ipythonrc-pysh.
1536
1541
1537 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1542 * IPython/FlexCompleter.py (Completer.attr_matches): Make more
1538 robust in the face of objects whose dir() returns non-strings
1543 robust in the face of objects whose dir() returns non-strings
1539 (which it shouldn't, but some broken libs like ITK do). Thanks to
1544 (which it shouldn't, but some broken libs like ITK do). Thanks to
1540 a patch by John Hunter (implemented differently, though). Also
1545 a patch by John Hunter (implemented differently, though). Also
1541 minor improvements by using .extend instead of + on lists.
1546 minor improvements by using .extend instead of + on lists.
1542
1547
1543 * pysh.py:
1548 * pysh.py:
1544
1549
1545 2005-04-06 Fernando Perez <fperez@colorado.edu>
1550 2005-04-06 Fernando Perez <fperez@colorado.edu>
1546
1551
1547 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1552 * IPython/ipmaker.py (make_IPython): Make multi_line_specials on
1548 by default, so that all users benefit from it. Those who don't
1553 by default, so that all users benefit from it. Those who don't
1549 want it can still turn it off.
1554 want it can still turn it off.
1550
1555
1551 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1556 * IPython/UserConfig/ipythonrc: Add multi_line_specials to the
1552 config file, I'd forgotten about this, so users were getting it
1557 config file, I'd forgotten about this, so users were getting it
1553 off by default.
1558 off by default.
1554
1559
1555 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1560 * IPython/iplib.py (ipmagic): big overhaul of the magic system for
1556 consistency. Now magics can be called in multiline statements,
1561 consistency. Now magics can be called in multiline statements,
1557 and python variables can be expanded in magic calls via $var.
1562 and python variables can be expanded in magic calls via $var.
1558 This makes the magic system behave just like aliases or !system
1563 This makes the magic system behave just like aliases or !system
1559 calls.
1564 calls.
1560
1565
1561 2005-03-28 Fernando Perez <fperez@colorado.edu>
1566 2005-03-28 Fernando Perez <fperez@colorado.edu>
1562
1567
1563 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1568 * IPython/iplib.py (handle_auto): cleanup to use %s instead of
1564 expensive string additions for building command. Add support for
1569 expensive string additions for building command. Add support for
1565 trailing ';' when autocall is used.
1570 trailing ';' when autocall is used.
1566
1571
1567 2005-03-26 Fernando Perez <fperez@colorado.edu>
1572 2005-03-26 Fernando Perez <fperez@colorado.edu>
1568
1573
1569 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1574 * ipython.el: Fix http://www.scipy.net/roundup/ipython/issue31.
1570 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1575 Bugfix by A. Schmolck, the ipython.el maintainer. Also make
1571 ipython.el robust against prompts with any number of spaces
1576 ipython.el robust against prompts with any number of spaces
1572 (including 0) after the ':' character.
1577 (including 0) after the ':' character.
1573
1578
1574 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1579 * IPython/Prompts.py (Prompt2.set_p_str): Fix spurious space in
1575 continuation prompt, which misled users to think the line was
1580 continuation prompt, which misled users to think the line was
1576 already indented. Closes debian Bug#300847, reported to me by
1581 already indented. Closes debian Bug#300847, reported to me by
1577 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1582 Norbert Tretkowski <tretkowski-AT-inittab.de>.
1578
1583
1579 2005-03-23 Fernando Perez <fperez@colorado.edu>
1584 2005-03-23 Fernando Perez <fperez@colorado.edu>
1580
1585
1581 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1586 * IPython/Prompts.py (Prompt1.__str__): Make sure that prompts are
1582 properly aligned if they have embedded newlines.
1587 properly aligned if they have embedded newlines.
1583
1588
1584 * IPython/iplib.py (runlines): Add a public method to expose
1589 * IPython/iplib.py (runlines): Add a public method to expose
1585 IPython's code execution machinery, so that users can run strings
1590 IPython's code execution machinery, so that users can run strings
1586 as if they had been typed at the prompt interactively.
1591 as if they had been typed at the prompt interactively.
1587 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1592 (InteractiveShell.__init__): Added getoutput() to the __IPYTHON__
1588 methods which can call the system shell, but with python variable
1593 methods which can call the system shell, but with python variable
1589 expansion. The three such methods are: __IPYTHON__.system,
1594 expansion. The three such methods are: __IPYTHON__.system,
1590 .getoutput and .getoutputerror. These need to be documented in a
1595 .getoutput and .getoutputerror. These need to be documented in a
1591 'public API' section (to be written) of the manual.
1596 'public API' section (to be written) of the manual.
1592
1597
1593 2005-03-20 Fernando Perez <fperez@colorado.edu>
1598 2005-03-20 Fernando Perez <fperez@colorado.edu>
1594
1599
1595 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1600 * IPython/iplib.py (InteractiveShell.set_custom_exc): new system
1596 for custom exception handling. This is quite powerful, and it
1601 for custom exception handling. This is quite powerful, and it
1597 allows for user-installable exception handlers which can trap
1602 allows for user-installable exception handlers which can trap
1598 custom exceptions at runtime and treat them separately from
1603 custom exceptions at runtime and treat them separately from
1599 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1604 IPython's default mechanisms. At the request of FrΓ©dΓ©ric
1600 Mantegazza <mantegazza-AT-ill.fr>.
1605 Mantegazza <mantegazza-AT-ill.fr>.
1601 (InteractiveShell.set_custom_completer): public API function to
1606 (InteractiveShell.set_custom_completer): public API function to
1602 add new completers at runtime.
1607 add new completers at runtime.
1603
1608
1604 2005-03-19 Fernando Perez <fperez@colorado.edu>
1609 2005-03-19 Fernando Perez <fperez@colorado.edu>
1605
1610
1606 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1611 * IPython/OInspect.py (getdoc): Add a call to obj.getdoc(), to
1607 allow objects which provide their docstrings via non-standard
1612 allow objects which provide their docstrings via non-standard
1608 mechanisms (like Pyro proxies) to still be inspected by ipython's
1613 mechanisms (like Pyro proxies) to still be inspected by ipython's
1609 ? system.
1614 ? system.
1610
1615
1611 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1616 * IPython/iplib.py (InteractiveShell.__init__): back off the _o/_e
1612 automatic capture system. I tried quite hard to make it work
1617 automatic capture system. I tried quite hard to make it work
1613 reliably, and simply failed. I tried many combinations with the
1618 reliably, and simply failed. I tried many combinations with the
1614 subprocess module, but eventually nothing worked in all needed
1619 subprocess module, but eventually nothing worked in all needed
1615 cases (not blocking stdin for the child, duplicating stdout
1620 cases (not blocking stdin for the child, duplicating stdout
1616 without blocking, etc). The new %sc/%sx still do capture to these
1621 without blocking, etc). The new %sc/%sx still do capture to these
1617 magical list/string objects which make shell use much more
1622 magical list/string objects which make shell use much more
1618 conveninent, so not all is lost.
1623 conveninent, so not all is lost.
1619
1624
1620 XXX - FIX MANUAL for the change above!
1625 XXX - FIX MANUAL for the change above!
1621
1626
1622 (runsource): I copied code.py's runsource() into ipython to modify
1627 (runsource): I copied code.py's runsource() into ipython to modify
1623 it a bit. Now the code object and source to be executed are
1628 it a bit. Now the code object and source to be executed are
1624 stored in ipython. This makes this info accessible to third-party
1629 stored in ipython. This makes this info accessible to third-party
1625 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1630 tools, like custom exception handlers. After a request by FrΓ©dΓ©ric
1626 Mantegazza <mantegazza-AT-ill.fr>.
1631 Mantegazza <mantegazza-AT-ill.fr>.
1627
1632
1628 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1633 * IPython/UserConfig/ipythonrc: Add up/down arrow keys to
1629 history-search via readline (like C-p/C-n). I'd wanted this for a
1634 history-search via readline (like C-p/C-n). I'd wanted this for a
1630 long time, but only recently found out how to do it. For users
1635 long time, but only recently found out how to do it. For users
1631 who already have their ipythonrc files made and want this, just
1636 who already have their ipythonrc files made and want this, just
1632 add:
1637 add:
1633
1638
1634 readline_parse_and_bind "\e[A": history-search-backward
1639 readline_parse_and_bind "\e[A": history-search-backward
1635 readline_parse_and_bind "\e[B": history-search-forward
1640 readline_parse_and_bind "\e[B": history-search-forward
1636
1641
1637 2005-03-18 Fernando Perez <fperez@colorado.edu>
1642 2005-03-18 Fernando Perez <fperez@colorado.edu>
1638
1643
1639 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1644 * IPython/Magic.py (magic_sc): %sc and %sx now use the fancy
1640 LSString and SList classes which allow transparent conversions
1645 LSString and SList classes which allow transparent conversions
1641 between list mode and whitespace-separated string.
1646 between list mode and whitespace-separated string.
1642 (magic_r): Fix recursion problem in %r.
1647 (magic_r): Fix recursion problem in %r.
1643
1648
1644 * IPython/genutils.py (LSString): New class to be used for
1649 * IPython/genutils.py (LSString): New class to be used for
1645 automatic storage of the results of all alias/system calls in _o
1650 automatic storage of the results of all alias/system calls in _o
1646 and _e (stdout/err). These provide a .l/.list attribute which
1651 and _e (stdout/err). These provide a .l/.list attribute which
1647 does automatic splitting on newlines. This means that for most
1652 does automatic splitting on newlines. This means that for most
1648 uses, you'll never need to do capturing of output with %sc/%sx
1653 uses, you'll never need to do capturing of output with %sc/%sx
1649 anymore, since ipython keeps this always done for you. Note that
1654 anymore, since ipython keeps this always done for you. Note that
1650 only the LAST results are stored, the _o/e variables are
1655 only the LAST results are stored, the _o/e variables are
1651 overwritten on each call. If you need to save their contents
1656 overwritten on each call. If you need to save their contents
1652 further, simply bind them to any other name.
1657 further, simply bind them to any other name.
1653
1658
1654 2005-03-17 Fernando Perez <fperez@colorado.edu>
1659 2005-03-17 Fernando Perez <fperez@colorado.edu>
1655
1660
1656 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1661 * IPython/Prompts.py (BasePrompt.cwd_filt): a few more fixes for
1657 prompt namespace handling.
1662 prompt namespace handling.
1658
1663
1659 2005-03-16 Fernando Perez <fperez@colorado.edu>
1664 2005-03-16 Fernando Perez <fperez@colorado.edu>
1660
1665
1661 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1666 * IPython/Prompts.py (CachedOutput.__init__): Fix default and
1662 classic prompts to be '>>> ' (final space was missing, and it
1667 classic prompts to be '>>> ' (final space was missing, and it
1663 trips the emacs python mode).
1668 trips the emacs python mode).
1664 (BasePrompt.__str__): Added safe support for dynamic prompt
1669 (BasePrompt.__str__): Added safe support for dynamic prompt
1665 strings. Now you can set your prompt string to be '$x', and the
1670 strings. Now you can set your prompt string to be '$x', and the
1666 value of x will be printed from your interactive namespace. The
1671 value of x will be printed from your interactive namespace. The
1667 interpolation syntax includes the full Itpl support, so
1672 interpolation syntax includes the full Itpl support, so
1668 ${foo()+x+bar()} is a valid prompt string now, and the function
1673 ${foo()+x+bar()} is a valid prompt string now, and the function
1669 calls will be made at runtime.
1674 calls will be made at runtime.
1670
1675
1671 2005-03-15 Fernando Perez <fperez@colorado.edu>
1676 2005-03-15 Fernando Perez <fperez@colorado.edu>
1672
1677
1673 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1678 * IPython/Magic.py (magic_history): renamed %hist to %history, to
1674 avoid name clashes in pylab. %hist still works, it just forwards
1679 avoid name clashes in pylab. %hist still works, it just forwards
1675 the call to %history.
1680 the call to %history.
1676
1681
1677 2005-03-02 *** Released version 0.6.12
1682 2005-03-02 *** Released version 0.6.12
1678
1683
1679 2005-03-02 Fernando Perez <fperez@colorado.edu>
1684 2005-03-02 Fernando Perez <fperez@colorado.edu>
1680
1685
1681 * IPython/iplib.py (handle_magic): log magic calls properly as
1686 * IPython/iplib.py (handle_magic): log magic calls properly as
1682 ipmagic() function calls.
1687 ipmagic() function calls.
1683
1688
1684 * IPython/Magic.py (magic_time): Improved %time to support
1689 * IPython/Magic.py (magic_time): Improved %time to support
1685 statements and provide wall-clock as well as CPU time.
1690 statements and provide wall-clock as well as CPU time.
1686
1691
1687 2005-02-27 Fernando Perez <fperez@colorado.edu>
1692 2005-02-27 Fernando Perez <fperez@colorado.edu>
1688
1693
1689 * IPython/hooks.py: New hooks module, to expose user-modifiable
1694 * IPython/hooks.py: New hooks module, to expose user-modifiable
1690 IPython functionality in a clean manner. For now only the editor
1695 IPython functionality in a clean manner. For now only the editor
1691 hook is actually written, and other thigns which I intend to turn
1696 hook is actually written, and other thigns which I intend to turn
1692 into proper hooks aren't yet there. The display and prefilter
1697 into proper hooks aren't yet there. The display and prefilter
1693 stuff, for example, should be hooks. But at least now the
1698 stuff, for example, should be hooks. But at least now the
1694 framework is in place, and the rest can be moved here with more
1699 framework is in place, and the rest can be moved here with more
1695 time later. IPython had had a .hooks variable for a long time for
1700 time later. IPython had had a .hooks variable for a long time for
1696 this purpose, but I'd never actually used it for anything.
1701 this purpose, but I'd never actually used it for anything.
1697
1702
1698 2005-02-26 Fernando Perez <fperez@colorado.edu>
1703 2005-02-26 Fernando Perez <fperez@colorado.edu>
1699
1704
1700 * IPython/ipmaker.py (make_IPython): make the default ipython
1705 * IPython/ipmaker.py (make_IPython): make the default ipython
1701 directory be called _ipython under win32, to follow more the
1706 directory be called _ipython under win32, to follow more the
1702 naming peculiarities of that platform (where buggy software like
1707 naming peculiarities of that platform (where buggy software like
1703 Visual Sourcesafe breaks with .named directories). Reported by
1708 Visual Sourcesafe breaks with .named directories). Reported by
1704 Ville Vainio.
1709 Ville Vainio.
1705
1710
1706 2005-02-23 Fernando Perez <fperez@colorado.edu>
1711 2005-02-23 Fernando Perez <fperez@colorado.edu>
1707
1712
1708 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1713 * IPython/iplib.py (InteractiveShell.__init__): removed a few
1709 auto_aliases for win32 which were causing problems. Users can
1714 auto_aliases for win32 which were causing problems. Users can
1710 define the ones they personally like.
1715 define the ones they personally like.
1711
1716
1712 2005-02-21 Fernando Perez <fperez@colorado.edu>
1717 2005-02-21 Fernando Perez <fperez@colorado.edu>
1713
1718
1714 * IPython/Magic.py (magic_time): new magic to time execution of
1719 * IPython/Magic.py (magic_time): new magic to time execution of
1715 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1720 expressions. After a request by Charles Moad <cmoad-AT-indiana.edu>.
1716
1721
1717 2005-02-19 Fernando Perez <fperez@colorado.edu>
1722 2005-02-19 Fernando Perez <fperez@colorado.edu>
1718
1723
1719 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1724 * IPython/ConfigLoader.py (ConfigLoader.load): Allow empty strings
1720 into keys (for prompts, for example).
1725 into keys (for prompts, for example).
1721
1726
1722 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1727 * IPython/Prompts.py (BasePrompt.set_p_str): Fix to allow empty
1723 prompts in case users want them. This introduces a small behavior
1728 prompts in case users want them. This introduces a small behavior
1724 change: ipython does not automatically add a space to all prompts
1729 change: ipython does not automatically add a space to all prompts
1725 anymore. To get the old prompts with a space, users should add it
1730 anymore. To get the old prompts with a space, users should add it
1726 manually to their ipythonrc file, so for example prompt_in1 should
1731 manually to their ipythonrc file, so for example prompt_in1 should
1727 now read 'In [\#]: ' instead of 'In [\#]:'.
1732 now read 'In [\#]: ' instead of 'In [\#]:'.
1728 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1733 (BasePrompt.__init__): New option prompts_pad_left (only in rc
1729 file) to control left-padding of secondary prompts.
1734 file) to control left-padding of secondary prompts.
1730
1735
1731 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1736 * IPython/Magic.py (Magic.profile_missing_notice): Don't crash if
1732 the profiler can't be imported. Fix for Debian, which removed
1737 the profiler can't be imported. Fix for Debian, which removed
1733 profile.py because of License issues. I applied a slightly
1738 profile.py because of License issues. I applied a slightly
1734 modified version of the original Debian patch at
1739 modified version of the original Debian patch at
1735 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1740 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=294500.
1736
1741
1737 2005-02-17 Fernando Perez <fperez@colorado.edu>
1742 2005-02-17 Fernando Perez <fperez@colorado.edu>
1738
1743
1739 * IPython/genutils.py (native_line_ends): Fix bug which would
1744 * IPython/genutils.py (native_line_ends): Fix bug which would
1740 cause improper line-ends under win32 b/c I was not opening files
1745 cause improper line-ends under win32 b/c I was not opening files
1741 in binary mode. Bug report and fix thanks to Ville.
1746 in binary mode. Bug report and fix thanks to Ville.
1742
1747
1743 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1748 * IPython/iplib.py (handle_auto): Fix bug which I introduced when
1744 trying to catch spurious foo[1] autocalls. My fix actually broke
1749 trying to catch spurious foo[1] autocalls. My fix actually broke
1745 ',/' autoquote/call with explicit escape (bad regexp).
1750 ',/' autoquote/call with explicit escape (bad regexp).
1746
1751
1747 2005-02-15 *** Released version 0.6.11
1752 2005-02-15 *** Released version 0.6.11
1748
1753
1749 2005-02-14 Fernando Perez <fperez@colorado.edu>
1754 2005-02-14 Fernando Perez <fperez@colorado.edu>
1750
1755
1751 * IPython/background_jobs.py: New background job management
1756 * IPython/background_jobs.py: New background job management
1752 subsystem. This is implemented via a new set of classes, and
1757 subsystem. This is implemented via a new set of classes, and
1753 IPython now provides a builtin 'jobs' object for background job
1758 IPython now provides a builtin 'jobs' object for background job
1754 execution. A convenience %bg magic serves as a lightweight
1759 execution. A convenience %bg magic serves as a lightweight
1755 frontend for starting the more common type of calls. This was
1760 frontend for starting the more common type of calls. This was
1756 inspired by discussions with B. Granger and the BackgroundCommand
1761 inspired by discussions with B. Granger and the BackgroundCommand
1757 class described in the book Python Scripting for Computational
1762 class described in the book Python Scripting for Computational
1758 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1763 Science, by H. P. Langtangen: http://folk.uio.no/hpl/scripting
1759 (although ultimately no code from this text was used, as IPython's
1764 (although ultimately no code from this text was used, as IPython's
1760 system is a separate implementation).
1765 system is a separate implementation).
1761
1766
1762 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1767 * IPython/iplib.py (MagicCompleter.python_matches): add new option
1763 to control the completion of single/double underscore names
1768 to control the completion of single/double underscore names
1764 separately. As documented in the example ipytonrc file, the
1769 separately. As documented in the example ipytonrc file, the
1765 readline_omit__names variable can now be set to 2, to omit even
1770 readline_omit__names variable can now be set to 2, to omit even
1766 single underscore names. Thanks to a patch by Brian Wong
1771 single underscore names. Thanks to a patch by Brian Wong
1767 <BrianWong-AT-AirgoNetworks.Com>.
1772 <BrianWong-AT-AirgoNetworks.Com>.
1768 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1773 (InteractiveShell.__init__): Fix bug which would cause foo[1] to
1769 be autocalled as foo([1]) if foo were callable. A problem for
1774 be autocalled as foo([1]) if foo were callable. A problem for
1770 things which are both callable and implement __getitem__.
1775 things which are both callable and implement __getitem__.
1771 (init_readline): Fix autoindentation for win32. Thanks to a patch
1776 (init_readline): Fix autoindentation for win32. Thanks to a patch
1772 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1777 by Vivian De Smedt <vivian-AT-vdesmedt.com>.
1773
1778
1774 2005-02-12 Fernando Perez <fperez@colorado.edu>
1779 2005-02-12 Fernando Perez <fperez@colorado.edu>
1775
1780
1776 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1781 * IPython/ipmaker.py (make_IPython): Disabled the stout traps
1777 which I had written long ago to sort out user error messages which
1782 which I had written long ago to sort out user error messages which
1778 may occur during startup. This seemed like a good idea initially,
1783 may occur during startup. This seemed like a good idea initially,
1779 but it has proven a disaster in retrospect. I don't want to
1784 but it has proven a disaster in retrospect. I don't want to
1780 change much code for now, so my fix is to set the internal 'debug'
1785 change much code for now, so my fix is to set the internal 'debug'
1781 flag to true everywhere, whose only job was precisely to control
1786 flag to true everywhere, whose only job was precisely to control
1782 this subsystem. This closes issue 28 (as well as avoiding all
1787 this subsystem. This closes issue 28 (as well as avoiding all
1783 sorts of strange hangups which occur from time to time).
1788 sorts of strange hangups which occur from time to time).
1784
1789
1785 2005-02-07 Fernando Perez <fperez@colorado.edu>
1790 2005-02-07 Fernando Perez <fperez@colorado.edu>
1786
1791
1787 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1792 * IPython/Magic.py (magic_edit): Fix 'ed -p' not working when the
1788 previous call produced a syntax error.
1793 previous call produced a syntax error.
1789
1794
1790 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1795 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1791 classes without constructor.
1796 classes without constructor.
1792
1797
1793 2005-02-06 Fernando Perez <fperez@colorado.edu>
1798 2005-02-06 Fernando Perez <fperez@colorado.edu>
1794
1799
1795 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1800 * IPython/iplib.py (MagicCompleter.complete): Extend the list of
1796 completions with the results of each matcher, so we return results
1801 completions with the results of each matcher, so we return results
1797 to the user from all namespaces. This breaks with ipython
1802 to the user from all namespaces. This breaks with ipython
1798 tradition, but I think it's a nicer behavior. Now you get all
1803 tradition, but I think it's a nicer behavior. Now you get all
1799 possible completions listed, from all possible namespaces (python,
1804 possible completions listed, from all possible namespaces (python,
1800 filesystem, magics...) After a request by John Hunter
1805 filesystem, magics...) After a request by John Hunter
1801 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1806 <jdhunter-AT-nitace.bsd.uchicago.edu>.
1802
1807
1803 2005-02-05 Fernando Perez <fperez@colorado.edu>
1808 2005-02-05 Fernando Perez <fperez@colorado.edu>
1804
1809
1805 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1810 * IPython/Magic.py (magic_prun): Fix bug where prun would fail if
1806 the call had quote characters in it (the quotes were stripped).
1811 the call had quote characters in it (the quotes were stripped).
1807
1812
1808 2005-01-31 Fernando Perez <fperez@colorado.edu>
1813 2005-01-31 Fernando Perez <fperez@colorado.edu>
1809
1814
1810 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1815 * IPython/iplib.py (InteractiveShell.__init__): reduce reliance on
1811 Itpl.itpl() to make the code more robust against psyco
1816 Itpl.itpl() to make the code more robust against psyco
1812 optimizations.
1817 optimizations.
1813
1818
1814 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1819 * IPython/Itpl.py (Itpl.__str__): Use a _getframe() call instead
1815 of causing an exception. Quicker, cleaner.
1820 of causing an exception. Quicker, cleaner.
1816
1821
1817 2005-01-28 Fernando Perez <fperez@colorado.edu>
1822 2005-01-28 Fernando Perez <fperez@colorado.edu>
1818
1823
1819 * scripts/ipython_win_post_install.py (install): hardcode
1824 * scripts/ipython_win_post_install.py (install): hardcode
1820 sys.prefix+'python.exe' as the executable path. It turns out that
1825 sys.prefix+'python.exe' as the executable path. It turns out that
1821 during the post-installation run, sys.executable resolves to the
1826 during the post-installation run, sys.executable resolves to the
1822 name of the binary installer! I should report this as a distutils
1827 name of the binary installer! I should report this as a distutils
1823 bug, I think. I updated the .10 release with this tiny fix, to
1828 bug, I think. I updated the .10 release with this tiny fix, to
1824 avoid annoying the lists further.
1829 avoid annoying the lists further.
1825
1830
1826 2005-01-27 *** Released version 0.6.10
1831 2005-01-27 *** Released version 0.6.10
1827
1832
1828 2005-01-27 Fernando Perez <fperez@colorado.edu>
1833 2005-01-27 Fernando Perez <fperez@colorado.edu>
1829
1834
1830 * IPython/numutils.py (norm): Added 'inf' as optional name for
1835 * IPython/numutils.py (norm): Added 'inf' as optional name for
1831 L-infinity norm, included references to mathworld.com for vector
1836 L-infinity norm, included references to mathworld.com for vector
1832 norm definitions.
1837 norm definitions.
1833 (amin/amax): added amin/amax for array min/max. Similar to what
1838 (amin/amax): added amin/amax for array min/max. Similar to what
1834 pylab ships with after the recent reorganization of names.
1839 pylab ships with after the recent reorganization of names.
1835 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1840 (spike/spike_odd): removed deprecated spike/spike_odd functions.
1836
1841
1837 * ipython.el: committed Alex's recent fixes and improvements.
1842 * ipython.el: committed Alex's recent fixes and improvements.
1838 Tested with python-mode from CVS, and it looks excellent. Since
1843 Tested with python-mode from CVS, and it looks excellent. Since
1839 python-mode hasn't released anything in a while, I'm temporarily
1844 python-mode hasn't released anything in a while, I'm temporarily
1840 putting a copy of today's CVS (v 4.70) of python-mode in:
1845 putting a copy of today's CVS (v 4.70) of python-mode in:
1841 http://ipython.scipy.org/tmp/python-mode.el
1846 http://ipython.scipy.org/tmp/python-mode.el
1842
1847
1843 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1848 * scripts/ipython_win_post_install.py (install): Win32 fix to use
1844 sys.executable for the executable name, instead of assuming it's
1849 sys.executable for the executable name, instead of assuming it's
1845 called 'python.exe' (the post-installer would have produced broken
1850 called 'python.exe' (the post-installer would have produced broken
1846 setups on systems with a differently named python binary).
1851 setups on systems with a differently named python binary).
1847
1852
1848 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1853 * IPython/PyColorize.py (Parser.__call__): change explicit '\n'
1849 references to os.linesep, to make the code more
1854 references to os.linesep, to make the code more
1850 platform-independent. This is also part of the win32 coloring
1855 platform-independent. This is also part of the win32 coloring
1851 fixes.
1856 fixes.
1852
1857
1853 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1858 * IPython/genutils.py (page_dumb): Remove attempts to chop long
1854 lines, which actually cause coloring bugs because the length of
1859 lines, which actually cause coloring bugs because the length of
1855 the line is very difficult to correctly compute with embedded
1860 the line is very difficult to correctly compute with embedded
1856 escapes. This was the source of all the coloring problems under
1861 escapes. This was the source of all the coloring problems under
1857 Win32. I think that _finally_, Win32 users have a properly
1862 Win32. I think that _finally_, Win32 users have a properly
1858 working ipython in all respects. This would never have happened
1863 working ipython in all respects. This would never have happened
1859 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1864 if not for Gary Bishop and Viktor Ransmayr's great help and work.
1860
1865
1861 2005-01-26 *** Released version 0.6.9
1866 2005-01-26 *** Released version 0.6.9
1862
1867
1863 2005-01-25 Fernando Perez <fperez@colorado.edu>
1868 2005-01-25 Fernando Perez <fperez@colorado.edu>
1864
1869
1865 * setup.py: finally, we have a true Windows installer, thanks to
1870 * setup.py: finally, we have a true Windows installer, thanks to
1866 the excellent work of Viktor Ransmayr
1871 the excellent work of Viktor Ransmayr
1867 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1872 <viktor.ransmayr-AT-t-online.de>. The docs have been updated for
1868 Windows users. The setup routine is quite a bit cleaner thanks to
1873 Windows users. The setup routine is quite a bit cleaner thanks to
1869 this, and the post-install script uses the proper functions to
1874 this, and the post-install script uses the proper functions to
1870 allow a clean de-installation using the standard Windows Control
1875 allow a clean de-installation using the standard Windows Control
1871 Panel.
1876 Panel.
1872
1877
1873 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1878 * IPython/genutils.py (get_home_dir): changed to use the $HOME
1874 environment variable under all OSes (including win32) if
1879 environment variable under all OSes (including win32) if
1875 available. This will give consistency to win32 users who have set
1880 available. This will give consistency to win32 users who have set
1876 this variable for any reason. If os.environ['HOME'] fails, the
1881 this variable for any reason. If os.environ['HOME'] fails, the
1877 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1882 previous policy of using HOMEDRIVE\HOMEPATH kicks in.
1878
1883
1879 2005-01-24 Fernando Perez <fperez@colorado.edu>
1884 2005-01-24 Fernando Perez <fperez@colorado.edu>
1880
1885
1881 * IPython/numutils.py (empty_like): add empty_like(), similar to
1886 * IPython/numutils.py (empty_like): add empty_like(), similar to
1882 zeros_like() but taking advantage of the new empty() Numeric routine.
1887 zeros_like() but taking advantage of the new empty() Numeric routine.
1883
1888
1884 2005-01-23 *** Released version 0.6.8
1889 2005-01-23 *** Released version 0.6.8
1885
1890
1886 2005-01-22 Fernando Perez <fperez@colorado.edu>
1891 2005-01-22 Fernando Perez <fperez@colorado.edu>
1887
1892
1888 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1893 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): I removed the
1889 automatic show() calls. After discussing things with JDH, it
1894 automatic show() calls. After discussing things with JDH, it
1890 turns out there are too many corner cases where this can go wrong.
1895 turns out there are too many corner cases where this can go wrong.
1891 It's best not to try to be 'too smart', and simply have ipython
1896 It's best not to try to be 'too smart', and simply have ipython
1892 reproduce as much as possible the default behavior of a normal
1897 reproduce as much as possible the default behavior of a normal
1893 python shell.
1898 python shell.
1894
1899
1895 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1900 * IPython/iplib.py (InteractiveShell.__init__): Modified the
1896 line-splitting regexp and _prefilter() to avoid calling getattr()
1901 line-splitting regexp and _prefilter() to avoid calling getattr()
1897 on assignments. This closes
1902 on assignments. This closes
1898 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1903 http://www.scipy.net/roundup/ipython/issue24. Note that Python's
1899 readline uses getattr(), so a simple <TAB> keypress is still
1904 readline uses getattr(), so a simple <TAB> keypress is still
1900 enough to trigger getattr() calls on an object.
1905 enough to trigger getattr() calls on an object.
1901
1906
1902 2005-01-21 Fernando Perez <fperez@colorado.edu>
1907 2005-01-21 Fernando Perez <fperez@colorado.edu>
1903
1908
1904 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1909 * IPython/Shell.py (MatplotlibShellBase.magic_run): Fix the %run
1905 docstring under pylab so it doesn't mask the original.
1910 docstring under pylab so it doesn't mask the original.
1906
1911
1907 2005-01-21 *** Released version 0.6.7
1912 2005-01-21 *** Released version 0.6.7
1908
1913
1909 2005-01-21 Fernando Perez <fperez@colorado.edu>
1914 2005-01-21 Fernando Perez <fperez@colorado.edu>
1910
1915
1911 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1916 * IPython/Shell.py (MTInteractiveShell.runcode): Trap a crash with
1912 signal handling for win32 users in multithreaded mode.
1917 signal handling for win32 users in multithreaded mode.
1913
1918
1914 2005-01-17 Fernando Perez <fperez@colorado.edu>
1919 2005-01-17 Fernando Perez <fperez@colorado.edu>
1915
1920
1916 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1921 * IPython/OInspect.py (Inspector.pinfo): Fix crash when inspecting
1917 instances with no __init__. After a crash report by Norbert Nemec
1922 instances with no __init__. After a crash report by Norbert Nemec
1918 <Norbert-AT-nemec-online.de>.
1923 <Norbert-AT-nemec-online.de>.
1919
1924
1920 2005-01-14 Fernando Perez <fperez@colorado.edu>
1925 2005-01-14 Fernando Perez <fperez@colorado.edu>
1921
1926
1922 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1927 * IPython/ultraTB.py (VerboseTB.text): Fix bug in reporting of
1923 names for verbose exceptions, when multiple dotted names and the
1928 names for verbose exceptions, when multiple dotted names and the
1924 'parent' object were present on the same line.
1929 'parent' object were present on the same line.
1925
1930
1926 2005-01-11 Fernando Perez <fperez@colorado.edu>
1931 2005-01-11 Fernando Perez <fperez@colorado.edu>
1927
1932
1928 * IPython/genutils.py (flag_calls): new utility to trap and flag
1933 * IPython/genutils.py (flag_calls): new utility to trap and flag
1929 calls in functions. I need it to clean up matplotlib support.
1934 calls in functions. I need it to clean up matplotlib support.
1930 Also removed some deprecated code in genutils.
1935 Also removed some deprecated code in genutils.
1931
1936
1932 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1937 * IPython/Shell.py (MatplotlibShellBase.mplot_exec): small fix so
1933 that matplotlib scripts called with %run, which don't call show()
1938 that matplotlib scripts called with %run, which don't call show()
1934 themselves, still have their plotting windows open.
1939 themselves, still have their plotting windows open.
1935
1940
1936 2005-01-05 Fernando Perez <fperez@colorado.edu>
1941 2005-01-05 Fernando Perez <fperez@colorado.edu>
1937
1942
1938 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1943 * IPython/Shell.py (IPShellGTK.__init__): Patch by Andrew Straw
1939 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1944 <astraw-AT-caltech.edu>, to fix gtk deprecation warnings.
1940
1945
1941 2004-12-19 Fernando Perez <fperez@colorado.edu>
1946 2004-12-19 Fernando Perez <fperez@colorado.edu>
1942
1947
1943 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1948 * IPython/Shell.py (MTInteractiveShell.runcode): Get rid of
1944 parent_runcode, which was an eyesore. The same result can be
1949 parent_runcode, which was an eyesore. The same result can be
1945 obtained with Python's regular superclass mechanisms.
1950 obtained with Python's regular superclass mechanisms.
1946
1951
1947 2004-12-17 Fernando Perez <fperez@colorado.edu>
1952 2004-12-17 Fernando Perez <fperez@colorado.edu>
1948
1953
1949 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1954 * IPython/Magic.py (Magic.magic_sc): Fix quote stripping problem
1950 reported by Prabhu.
1955 reported by Prabhu.
1951 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1956 (Magic.magic_sx): direct all errors to Term.cerr (defaults to
1952 sys.stderr) instead of explicitly calling sys.stderr. This helps
1957 sys.stderr) instead of explicitly calling sys.stderr. This helps
1953 maintain our I/O abstractions clean, for future GUI embeddings.
1958 maintain our I/O abstractions clean, for future GUI embeddings.
1954
1959
1955 * IPython/genutils.py (info): added new utility for sys.stderr
1960 * IPython/genutils.py (info): added new utility for sys.stderr
1956 unified info message handling (thin wrapper around warn()).
1961 unified info message handling (thin wrapper around warn()).
1957
1962
1958 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1963 * IPython/ultraTB.py (VerboseTB.text): Fix misreported global
1959 composite (dotted) names on verbose exceptions.
1964 composite (dotted) names on verbose exceptions.
1960 (VerboseTB.nullrepr): harden against another kind of errors which
1965 (VerboseTB.nullrepr): harden against another kind of errors which
1961 Python's inspect module can trigger, and which were crashing
1966 Python's inspect module can trigger, and which were crashing
1962 IPython. Thanks to a report by Marco Lombardi
1967 IPython. Thanks to a report by Marco Lombardi
1963 <mlombard-AT-ma010192.hq.eso.org>.
1968 <mlombard-AT-ma010192.hq.eso.org>.
1964
1969
1965 2004-12-13 *** Released version 0.6.6
1970 2004-12-13 *** Released version 0.6.6
1966
1971
1967 2004-12-12 Fernando Perez <fperez@colorado.edu>
1972 2004-12-12 Fernando Perez <fperez@colorado.edu>
1968
1973
1969 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1974 * IPython/Shell.py (IPShellGTK.mainloop): catch RuntimeErrors
1970 generated by pygtk upon initialization if it was built without
1975 generated by pygtk upon initialization if it was built without
1971 threads (for matplotlib users). After a crash reported by
1976 threads (for matplotlib users). After a crash reported by
1972 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1977 Leguijt, Jaap J SIEP-EPT-RES <Jaap.Leguijt-AT-shell.com>.
1973
1978
1974 * IPython/ipmaker.py (make_IPython): fix small bug in the
1979 * IPython/ipmaker.py (make_IPython): fix small bug in the
1975 import_some parameter for multiple imports.
1980 import_some parameter for multiple imports.
1976
1981
1977 * IPython/iplib.py (ipmagic): simplified the interface of
1982 * IPython/iplib.py (ipmagic): simplified the interface of
1978 ipmagic() to take a single string argument, just as it would be
1983 ipmagic() to take a single string argument, just as it would be
1979 typed at the IPython cmd line.
1984 typed at the IPython cmd line.
1980 (ipalias): Added new ipalias() with an interface identical to
1985 (ipalias): Added new ipalias() with an interface identical to
1981 ipmagic(). This completes exposing a pure python interface to the
1986 ipmagic(). This completes exposing a pure python interface to the
1982 alias and magic system, which can be used in loops or more complex
1987 alias and magic system, which can be used in loops or more complex
1983 code where IPython's automatic line mangling is not active.
1988 code where IPython's automatic line mangling is not active.
1984
1989
1985 * IPython/genutils.py (timing): changed interface of timing to
1990 * IPython/genutils.py (timing): changed interface of timing to
1986 simply run code once, which is the most common case. timings()
1991 simply run code once, which is the most common case. timings()
1987 remains unchanged, for the cases where you want multiple runs.
1992 remains unchanged, for the cases where you want multiple runs.
1988
1993
1989 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1994 * IPython/Shell.py (MatplotlibShellBase._matplotlib_config): Fix a
1990 bug where Python2.2 crashes with exec'ing code which does not end
1995 bug where Python2.2 crashes with exec'ing code which does not end
1991 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1996 in a single newline. Python 2.3 is OK, so I hadn't noticed this
1992 before.
1997 before.
1993
1998
1994 2004-12-10 Fernando Perez <fperez@colorado.edu>
1999 2004-12-10 Fernando Perez <fperez@colorado.edu>
1995
2000
1996 * IPython/Magic.py (Magic.magic_prun): changed name of option from
2001 * IPython/Magic.py (Magic.magic_prun): changed name of option from
1997 -t to -T, to accomodate the new -t flag in %run (the %run and
2002 -t to -T, to accomodate the new -t flag in %run (the %run and
1998 %prun options are kind of intermixed, and it's not easy to change
2003 %prun options are kind of intermixed, and it's not easy to change
1999 this with the limitations of python's getopt).
2004 this with the limitations of python's getopt).
2000
2005
2001 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2006 * IPython/Magic.py (Magic.magic_run): Added new -t option to time
2002 the execution of scripts. It's not as fine-tuned as timeit.py,
2007 the execution of scripts. It's not as fine-tuned as timeit.py,
2003 but it works from inside ipython (and under 2.2, which lacks
2008 but it works from inside ipython (and under 2.2, which lacks
2004 timeit.py). Optionally a number of runs > 1 can be given for
2009 timeit.py). Optionally a number of runs > 1 can be given for
2005 timing very short-running code.
2010 timing very short-running code.
2006
2011
2007 * IPython/genutils.py (uniq_stable): new routine which returns a
2012 * IPython/genutils.py (uniq_stable): new routine which returns a
2008 list of unique elements in any iterable, but in stable order of
2013 list of unique elements in any iterable, but in stable order of
2009 appearance. I needed this for the ultraTB fixes, and it's a handy
2014 appearance. I needed this for the ultraTB fixes, and it's a handy
2010 utility.
2015 utility.
2011
2016
2012 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2017 * IPython/ultraTB.py (VerboseTB.text): Fix proper reporting of
2013 dotted names in Verbose exceptions. This had been broken since
2018 dotted names in Verbose exceptions. This had been broken since
2014 the very start, now x.y will properly be printed in a Verbose
2019 the very start, now x.y will properly be printed in a Verbose
2015 traceback, instead of x being shown and y appearing always as an
2020 traceback, instead of x being shown and y appearing always as an
2016 'undefined global'. Getting this to work was a bit tricky,
2021 'undefined global'. Getting this to work was a bit tricky,
2017 because by default python tokenizers are stateless. Saved by
2022 because by default python tokenizers are stateless. Saved by
2018 python's ability to easily add a bit of state to an arbitrary
2023 python's ability to easily add a bit of state to an arbitrary
2019 function (without needing to build a full-blown callable object).
2024 function (without needing to build a full-blown callable object).
2020
2025
2021 Also big cleanup of this code, which had horrendous runtime
2026 Also big cleanup of this code, which had horrendous runtime
2022 lookups of zillions of attributes for colorization. Moved all
2027 lookups of zillions of attributes for colorization. Moved all
2023 this code into a few templates, which make it cleaner and quicker.
2028 this code into a few templates, which make it cleaner and quicker.
2024
2029
2025 Printout quality was also improved for Verbose exceptions: one
2030 Printout quality was also improved for Verbose exceptions: one
2026 variable per line, and memory addresses are printed (this can be
2031 variable per line, and memory addresses are printed (this can be
2027 quite handy in nasty debugging situations, which is what Verbose
2032 quite handy in nasty debugging situations, which is what Verbose
2028 is for).
2033 is for).
2029
2034
2030 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2035 * IPython/ipmaker.py (make_IPython): Do NOT execute files named in
2031 the command line as scripts to be loaded by embedded instances.
2036 the command line as scripts to be loaded by embedded instances.
2032 Doing so has the potential for an infinite recursion if there are
2037 Doing so has the potential for an infinite recursion if there are
2033 exceptions thrown in the process. This fixes a strange crash
2038 exceptions thrown in the process. This fixes a strange crash
2034 reported by Philippe MULLER <muller-AT-irit.fr>.
2039 reported by Philippe MULLER <muller-AT-irit.fr>.
2035
2040
2036 2004-12-09 Fernando Perez <fperez@colorado.edu>
2041 2004-12-09 Fernando Perez <fperez@colorado.edu>
2037
2042
2038 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2043 * IPython/Shell.py (MatplotlibShellBase.use): Change pylab support
2039 to reflect new names in matplotlib, which now expose the
2044 to reflect new names in matplotlib, which now expose the
2040 matlab-compatible interface via a pylab module instead of the
2045 matlab-compatible interface via a pylab module instead of the
2041 'matlab' name. The new code is backwards compatible, so users of
2046 'matlab' name. The new code is backwards compatible, so users of
2042 all matplotlib versions are OK. Patch by J. Hunter.
2047 all matplotlib versions are OK. Patch by J. Hunter.
2043
2048
2044 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2049 * IPython/OInspect.py (Inspector.pinfo): Add to object? printing
2045 of __init__ docstrings for instances (class docstrings are already
2050 of __init__ docstrings for instances (class docstrings are already
2046 automatically printed). Instances with customized docstrings
2051 automatically printed). Instances with customized docstrings
2047 (indep. of the class) are also recognized and all 3 separate
2052 (indep. of the class) are also recognized and all 3 separate
2048 docstrings are printed (instance, class, constructor). After some
2053 docstrings are printed (instance, class, constructor). After some
2049 comments/suggestions by J. Hunter.
2054 comments/suggestions by J. Hunter.
2050
2055
2051 2004-12-05 Fernando Perez <fperez@colorado.edu>
2056 2004-12-05 Fernando Perez <fperez@colorado.edu>
2052
2057
2053 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2058 * IPython/iplib.py (MagicCompleter.complete): Remove annoying
2054 warnings when tab-completion fails and triggers an exception.
2059 warnings when tab-completion fails and triggers an exception.
2055
2060
2056 2004-12-03 Fernando Perez <fperez@colorado.edu>
2061 2004-12-03 Fernando Perez <fperez@colorado.edu>
2057
2062
2058 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2063 * IPython/Magic.py (magic_prun): Fix bug where an exception would
2059 be triggered when using 'run -p'. An incorrect option flag was
2064 be triggered when using 'run -p'. An incorrect option flag was
2060 being set ('d' instead of 'D').
2065 being set ('d' instead of 'D').
2061 (manpage): fix missing escaped \- sign.
2066 (manpage): fix missing escaped \- sign.
2062
2067
2063 2004-11-30 *** Released version 0.6.5
2068 2004-11-30 *** Released version 0.6.5
2064
2069
2065 2004-11-30 Fernando Perez <fperez@colorado.edu>
2070 2004-11-30 Fernando Perez <fperez@colorado.edu>
2066
2071
2067 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2072 * IPython/Magic.py (Magic.magic_run): Fix bug in breakpoint
2068 setting with -d option.
2073 setting with -d option.
2069
2074
2070 * setup.py (docfiles): Fix problem where the doc glob I was using
2075 * setup.py (docfiles): Fix problem where the doc glob I was using
2071 was COMPLETELY BROKEN. It was giving the right files by pure
2076 was COMPLETELY BROKEN. It was giving the right files by pure
2072 accident, but failed once I tried to include ipython.el. Note:
2077 accident, but failed once I tried to include ipython.el. Note:
2073 glob() does NOT allow you to do exclusion on multiple endings!
2078 glob() does NOT allow you to do exclusion on multiple endings!
2074
2079
2075 2004-11-29 Fernando Perez <fperez@colorado.edu>
2080 2004-11-29 Fernando Perez <fperez@colorado.edu>
2076
2081
2077 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2082 * IPython/usage.py (__doc__): cleaned up usage docstring, by using
2078 the manpage as the source. Better formatting & consistency.
2083 the manpage as the source. Better formatting & consistency.
2079
2084
2080 * IPython/Magic.py (magic_run): Added new -d option, to run
2085 * IPython/Magic.py (magic_run): Added new -d option, to run
2081 scripts under the control of the python pdb debugger. Note that
2086 scripts under the control of the python pdb debugger. Note that
2082 this required changing the %prun option -d to -D, to avoid a clash
2087 this required changing the %prun option -d to -D, to avoid a clash
2083 (since %run must pass options to %prun, and getopt is too dumb to
2088 (since %run must pass options to %prun, and getopt is too dumb to
2084 handle options with string values with embedded spaces). Thanks
2089 handle options with string values with embedded spaces). Thanks
2085 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2090 to a suggestion by Matthew Arnison <maffew-AT-cat.org.au>.
2086 (magic_who_ls): added type matching to %who and %whos, so that one
2091 (magic_who_ls): added type matching to %who and %whos, so that one
2087 can filter their output to only include variables of certain
2092 can filter their output to only include variables of certain
2088 types. Another suggestion by Matthew.
2093 types. Another suggestion by Matthew.
2089 (magic_whos): Added memory summaries in kb and Mb for arrays.
2094 (magic_whos): Added memory summaries in kb and Mb for arrays.
2090 (magic_who): Improve formatting (break lines every 9 vars).
2095 (magic_who): Improve formatting (break lines every 9 vars).
2091
2096
2092 2004-11-28 Fernando Perez <fperez@colorado.edu>
2097 2004-11-28 Fernando Perez <fperez@colorado.edu>
2093
2098
2094 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2099 * IPython/Logger.py (Logger.log): Fix bug in syncing the input
2095 cache when empty lines were present.
2100 cache when empty lines were present.
2096
2101
2097 2004-11-24 Fernando Perez <fperez@colorado.edu>
2102 2004-11-24 Fernando Perez <fperez@colorado.edu>
2098
2103
2099 * IPython/usage.py (__doc__): document the re-activated threading
2104 * IPython/usage.py (__doc__): document the re-activated threading
2100 options for WX and GTK.
2105 options for WX and GTK.
2101
2106
2102 2004-11-23 Fernando Perez <fperez@colorado.edu>
2107 2004-11-23 Fernando Perez <fperez@colorado.edu>
2103
2108
2104 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2109 * IPython/Shell.py (start): Added Prabhu's big patch to reactivate
2105 the -wthread and -gthread options, along with a new -tk one to try
2110 the -wthread and -gthread options, along with a new -tk one to try
2106 and coordinate Tk threading with wx/gtk. The tk support is very
2111 and coordinate Tk threading with wx/gtk. The tk support is very
2107 platform dependent, since it seems to require Tcl and Tk to be
2112 platform dependent, since it seems to require Tcl and Tk to be
2108 built with threads (Fedora1/2 appears NOT to have it, but in
2113 built with threads (Fedora1/2 appears NOT to have it, but in
2109 Prabhu's Debian boxes it works OK). But even with some Tk
2114 Prabhu's Debian boxes it works OK). But even with some Tk
2110 limitations, this is a great improvement.
2115 limitations, this is a great improvement.
2111
2116
2112 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2117 * IPython/Prompts.py (prompt_specials_color): Added \t for time
2113 info in user prompts. Patch by Prabhu.
2118 info in user prompts. Patch by Prabhu.
2114
2119
2115 2004-11-18 Fernando Perez <fperez@colorado.edu>
2120 2004-11-18 Fernando Perez <fperez@colorado.edu>
2116
2121
2117 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2122 * IPython/genutils.py (ask_yes_no): Add check for a max of 20
2118 EOFErrors and bail, to avoid infinite loops if a non-terminating
2123 EOFErrors and bail, to avoid infinite loops if a non-terminating
2119 file is fed into ipython. Patch submitted in issue 19 by user,
2124 file is fed into ipython. Patch submitted in issue 19 by user,
2120 many thanks.
2125 many thanks.
2121
2126
2122 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2127 * IPython/iplib.py (InteractiveShell.handle_auto): do NOT trigger
2123 autoquote/parens in continuation prompts, which can cause lots of
2128 autoquote/parens in continuation prompts, which can cause lots of
2124 problems. Closes roundup issue 20.
2129 problems. Closes roundup issue 20.
2125
2130
2126 2004-11-17 Fernando Perez <fperez@colorado.edu>
2131 2004-11-17 Fernando Perez <fperez@colorado.edu>
2127
2132
2128 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2133 * debian/control (Build-Depends-Indep): Fix dpatch dependency,
2129 reported as debian bug #280505. I'm not sure my local changelog
2134 reported as debian bug #280505. I'm not sure my local changelog
2130 entry has the proper debian format (Jack?).
2135 entry has the proper debian format (Jack?).
2131
2136
2132 2004-11-08 *** Released version 0.6.4
2137 2004-11-08 *** Released version 0.6.4
2133
2138
2134 2004-11-08 Fernando Perez <fperez@colorado.edu>
2139 2004-11-08 Fernando Perez <fperez@colorado.edu>
2135
2140
2136 * IPython/iplib.py (init_readline): Fix exit message for Windows
2141 * IPython/iplib.py (init_readline): Fix exit message for Windows
2137 when readline is active. Thanks to a report by Eric Jones
2142 when readline is active. Thanks to a report by Eric Jones
2138 <eric-AT-enthought.com>.
2143 <eric-AT-enthought.com>.
2139
2144
2140 2004-11-07 Fernando Perez <fperez@colorado.edu>
2145 2004-11-07 Fernando Perez <fperez@colorado.edu>
2141
2146
2142 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2147 * IPython/genutils.py (page): Add a trap for OSError exceptions,
2143 sometimes seen by win2k/cygwin users.
2148 sometimes seen by win2k/cygwin users.
2144
2149
2145 2004-11-06 Fernando Perez <fperez@colorado.edu>
2150 2004-11-06 Fernando Perez <fperez@colorado.edu>
2146
2151
2147 * IPython/iplib.py (interact): Change the handling of %Exit from
2152 * IPython/iplib.py (interact): Change the handling of %Exit from
2148 trying to propagate a SystemExit to an internal ipython flag.
2153 trying to propagate a SystemExit to an internal ipython flag.
2149 This is less elegant than using Python's exception mechanism, but
2154 This is less elegant than using Python's exception mechanism, but
2150 I can't get that to work reliably with threads, so under -pylab
2155 I can't get that to work reliably with threads, so under -pylab
2151 %Exit was hanging IPython. Cross-thread exception handling is
2156 %Exit was hanging IPython. Cross-thread exception handling is
2152 really a bitch. Thaks to a bug report by Stephen Walton
2157 really a bitch. Thaks to a bug report by Stephen Walton
2153 <stephen.walton-AT-csun.edu>.
2158 <stephen.walton-AT-csun.edu>.
2154
2159
2155 2004-11-04 Fernando Perez <fperez@colorado.edu>
2160 2004-11-04 Fernando Perez <fperez@colorado.edu>
2156
2161
2157 * IPython/iplib.py (raw_input_original): store a pointer to the
2162 * IPython/iplib.py (raw_input_original): store a pointer to the
2158 true raw_input to harden against code which can modify it
2163 true raw_input to harden against code which can modify it
2159 (wx.py.PyShell does this and would otherwise crash ipython).
2164 (wx.py.PyShell does this and would otherwise crash ipython).
2160 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2165 Thanks to a bug report by Jim Flowers <james.flowers-AT-lgx.com>.
2161
2166
2162 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2167 * IPython/Shell.py (MTInteractiveShell.runsource): Cleaner fix for
2163 Ctrl-C problem, which does not mess up the input line.
2168 Ctrl-C problem, which does not mess up the input line.
2164
2169
2165 2004-11-03 Fernando Perez <fperez@colorado.edu>
2170 2004-11-03 Fernando Perez <fperez@colorado.edu>
2166
2171
2167 * IPython/Release.py: Changed licensing to BSD, in all files.
2172 * IPython/Release.py: Changed licensing to BSD, in all files.
2168 (name): lowercase name for tarball/RPM release.
2173 (name): lowercase name for tarball/RPM release.
2169
2174
2170 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2175 * IPython/OInspect.py (getdoc): wrap inspect.getdoc() safely for
2171 use throughout ipython.
2176 use throughout ipython.
2172
2177
2173 * IPython/Magic.py (Magic._ofind): Switch to using the new
2178 * IPython/Magic.py (Magic._ofind): Switch to using the new
2174 OInspect.getdoc() function.
2179 OInspect.getdoc() function.
2175
2180
2176 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2181 * IPython/Shell.py (sigint_handler): Hack to ignore the execution
2177 of the line currently being canceled via Ctrl-C. It's extremely
2182 of the line currently being canceled via Ctrl-C. It's extremely
2178 ugly, but I don't know how to do it better (the problem is one of
2183 ugly, but I don't know how to do it better (the problem is one of
2179 handling cross-thread exceptions).
2184 handling cross-thread exceptions).
2180
2185
2181 2004-10-28 Fernando Perez <fperez@colorado.edu>
2186 2004-10-28 Fernando Perez <fperez@colorado.edu>
2182
2187
2183 * IPython/Shell.py (signal_handler): add signal handlers to trap
2188 * IPython/Shell.py (signal_handler): add signal handlers to trap
2184 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2189 SIGINT and SIGSEGV in threaded code properly. Thanks to a bug
2185 report by Francesc Alted.
2190 report by Francesc Alted.
2186
2191
2187 2004-10-21 Fernando Perez <fperez@colorado.edu>
2192 2004-10-21 Fernando Perez <fperez@colorado.edu>
2188
2193
2189 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2194 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Fix @
2190 to % for pysh syntax extensions.
2195 to % for pysh syntax extensions.
2191
2196
2192 2004-10-09 Fernando Perez <fperez@colorado.edu>
2197 2004-10-09 Fernando Perez <fperez@colorado.edu>
2193
2198
2194 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2199 * IPython/Magic.py (Magic.magic_whos): modify output of Numeric
2195 arrays to print a more useful summary, without calling str(arr).
2200 arrays to print a more useful summary, without calling str(arr).
2196 This avoids the problem of extremely lengthy computations which
2201 This avoids the problem of extremely lengthy computations which
2197 occur if arr is large, and appear to the user as a system lockup
2202 occur if arr is large, and appear to the user as a system lockup
2198 with 100% cpu activity. After a suggestion by Kristian Sandberg
2203 with 100% cpu activity. After a suggestion by Kristian Sandberg
2199 <Kristian.Sandberg@colorado.edu>.
2204 <Kristian.Sandberg@colorado.edu>.
2200 (Magic.__init__): fix bug in global magic escapes not being
2205 (Magic.__init__): fix bug in global magic escapes not being
2201 correctly set.
2206 correctly set.
2202
2207
2203 2004-10-08 Fernando Perez <fperez@colorado.edu>
2208 2004-10-08 Fernando Perez <fperez@colorado.edu>
2204
2209
2205 * IPython/Magic.py (__license__): change to absolute imports of
2210 * IPython/Magic.py (__license__): change to absolute imports of
2206 ipython's own internal packages, to start adapting to the absolute
2211 ipython's own internal packages, to start adapting to the absolute
2207 import requirement of PEP-328.
2212 import requirement of PEP-328.
2208
2213
2209 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2214 * IPython/genutils.py (__author__): Fix coding to utf-8 on all
2210 files, and standardize author/license marks through the Release
2215 files, and standardize author/license marks through the Release
2211 module instead of having per/file stuff (except for files with
2216 module instead of having per/file stuff (except for files with
2212 particular licenses, like the MIT/PSF-licensed codes).
2217 particular licenses, like the MIT/PSF-licensed codes).
2213
2218
2214 * IPython/Debugger.py: remove dead code for python 2.1
2219 * IPython/Debugger.py: remove dead code for python 2.1
2215
2220
2216 2004-10-04 Fernando Perez <fperez@colorado.edu>
2221 2004-10-04 Fernando Perez <fperez@colorado.edu>
2217
2222
2218 * IPython/iplib.py (ipmagic): New function for accessing magics
2223 * IPython/iplib.py (ipmagic): New function for accessing magics
2219 via a normal python function call.
2224 via a normal python function call.
2220
2225
2221 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2226 * IPython/Magic.py (Magic.magic_magic): Change the magic escape
2222 from '@' to '%', to accomodate the new @decorator syntax of python
2227 from '@' to '%', to accomodate the new @decorator syntax of python
2223 2.4.
2228 2.4.
2224
2229
2225 2004-09-29 Fernando Perez <fperez@colorado.edu>
2230 2004-09-29 Fernando Perez <fperez@colorado.edu>
2226
2231
2227 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2232 * IPython/Shell.py (MatplotlibShellBase.use): Added a wrapper to
2228 matplotlib.use to prevent running scripts which try to switch
2233 matplotlib.use to prevent running scripts which try to switch
2229 interactive backends from within ipython. This will just crash
2234 interactive backends from within ipython. This will just crash
2230 the python interpreter, so we can't allow it (but a detailed error
2235 the python interpreter, so we can't allow it (but a detailed error
2231 is given to the user).
2236 is given to the user).
2232
2237
2233 2004-09-28 Fernando Perez <fperez@colorado.edu>
2238 2004-09-28 Fernando Perez <fperez@colorado.edu>
2234
2239
2235 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2240 * IPython/Shell.py (MatplotlibShellBase.mplot_exec):
2236 matplotlib-related fixes so that using @run with non-matplotlib
2241 matplotlib-related fixes so that using @run with non-matplotlib
2237 scripts doesn't pop up spurious plot windows. This requires
2242 scripts doesn't pop up spurious plot windows. This requires
2238 matplotlib >= 0.63, where I had to make some changes as well.
2243 matplotlib >= 0.63, where I had to make some changes as well.
2239
2244
2240 * IPython/ipmaker.py (make_IPython): update version requirement to
2245 * IPython/ipmaker.py (make_IPython): update version requirement to
2241 python 2.2.
2246 python 2.2.
2242
2247
2243 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2248 * IPython/iplib.py (InteractiveShell.mainloop): Add an optional
2244 banner arg for embedded customization.
2249 banner arg for embedded customization.
2245
2250
2246 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2251 * IPython/Magic.py (Magic.__init__): big cleanup to remove all
2247 explicit uses of __IP as the IPython's instance name. Now things
2252 explicit uses of __IP as the IPython's instance name. Now things
2248 are properly handled via the shell.name value. The actual code
2253 are properly handled via the shell.name value. The actual code
2249 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2254 is a bit ugly b/c I'm doing it via a global in Magic.py, but this
2250 is much better than before. I'll clean things completely when the
2255 is much better than before. I'll clean things completely when the
2251 magic stuff gets a real overhaul.
2256 magic stuff gets a real overhaul.
2252
2257
2253 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2258 * ipython.1: small fixes, sent in by Jack Moffit. He also sent in
2254 minor changes to debian dir.
2259 minor changes to debian dir.
2255
2260
2256 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2261 * IPython/iplib.py (InteractiveShell.__init__): Fix adding a
2257 pointer to the shell itself in the interactive namespace even when
2262 pointer to the shell itself in the interactive namespace even when
2258 a user-supplied dict is provided. This is needed for embedding
2263 a user-supplied dict is provided. This is needed for embedding
2259 purposes (found by tests with Michel Sanner).
2264 purposes (found by tests with Michel Sanner).
2260
2265
2261 2004-09-27 Fernando Perez <fperez@colorado.edu>
2266 2004-09-27 Fernando Perez <fperez@colorado.edu>
2262
2267
2263 * IPython/UserConfig/ipythonrc: remove []{} from
2268 * IPython/UserConfig/ipythonrc: remove []{} from
2264 readline_remove_delims, so that things like [modname.<TAB> do
2269 readline_remove_delims, so that things like [modname.<TAB> do
2265 proper completion. This disables [].TAB, but that's a less common
2270 proper completion. This disables [].TAB, but that's a less common
2266 case than module names in list comprehensions, for example.
2271 case than module names in list comprehensions, for example.
2267 Thanks to a report by Andrea Riciputi.
2272 Thanks to a report by Andrea Riciputi.
2268
2273
2269 2004-09-09 Fernando Perez <fperez@colorado.edu>
2274 2004-09-09 Fernando Perez <fperez@colorado.edu>
2270
2275
2271 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2276 * IPython/Shell.py (IPShellGTK.mainloop): reorder to avoid
2272 blocking problems in win32 and osx. Fix by John.
2277 blocking problems in win32 and osx. Fix by John.
2273
2278
2274 2004-09-08 Fernando Perez <fperez@colorado.edu>
2279 2004-09-08 Fernando Perez <fperez@colorado.edu>
2275
2280
2276 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2281 * IPython/Shell.py (IPShellWX.OnInit): Fix output redirection bug
2277 for Win32 and OSX. Fix by John Hunter.
2282 for Win32 and OSX. Fix by John Hunter.
2278
2283
2279 2004-08-30 *** Released version 0.6.3
2284 2004-08-30 *** Released version 0.6.3
2280
2285
2281 2004-08-30 Fernando Perez <fperez@colorado.edu>
2286 2004-08-30 Fernando Perez <fperez@colorado.edu>
2282
2287
2283 * setup.py (isfile): Add manpages to list of dependent files to be
2288 * setup.py (isfile): Add manpages to list of dependent files to be
2284 updated.
2289 updated.
2285
2290
2286 2004-08-27 Fernando Perez <fperez@colorado.edu>
2291 2004-08-27 Fernando Perez <fperez@colorado.edu>
2287
2292
2288 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2293 * IPython/Shell.py (start): I've disabled -wthread and -gthread
2289 for now. They don't really work with standalone WX/GTK code
2294 for now. They don't really work with standalone WX/GTK code
2290 (though matplotlib IS working fine with both of those backends).
2295 (though matplotlib IS working fine with both of those backends).
2291 This will neeed much more testing. I disabled most things with
2296 This will neeed much more testing. I disabled most things with
2292 comments, so turning it back on later should be pretty easy.
2297 comments, so turning it back on later should be pretty easy.
2293
2298
2294 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2299 * IPython/iplib.py (InteractiveShell.__init__): Fix accidental
2295 autocalling of expressions like r'foo', by modifying the line
2300 autocalling of expressions like r'foo', by modifying the line
2296 split regexp. Closes
2301 split regexp. Closes
2297 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2302 http://www.scipy.net/roundup/ipython/issue18, reported by Nicholas
2298 Riley <ipythonbugs-AT-sabi.net>.
2303 Riley <ipythonbugs-AT-sabi.net>.
2299 (InteractiveShell.mainloop): honor --nobanner with banner
2304 (InteractiveShell.mainloop): honor --nobanner with banner
2300 extensions.
2305 extensions.
2301
2306
2302 * IPython/Shell.py: Significant refactoring of all classes, so
2307 * IPython/Shell.py: Significant refactoring of all classes, so
2303 that we can really support ALL matplotlib backends and threading
2308 that we can really support ALL matplotlib backends and threading
2304 models (John spotted a bug with Tk which required this). Now we
2309 models (John spotted a bug with Tk which required this). Now we
2305 should support single-threaded, WX-threads and GTK-threads, both
2310 should support single-threaded, WX-threads and GTK-threads, both
2306 for generic code and for matplotlib.
2311 for generic code and for matplotlib.
2307
2312
2308 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2313 * IPython/ipmaker.py (__call__): Changed -mpthread option to
2309 -pylab, to simplify things for users. Will also remove the pylab
2314 -pylab, to simplify things for users. Will also remove the pylab
2310 profile, since now all of matplotlib configuration is directly
2315 profile, since now all of matplotlib configuration is directly
2311 handled here. This also reduces startup time.
2316 handled here. This also reduces startup time.
2312
2317
2313 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2318 * IPython/Shell.py (IPShellGTK.run): Fixed bug where mainloop() of
2314 shell wasn't being correctly called. Also in IPShellWX.
2319 shell wasn't being correctly called. Also in IPShellWX.
2315
2320
2316 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2321 * IPython/iplib.py (InteractiveShell.__init__): Added option to
2317 fine-tune banner.
2322 fine-tune banner.
2318
2323
2319 * IPython/numutils.py (spike): Deprecate these spike functions,
2324 * IPython/numutils.py (spike): Deprecate these spike functions,
2320 delete (long deprecated) gnuplot_exec handler.
2325 delete (long deprecated) gnuplot_exec handler.
2321
2326
2322 2004-08-26 Fernando Perez <fperez@colorado.edu>
2327 2004-08-26 Fernando Perez <fperez@colorado.edu>
2323
2328
2324 * ipython.1: Update for threading options, plus some others which
2329 * ipython.1: Update for threading options, plus some others which
2325 were missing.
2330 were missing.
2326
2331
2327 * IPython/ipmaker.py (__call__): Added -wthread option for
2332 * IPython/ipmaker.py (__call__): Added -wthread option for
2328 wxpython thread handling. Make sure threading options are only
2333 wxpython thread handling. Make sure threading options are only
2329 valid at the command line.
2334 valid at the command line.
2330
2335
2331 * scripts/ipython: moved shell selection into a factory function
2336 * scripts/ipython: moved shell selection into a factory function
2332 in Shell.py, to keep the starter script to a minimum.
2337 in Shell.py, to keep the starter script to a minimum.
2333
2338
2334 2004-08-25 Fernando Perez <fperez@colorado.edu>
2339 2004-08-25 Fernando Perez <fperez@colorado.edu>
2335
2340
2336 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2341 * IPython/Shell.py (IPShellWX.wxexit): fixes to WX threading, by
2337 John. Along with some recent changes he made to matplotlib, the
2342 John. Along with some recent changes he made to matplotlib, the
2338 next versions of both systems should work very well together.
2343 next versions of both systems should work very well together.
2339
2344
2340 2004-08-24 Fernando Perez <fperez@colorado.edu>
2345 2004-08-24 Fernando Perez <fperez@colorado.edu>
2341
2346
2342 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2347 * IPython/Magic.py (Magic.magic_prun): cleanup some dead code. I
2343 tried to switch the profiling to using hotshot, but I'm getting
2348 tried to switch the profiling to using hotshot, but I'm getting
2344 strange errors from prof.runctx() there. I may be misreading the
2349 strange errors from prof.runctx() there. I may be misreading the
2345 docs, but it looks weird. For now the profiling code will
2350 docs, but it looks weird. For now the profiling code will
2346 continue to use the standard profiler.
2351 continue to use the standard profiler.
2347
2352
2348 2004-08-23 Fernando Perez <fperez@colorado.edu>
2353 2004-08-23 Fernando Perez <fperez@colorado.edu>
2349
2354
2350 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2355 * IPython/Shell.py (IPShellWX.__init__): Improvements to the WX
2351 threaded shell, by John Hunter. It's not quite ready yet, but
2356 threaded shell, by John Hunter. It's not quite ready yet, but
2352 close.
2357 close.
2353
2358
2354 2004-08-22 Fernando Perez <fperez@colorado.edu>
2359 2004-08-22 Fernando Perez <fperez@colorado.edu>
2355
2360
2356 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2361 * IPython/iplib.py (InteractiveShell.interact): tab cleanups, also
2357 in Magic and ultraTB.
2362 in Magic and ultraTB.
2358
2363
2359 * ipython.1: document threading options in manpage.
2364 * ipython.1: document threading options in manpage.
2360
2365
2361 * scripts/ipython: Changed name of -thread option to -gthread,
2366 * scripts/ipython: Changed name of -thread option to -gthread,
2362 since this is GTK specific. I want to leave the door open for a
2367 since this is GTK specific. I want to leave the door open for a
2363 -wthread option for WX, which will most likely be necessary. This
2368 -wthread option for WX, which will most likely be necessary. This
2364 change affects usage and ipmaker as well.
2369 change affects usage and ipmaker as well.
2365
2370
2366 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2371 * IPython/Shell.py (matplotlib_shell): Add a factory function to
2367 handle the matplotlib shell issues. Code by John Hunter
2372 handle the matplotlib shell issues. Code by John Hunter
2368 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2373 <jdhunter-AT-nitace.bsd.uchicago.edu>.
2369 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2374 (IPShellMatplotlibWX.__init__): Rudimentary WX support. It's
2370 broken (and disabled for end users) for now, but it puts the
2375 broken (and disabled for end users) for now, but it puts the
2371 infrastructure in place.
2376 infrastructure in place.
2372
2377
2373 2004-08-21 Fernando Perez <fperez@colorado.edu>
2378 2004-08-21 Fernando Perez <fperez@colorado.edu>
2374
2379
2375 * ipythonrc-pylab: Add matplotlib support.
2380 * ipythonrc-pylab: Add matplotlib support.
2376
2381
2377 * matplotlib_config.py: new files for matplotlib support, part of
2382 * matplotlib_config.py: new files for matplotlib support, part of
2378 the pylab profile.
2383 the pylab profile.
2379
2384
2380 * IPython/usage.py (__doc__): documented the threading options.
2385 * IPython/usage.py (__doc__): documented the threading options.
2381
2386
2382 2004-08-20 Fernando Perez <fperez@colorado.edu>
2387 2004-08-20 Fernando Perez <fperez@colorado.edu>
2383
2388
2384 * ipython: Modified the main calling routine to handle the -thread
2389 * ipython: Modified the main calling routine to handle the -thread
2385 and -mpthread options. This needs to be done as a top-level hack,
2390 and -mpthread options. This needs to be done as a top-level hack,
2386 because it determines which class to instantiate for IPython
2391 because it determines which class to instantiate for IPython
2387 itself.
2392 itself.
2388
2393
2389 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2394 * IPython/Shell.py (MTInteractiveShell.__init__): New set of
2390 classes to support multithreaded GTK operation without blocking,
2395 classes to support multithreaded GTK operation without blocking,
2391 and matplotlib with all backends. This is a lot of still very
2396 and matplotlib with all backends. This is a lot of still very
2392 experimental code, and threads are tricky. So it may still have a
2397 experimental code, and threads are tricky. So it may still have a
2393 few rough edges... This code owes a lot to
2398 few rough edges... This code owes a lot to
2394 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2399 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65109, by
2395 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2400 Brian # McErlean and John Finlay, to Antoon Pardon for fixes, and
2396 to John Hunter for all the matplotlib work.
2401 to John Hunter for all the matplotlib work.
2397
2402
2398 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2403 * IPython/ipmaker.py (__call__): Added -thread and -mpthread
2399 options for gtk thread and matplotlib support.
2404 options for gtk thread and matplotlib support.
2400
2405
2401 2004-08-16 Fernando Perez <fperez@colorado.edu>
2406 2004-08-16 Fernando Perez <fperez@colorado.edu>
2402
2407
2403 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2408 * IPython/iplib.py (InteractiveShell.__init__): don't trigger
2404 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2409 autocall for things like p*q,p/q,p+q,p-q, when p is callable. Bug
2405 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2410 reported by Stephen Walton <stephen.walton-AT-csun.edu>.
2406
2411
2407 2004-08-11 Fernando Perez <fperez@colorado.edu>
2412 2004-08-11 Fernando Perez <fperez@colorado.edu>
2408
2413
2409 * setup.py (isfile): Fix build so documentation gets updated for
2414 * setup.py (isfile): Fix build so documentation gets updated for
2410 rpms (it was only done for .tgz builds).
2415 rpms (it was only done for .tgz builds).
2411
2416
2412 2004-08-10 Fernando Perez <fperez@colorado.edu>
2417 2004-08-10 Fernando Perez <fperez@colorado.edu>
2413
2418
2414 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2419 * genutils.py (Term): Fix misspell of stdin stream (sin->cin).
2415
2420
2416 * iplib.py : Silence syntax error exceptions in tab-completion.
2421 * iplib.py : Silence syntax error exceptions in tab-completion.
2417
2422
2418 2004-08-05 Fernando Perez <fperez@colorado.edu>
2423 2004-08-05 Fernando Perez <fperez@colorado.edu>
2419
2424
2420 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2425 * IPython/Prompts.py (Prompt2.set_colors): Fix incorrectly set
2421 'color off' mark for continuation prompts. This was causing long
2426 'color off' mark for continuation prompts. This was causing long
2422 continuation lines to mis-wrap.
2427 continuation lines to mis-wrap.
2423
2428
2424 2004-08-01 Fernando Perez <fperez@colorado.edu>
2429 2004-08-01 Fernando Perez <fperez@colorado.edu>
2425
2430
2426 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2431 * IPython/ipmaker.py (make_IPython): Allow the shell class used
2427 for building ipython to be a parameter. All this is necessary
2432 for building ipython to be a parameter. All this is necessary
2428 right now to have a multithreaded version, but this insane
2433 right now to have a multithreaded version, but this insane
2429 non-design will be cleaned up soon. For now, it's a hack that
2434 non-design will be cleaned up soon. For now, it's a hack that
2430 works.
2435 works.
2431
2436
2432 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2437 * IPython/Shell.py (IPShell.__init__): Stop using mutable default
2433 args in various places. No bugs so far, but it's a dangerous
2438 args in various places. No bugs so far, but it's a dangerous
2434 practice.
2439 practice.
2435
2440
2436 2004-07-31 Fernando Perez <fperez@colorado.edu>
2441 2004-07-31 Fernando Perez <fperez@colorado.edu>
2437
2442
2438 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2443 * IPython/iplib.py (complete): ignore SyntaxError exceptions to
2439 fix completion of files with dots in their names under most
2444 fix completion of files with dots in their names under most
2440 profiles (pysh was OK because the completion order is different).
2445 profiles (pysh was OK because the completion order is different).
2441
2446
2442 2004-07-27 Fernando Perez <fperez@colorado.edu>
2447 2004-07-27 Fernando Perez <fperez@colorado.edu>
2443
2448
2444 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2449 * IPython/iplib.py (InteractiveShell.__init__): build dict of
2445 keywords manually, b/c the one in keyword.py was removed in python
2450 keywords manually, b/c the one in keyword.py was removed in python
2446 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2451 2.4. Patch by Anakim Border <aborder-AT-users.sourceforge.net>.
2447 This is NOT a bug under python 2.3 and earlier.
2452 This is NOT a bug under python 2.3 and earlier.
2448
2453
2449 2004-07-26 Fernando Perez <fperez@colorado.edu>
2454 2004-07-26 Fernando Perez <fperez@colorado.edu>
2450
2455
2451 * IPython/ultraTB.py (VerboseTB.text): Add another
2456 * IPython/ultraTB.py (VerboseTB.text): Add another
2452 linecache.checkcache() call to try to prevent inspect.py from
2457 linecache.checkcache() call to try to prevent inspect.py from
2453 crashing under python 2.3. I think this fixes
2458 crashing under python 2.3. I think this fixes
2454 http://www.scipy.net/roundup/ipython/issue17.
2459 http://www.scipy.net/roundup/ipython/issue17.
2455
2460
2456 2004-07-26 *** Released version 0.6.2
2461 2004-07-26 *** Released version 0.6.2
2457
2462
2458 2004-07-26 Fernando Perez <fperez@colorado.edu>
2463 2004-07-26 Fernando Perez <fperez@colorado.edu>
2459
2464
2460 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2465 * IPython/Magic.py (Magic.magic_cd): Fix bug where 'cd -N' would
2461 fail for any number.
2466 fail for any number.
2462 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2467 (Magic.magic_bookmark): Fix bug where 'bookmark -l' would fail for
2463 empty bookmarks.
2468 empty bookmarks.
2464
2469
2465 2004-07-26 *** Released version 0.6.1
2470 2004-07-26 *** Released version 0.6.1
2466
2471
2467 2004-07-26 Fernando Perez <fperez@colorado.edu>
2472 2004-07-26 Fernando Perez <fperez@colorado.edu>
2468
2473
2469 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2474 * ipython_win_post_install.py (run): Added pysh shortcut for Windows.
2470
2475
2471 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2476 * IPython/iplib.py (protect_filename): Applied Ville's patch for
2472 escaping '()[]{}' in filenames.
2477 escaping '()[]{}' in filenames.
2473
2478
2474 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2479 * IPython/Magic.py (shlex_split): Fix handling of '*' and '?' for
2475 Python 2.2 users who lack a proper shlex.split.
2480 Python 2.2 users who lack a proper shlex.split.
2476
2481
2477 2004-07-19 Fernando Perez <fperez@colorado.edu>
2482 2004-07-19 Fernando Perez <fperez@colorado.edu>
2478
2483
2479 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2484 * IPython/iplib.py (InteractiveShell.init_readline): Add support
2480 for reading readline's init file. I follow the normal chain:
2485 for reading readline's init file. I follow the normal chain:
2481 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2486 $INPUTRC is honored, otherwise ~/.inputrc is used. Thanks to a
2482 report by Mike Heeter. This closes
2487 report by Mike Heeter. This closes
2483 http://www.scipy.net/roundup/ipython/issue16.
2488 http://www.scipy.net/roundup/ipython/issue16.
2484
2489
2485 2004-07-18 Fernando Perez <fperez@colorado.edu>
2490 2004-07-18 Fernando Perez <fperez@colorado.edu>
2486
2491
2487 * IPython/iplib.py (__init__): Add better handling of '\' under
2492 * IPython/iplib.py (__init__): Add better handling of '\' under
2488 Win32 for filenames. After a patch by Ville.
2493 Win32 for filenames. After a patch by Ville.
2489
2494
2490 2004-07-17 Fernando Perez <fperez@colorado.edu>
2495 2004-07-17 Fernando Perez <fperez@colorado.edu>
2491
2496
2492 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2497 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
2493 autocalling would be triggered for 'foo is bar' if foo is
2498 autocalling would be triggered for 'foo is bar' if foo is
2494 callable. I also cleaned up the autocall detection code to use a
2499 callable. I also cleaned up the autocall detection code to use a
2495 regexp, which is faster. Bug reported by Alexander Schmolck.
2500 regexp, which is faster. Bug reported by Alexander Schmolck.
2496
2501
2497 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2502 * IPython/Magic.py (Magic.magic_pinfo): Fix bug where strings with
2498 '?' in them would confuse the help system. Reported by Alex
2503 '?' in them would confuse the help system. Reported by Alex
2499 Schmolck.
2504 Schmolck.
2500
2505
2501 2004-07-16 Fernando Perez <fperez@colorado.edu>
2506 2004-07-16 Fernando Perez <fperez@colorado.edu>
2502
2507
2503 * IPython/GnuplotInteractive.py (__all__): added plot2.
2508 * IPython/GnuplotInteractive.py (__all__): added plot2.
2504
2509
2505 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2510 * IPython/Gnuplot2.py (Gnuplot.plot2): added new function for
2506 plotting dictionaries, lists or tuples of 1d arrays.
2511 plotting dictionaries, lists or tuples of 1d arrays.
2507
2512
2508 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2513 * IPython/Magic.py (Magic.magic_hist): small clenaups and
2509 optimizations.
2514 optimizations.
2510
2515
2511 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2516 * IPython/iplib.py:Remove old Changelog info for cleanup. This is
2512 the information which was there from Janko's original IPP code:
2517 the information which was there from Janko's original IPP code:
2513
2518
2514 03.05.99 20:53 porto.ifm.uni-kiel.de
2519 03.05.99 20:53 porto.ifm.uni-kiel.de
2515 --Started changelog.
2520 --Started changelog.
2516 --make clear do what it say it does
2521 --make clear do what it say it does
2517 --added pretty output of lines from inputcache
2522 --added pretty output of lines from inputcache
2518 --Made Logger a mixin class, simplifies handling of switches
2523 --Made Logger a mixin class, simplifies handling of switches
2519 --Added own completer class. .string<TAB> expands to last history
2524 --Added own completer class. .string<TAB> expands to last history
2520 line which starts with string. The new expansion is also present
2525 line which starts with string. The new expansion is also present
2521 with Ctrl-r from the readline library. But this shows, who this
2526 with Ctrl-r from the readline library. But this shows, who this
2522 can be done for other cases.
2527 can be done for other cases.
2523 --Added convention that all shell functions should accept a
2528 --Added convention that all shell functions should accept a
2524 parameter_string This opens the door for different behaviour for
2529 parameter_string This opens the door for different behaviour for
2525 each function. @cd is a good example of this.
2530 each function. @cd is a good example of this.
2526
2531
2527 04.05.99 12:12 porto.ifm.uni-kiel.de
2532 04.05.99 12:12 porto.ifm.uni-kiel.de
2528 --added logfile rotation
2533 --added logfile rotation
2529 --added new mainloop method which freezes first the namespace
2534 --added new mainloop method which freezes first the namespace
2530
2535
2531 07.05.99 21:24 porto.ifm.uni-kiel.de
2536 07.05.99 21:24 porto.ifm.uni-kiel.de
2532 --added the docreader classes. Now there is a help system.
2537 --added the docreader classes. Now there is a help system.
2533 -This is only a first try. Currently it's not easy to put new
2538 -This is only a first try. Currently it's not easy to put new
2534 stuff in the indices. But this is the way to go. Info would be
2539 stuff in the indices. But this is the way to go. Info would be
2535 better, but HTML is every where and not everybody has an info
2540 better, but HTML is every where and not everybody has an info
2536 system installed and it's not so easy to change html-docs to info.
2541 system installed and it's not so easy to change html-docs to info.
2537 --added global logfile option
2542 --added global logfile option
2538 --there is now a hook for object inspection method pinfo needs to
2543 --there is now a hook for object inspection method pinfo needs to
2539 be provided for this. Can be reached by two '??'.
2544 be provided for this. Can be reached by two '??'.
2540
2545
2541 08.05.99 20:51 porto.ifm.uni-kiel.de
2546 08.05.99 20:51 porto.ifm.uni-kiel.de
2542 --added a README
2547 --added a README
2543 --bug in rc file. Something has changed so functions in the rc
2548 --bug in rc file. Something has changed so functions in the rc
2544 file need to reference the shell and not self. Not clear if it's a
2549 file need to reference the shell and not self. Not clear if it's a
2545 bug or feature.
2550 bug or feature.
2546 --changed rc file for new behavior
2551 --changed rc file for new behavior
2547
2552
2548 2004-07-15 Fernando Perez <fperez@colorado.edu>
2553 2004-07-15 Fernando Perez <fperez@colorado.edu>
2549
2554
2550 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2555 * IPython/Logger.py (Logger.log): fixed recent bug where the input
2551 cache was falling out of sync in bizarre manners when multi-line
2556 cache was falling out of sync in bizarre manners when multi-line
2552 input was present. Minor optimizations and cleanup.
2557 input was present. Minor optimizations and cleanup.
2553
2558
2554 (Logger): Remove old Changelog info for cleanup. This is the
2559 (Logger): Remove old Changelog info for cleanup. This is the
2555 information which was there from Janko's original code:
2560 information which was there from Janko's original code:
2556
2561
2557 Changes to Logger: - made the default log filename a parameter
2562 Changes to Logger: - made the default log filename a parameter
2558
2563
2559 - put a check for lines beginning with !@? in log(). Needed
2564 - put a check for lines beginning with !@? in log(). Needed
2560 (even if the handlers properly log their lines) for mid-session
2565 (even if the handlers properly log their lines) for mid-session
2561 logging activation to work properly. Without this, lines logged
2566 logging activation to work properly. Without this, lines logged
2562 in mid session, which get read from the cache, would end up
2567 in mid session, which get read from the cache, would end up
2563 'bare' (with !@? in the open) in the log. Now they are caught
2568 'bare' (with !@? in the open) in the log. Now they are caught
2564 and prepended with a #.
2569 and prepended with a #.
2565
2570
2566 * IPython/iplib.py (InteractiveShell.init_readline): added check
2571 * IPython/iplib.py (InteractiveShell.init_readline): added check
2567 in case MagicCompleter fails to be defined, so we don't crash.
2572 in case MagicCompleter fails to be defined, so we don't crash.
2568
2573
2569 2004-07-13 Fernando Perez <fperez@colorado.edu>
2574 2004-07-13 Fernando Perez <fperez@colorado.edu>
2570
2575
2571 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2576 * IPython/Gnuplot2.py (Gnuplot.hardcopy): add automatic generation
2572 of EPS if the requested filename ends in '.eps'.
2577 of EPS if the requested filename ends in '.eps'.
2573
2578
2574 2004-07-04 Fernando Perez <fperez@colorado.edu>
2579 2004-07-04 Fernando Perez <fperez@colorado.edu>
2575
2580
2576 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2581 * IPython/iplib.py (InteractiveShell.handle_shell_escape): Fix
2577 escaping of quotes when calling the shell.
2582 escaping of quotes when calling the shell.
2578
2583
2579 2004-07-02 Fernando Perez <fperez@colorado.edu>
2584 2004-07-02 Fernando Perez <fperez@colorado.edu>
2580
2585
2581 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2586 * IPython/Prompts.py (CachedOutput.update): Fix problem with
2582 gettext not working because we were clobbering '_'. Fixes
2587 gettext not working because we were clobbering '_'. Fixes
2583 http://www.scipy.net/roundup/ipython/issue6.
2588 http://www.scipy.net/roundup/ipython/issue6.
2584
2589
2585 2004-07-01 Fernando Perez <fperez@colorado.edu>
2590 2004-07-01 Fernando Perez <fperez@colorado.edu>
2586
2591
2587 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2592 * IPython/Magic.py (Magic.magic_cd): integrated bookmark handling
2588 into @cd. Patch by Ville.
2593 into @cd. Patch by Ville.
2589
2594
2590 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2595 * IPython/iplib.py (InteractiveShell.post_config_initialization):
2591 new function to store things after ipmaker runs. Patch by Ville.
2596 new function to store things after ipmaker runs. Patch by Ville.
2592 Eventually this will go away once ipmaker is removed and the class
2597 Eventually this will go away once ipmaker is removed and the class
2593 gets cleaned up, but for now it's ok. Key functionality here is
2598 gets cleaned up, but for now it's ok. Key functionality here is
2594 the addition of the persistent storage mechanism, a dict for
2599 the addition of the persistent storage mechanism, a dict for
2595 keeping data across sessions (for now just bookmarks, but more can
2600 keeping data across sessions (for now just bookmarks, but more can
2596 be implemented later).
2601 be implemented later).
2597
2602
2598 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2603 * IPython/Magic.py (Magic.magic_bookmark): New bookmark system,
2599 persistent across sections. Patch by Ville, I modified it
2604 persistent across sections. Patch by Ville, I modified it
2600 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2605 soemwhat to allow bookmarking arbitrary dirs other than CWD. Also
2601 added a '-l' option to list all bookmarks.
2606 added a '-l' option to list all bookmarks.
2602
2607
2603 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2608 * IPython/iplib.py (InteractiveShell.atexit_operations): new
2604 center for cleanup. Registered with atexit.register(). I moved
2609 center for cleanup. Registered with atexit.register(). I moved
2605 here the old exit_cleanup(). After a patch by Ville.
2610 here the old exit_cleanup(). After a patch by Ville.
2606
2611
2607 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2612 * IPython/Magic.py (get_py_filename): added '~' to the accepted
2608 characters in the hacked shlex_split for python 2.2.
2613 characters in the hacked shlex_split for python 2.2.
2609
2614
2610 * IPython/iplib.py (file_matches): more fixes to filenames with
2615 * IPython/iplib.py (file_matches): more fixes to filenames with
2611 whitespace in them. It's not perfect, but limitations in python's
2616 whitespace in them. It's not perfect, but limitations in python's
2612 readline make it impossible to go further.
2617 readline make it impossible to go further.
2613
2618
2614 2004-06-29 Fernando Perez <fperez@colorado.edu>
2619 2004-06-29 Fernando Perez <fperez@colorado.edu>
2615
2620
2616 * IPython/iplib.py (file_matches): escape whitespace correctly in
2621 * IPython/iplib.py (file_matches): escape whitespace correctly in
2617 filename completions. Bug reported by Ville.
2622 filename completions. Bug reported by Ville.
2618
2623
2619 2004-06-28 Fernando Perez <fperez@colorado.edu>
2624 2004-06-28 Fernando Perez <fperez@colorado.edu>
2620
2625
2621 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2626 * IPython/ipmaker.py (__call__): Added per-profile histories. Now
2622 the history file will be called 'history-PROFNAME' (or just
2627 the history file will be called 'history-PROFNAME' (or just
2623 'history' if no profile is loaded). I was getting annoyed at
2628 'history' if no profile is loaded). I was getting annoyed at
2624 getting my Numerical work history clobbered by pysh sessions.
2629 getting my Numerical work history clobbered by pysh sessions.
2625
2630
2626 * IPython/iplib.py (InteractiveShell.__init__): Internal
2631 * IPython/iplib.py (InteractiveShell.__init__): Internal
2627 getoutputerror() function so that we can honor the system_verbose
2632 getoutputerror() function so that we can honor the system_verbose
2628 flag for _all_ system calls. I also added escaping of #
2633 flag for _all_ system calls. I also added escaping of #
2629 characters here to avoid confusing Itpl.
2634 characters here to avoid confusing Itpl.
2630
2635
2631 * IPython/Magic.py (shlex_split): removed call to shell in
2636 * IPython/Magic.py (shlex_split): removed call to shell in
2632 parse_options and replaced it with shlex.split(). The annoying
2637 parse_options and replaced it with shlex.split(). The annoying
2633 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2638 part was that in Python 2.2, shlex.split() doesn't exist, so I had
2634 to backport it from 2.3, with several frail hacks (the shlex
2639 to backport it from 2.3, with several frail hacks (the shlex
2635 module is rather limited in 2.2). Thanks to a suggestion by Ville
2640 module is rather limited in 2.2). Thanks to a suggestion by Ville
2636 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2641 Vainio <vivainio@kolumbus.fi>. For Python 2.3 there should be no
2637 problem.
2642 problem.
2638
2643
2639 (Magic.magic_system_verbose): new toggle to print the actual
2644 (Magic.magic_system_verbose): new toggle to print the actual
2640 system calls made by ipython. Mainly for debugging purposes.
2645 system calls made by ipython. Mainly for debugging purposes.
2641
2646
2642 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2647 * IPython/GnuplotRuntime.py (gnu_out): fix bug for cygwin, which
2643 doesn't support persistence. Reported (and fix suggested) by
2648 doesn't support persistence. Reported (and fix suggested) by
2644 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2649 Travis Caldwell <travis_caldwell2000@yahoo.com>.
2645
2650
2646 2004-06-26 Fernando Perez <fperez@colorado.edu>
2651 2004-06-26 Fernando Perez <fperez@colorado.edu>
2647
2652
2648 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2653 * IPython/Logger.py (Logger.log): fix to handle correctly empty
2649 continue prompts.
2654 continue prompts.
2650
2655
2651 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2656 * IPython/Extensions/InterpreterExec.py (pysh): moved the pysh()
2652 function (basically a big docstring) and a few more things here to
2657 function (basically a big docstring) and a few more things here to
2653 speedup startup. pysh.py is now very lightweight. We want because
2658 speedup startup. pysh.py is now very lightweight. We want because
2654 it gets execfile'd, while InterpreterExec gets imported, so
2659 it gets execfile'd, while InterpreterExec gets imported, so
2655 byte-compilation saves time.
2660 byte-compilation saves time.
2656
2661
2657 2004-06-25 Fernando Perez <fperez@colorado.edu>
2662 2004-06-25 Fernando Perez <fperez@colorado.edu>
2658
2663
2659 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2664 * IPython/Magic.py (Magic.magic_cd): Fixed to restore usage of 'cd
2660 -NUM', which was recently broken.
2665 -NUM', which was recently broken.
2661
2666
2662 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2667 * IPython/iplib.py (InteractiveShell.handle_shell_escape): allow !
2663 in multi-line input (but not !!, which doesn't make sense there).
2668 in multi-line input (but not !!, which doesn't make sense there).
2664
2669
2665 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2670 * IPython/UserConfig/ipythonrc: made autoindent on by default.
2666 It's just too useful, and people can turn it off in the less
2671 It's just too useful, and people can turn it off in the less
2667 common cases where it's a problem.
2672 common cases where it's a problem.
2668
2673
2669 2004-06-24 Fernando Perez <fperez@colorado.edu>
2674 2004-06-24 Fernando Perez <fperez@colorado.edu>
2670
2675
2671 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2676 * IPython/iplib.py (InteractiveShell._prefilter): big change -
2672 special syntaxes (like alias calling) is now allied in multi-line
2677 special syntaxes (like alias calling) is now allied in multi-line
2673 input. This is still _very_ experimental, but it's necessary for
2678 input. This is still _very_ experimental, but it's necessary for
2674 efficient shell usage combining python looping syntax with system
2679 efficient shell usage combining python looping syntax with system
2675 calls. For now it's restricted to aliases, I don't think it
2680 calls. For now it's restricted to aliases, I don't think it
2676 really even makes sense to have this for magics.
2681 really even makes sense to have this for magics.
2677
2682
2678 2004-06-23 Fernando Perez <fperez@colorado.edu>
2683 2004-06-23 Fernando Perez <fperez@colorado.edu>
2679
2684
2680 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2685 * IPython/Extensions/InterpreterExec.py (prefilter_shell): Added
2681 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2686 $var=cmd <=> @sc var=cmd and $$var=cmd <=> @sc -l var=cmd.
2682
2687
2683 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2688 * IPython/Magic.py (Magic.magic_rehashx): modified to handle
2684 extensions under Windows (after code sent by Gary Bishop). The
2689 extensions under Windows (after code sent by Gary Bishop). The
2685 extensions considered 'executable' are stored in IPython's rc
2690 extensions considered 'executable' are stored in IPython's rc
2686 structure as win_exec_ext.
2691 structure as win_exec_ext.
2687
2692
2688 * IPython/genutils.py (shell): new function, like system() but
2693 * IPython/genutils.py (shell): new function, like system() but
2689 without return value. Very useful for interactive shell work.
2694 without return value. Very useful for interactive shell work.
2690
2695
2691 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2696 * IPython/Magic.py (Magic.magic_unalias): New @unalias function to
2692 delete aliases.
2697 delete aliases.
2693
2698
2694 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2699 * IPython/iplib.py (InteractiveShell.alias_table_update): make
2695 sure that the alias table doesn't contain python keywords.
2700 sure that the alias table doesn't contain python keywords.
2696
2701
2697 2004-06-21 Fernando Perez <fperez@colorado.edu>
2702 2004-06-21 Fernando Perez <fperez@colorado.edu>
2698
2703
2699 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2704 * IPython/Magic.py (Magic.magic_rehash): Fix crash when
2700 non-existent items are found in $PATH. Reported by Thorsten.
2705 non-existent items are found in $PATH. Reported by Thorsten.
2701
2706
2702 2004-06-20 Fernando Perez <fperez@colorado.edu>
2707 2004-06-20 Fernando Perez <fperez@colorado.edu>
2703
2708
2704 * IPython/iplib.py (complete): modified the completer so that the
2709 * IPython/iplib.py (complete): modified the completer so that the
2705 order of priorities can be easily changed at runtime.
2710 order of priorities can be easily changed at runtime.
2706
2711
2707 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2712 * IPython/Extensions/InterpreterExec.py (prefilter_shell):
2708 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2713 Modified to auto-execute all lines beginning with '~', '/' or '.'.
2709
2714
2710 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2715 * IPython/Magic.py (Magic.magic_sx): modified @sc and @sx to
2711 expand Python variables prepended with $ in all system calls. The
2716 expand Python variables prepended with $ in all system calls. The
2712 same was done to InteractiveShell.handle_shell_escape. Now all
2717 same was done to InteractiveShell.handle_shell_escape. Now all
2713 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2718 system access mechanisms (!, !!, @sc, @sx and aliases) allow the
2714 expansion of python variables and expressions according to the
2719 expansion of python variables and expressions according to the
2715 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2720 syntax of PEP-215 - http://www.python.org/peps/pep-0215.html.
2716
2721
2717 Though PEP-215 has been rejected, a similar (but simpler) one
2722 Though PEP-215 has been rejected, a similar (but simpler) one
2718 seems like it will go into Python 2.4, PEP-292 -
2723 seems like it will go into Python 2.4, PEP-292 -
2719 http://www.python.org/peps/pep-0292.html.
2724 http://www.python.org/peps/pep-0292.html.
2720
2725
2721 I'll keep the full syntax of PEP-215, since IPython has since the
2726 I'll keep the full syntax of PEP-215, since IPython has since the
2722 start used Ka-Ping Yee's reference implementation discussed there
2727 start used Ka-Ping Yee's reference implementation discussed there
2723 (Itpl), and I actually like the powerful semantics it offers.
2728 (Itpl), and I actually like the powerful semantics it offers.
2724
2729
2725 In order to access normal shell variables, the $ has to be escaped
2730 In order to access normal shell variables, the $ has to be escaped
2726 via an extra $. For example:
2731 via an extra $. For example:
2727
2732
2728 In [7]: PATH='a python variable'
2733 In [7]: PATH='a python variable'
2729
2734
2730 In [8]: !echo $PATH
2735 In [8]: !echo $PATH
2731 a python variable
2736 a python variable
2732
2737
2733 In [9]: !echo $$PATH
2738 In [9]: !echo $$PATH
2734 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2739 /usr/local/lf9560/bin:/usr/local/intel/compiler70/ia32/bin:...
2735
2740
2736 (Magic.parse_options): escape $ so the shell doesn't evaluate
2741 (Magic.parse_options): escape $ so the shell doesn't evaluate
2737 things prematurely.
2742 things prematurely.
2738
2743
2739 * IPython/iplib.py (InteractiveShell.call_alias): added the
2744 * IPython/iplib.py (InteractiveShell.call_alias): added the
2740 ability for aliases to expand python variables via $.
2745 ability for aliases to expand python variables via $.
2741
2746
2742 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2747 * IPython/Magic.py (Magic.magic_rehash): based on the new alias
2743 system, now there's a @rehash/@rehashx pair of magics. These work
2748 system, now there's a @rehash/@rehashx pair of magics. These work
2744 like the csh rehash command, and can be invoked at any time. They
2749 like the csh rehash command, and can be invoked at any time. They
2745 build a table of aliases to everything in the user's $PATH
2750 build a table of aliases to everything in the user's $PATH
2746 (@rehash uses everything, @rehashx is slower but only adds
2751 (@rehash uses everything, @rehashx is slower but only adds
2747 executable files). With this, the pysh.py-based shell profile can
2752 executable files). With this, the pysh.py-based shell profile can
2748 now simply call rehash upon startup, and full access to all
2753 now simply call rehash upon startup, and full access to all
2749 programs in the user's path is obtained.
2754 programs in the user's path is obtained.
2750
2755
2751 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2756 * IPython/iplib.py (InteractiveShell.call_alias): The new alias
2752 functionality is now fully in place. I removed the old dynamic
2757 functionality is now fully in place. I removed the old dynamic
2753 code generation based approach, in favor of a much lighter one
2758 code generation based approach, in favor of a much lighter one
2754 based on a simple dict. The advantage is that this allows me to
2759 based on a simple dict. The advantage is that this allows me to
2755 now have thousands of aliases with negligible cost (unthinkable
2760 now have thousands of aliases with negligible cost (unthinkable
2756 with the old system).
2761 with the old system).
2757
2762
2758 2004-06-19 Fernando Perez <fperez@colorado.edu>
2763 2004-06-19 Fernando Perez <fperez@colorado.edu>
2759
2764
2760 * IPython/iplib.py (__init__): extended MagicCompleter class to
2765 * IPython/iplib.py (__init__): extended MagicCompleter class to
2761 also complete (last in priority) on user aliases.
2766 also complete (last in priority) on user aliases.
2762
2767
2763 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2768 * IPython/Itpl.py (Itpl.__str__): fixed order of globals/locals in
2764 call to eval.
2769 call to eval.
2765 (ItplNS.__init__): Added a new class which functions like Itpl,
2770 (ItplNS.__init__): Added a new class which functions like Itpl,
2766 but allows configuring the namespace for the evaluation to occur
2771 but allows configuring the namespace for the evaluation to occur
2767 in.
2772 in.
2768
2773
2769 2004-06-18 Fernando Perez <fperez@colorado.edu>
2774 2004-06-18 Fernando Perez <fperez@colorado.edu>
2770
2775
2771 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2776 * IPython/iplib.py (InteractiveShell.runcode): modify to print a
2772 better message when 'exit' or 'quit' are typed (a common newbie
2777 better message when 'exit' or 'quit' are typed (a common newbie
2773 confusion).
2778 confusion).
2774
2779
2775 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2780 * IPython/Magic.py (Magic.magic_colors): Added the runtime color
2776 check for Windows users.
2781 check for Windows users.
2777
2782
2778 * IPython/iplib.py (InteractiveShell.user_setup): removed
2783 * IPython/iplib.py (InteractiveShell.user_setup): removed
2779 disabling of colors for Windows. I'll test at runtime and issue a
2784 disabling of colors for Windows. I'll test at runtime and issue a
2780 warning if Gary's readline isn't found, as to nudge users to
2785 warning if Gary's readline isn't found, as to nudge users to
2781 download it.
2786 download it.
2782
2787
2783 2004-06-16 Fernando Perez <fperez@colorado.edu>
2788 2004-06-16 Fernando Perez <fperez@colorado.edu>
2784
2789
2785 * IPython/genutils.py (Stream.__init__): changed to print errors
2790 * IPython/genutils.py (Stream.__init__): changed to print errors
2786 to sys.stderr. I had a circular dependency here. Now it's
2791 to sys.stderr. I had a circular dependency here. Now it's
2787 possible to run ipython as IDLE's shell (consider this pre-alpha,
2792 possible to run ipython as IDLE's shell (consider this pre-alpha,
2788 since true stdout things end up in the starting terminal instead
2793 since true stdout things end up in the starting terminal instead
2789 of IDLE's out).
2794 of IDLE's out).
2790
2795
2791 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2796 * IPython/Prompts.py (Prompt2.set_colors): prevent crashes for
2792 users who haven't # updated their prompt_in2 definitions. Remove
2797 users who haven't # updated their prompt_in2 definitions. Remove
2793 eventually.
2798 eventually.
2794 (multiple_replace): added credit to original ASPN recipe.
2799 (multiple_replace): added credit to original ASPN recipe.
2795
2800
2796 2004-06-15 Fernando Perez <fperez@colorado.edu>
2801 2004-06-15 Fernando Perez <fperez@colorado.edu>
2797
2802
2798 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2803 * IPython/iplib.py (InteractiveShell.__init__): add 'cp' to the
2799 list of auto-defined aliases.
2804 list of auto-defined aliases.
2800
2805
2801 2004-06-13 Fernando Perez <fperez@colorado.edu>
2806 2004-06-13 Fernando Perez <fperez@colorado.edu>
2802
2807
2803 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2808 * setup.py (scriptfiles): Don't trigger win_post_install unless an
2804 install was really requested (so setup.py can be used for other
2809 install was really requested (so setup.py can be used for other
2805 things under Windows).
2810 things under Windows).
2806
2811
2807 2004-06-10 Fernando Perez <fperez@colorado.edu>
2812 2004-06-10 Fernando Perez <fperez@colorado.edu>
2808
2813
2809 * IPython/Logger.py (Logger.create_log): Manually remove any old
2814 * IPython/Logger.py (Logger.create_log): Manually remove any old
2810 backup, since os.remove may fail under Windows. Fixes bug
2815 backup, since os.remove may fail under Windows. Fixes bug
2811 reported by Thorsten.
2816 reported by Thorsten.
2812
2817
2813 2004-06-09 Fernando Perez <fperez@colorado.edu>
2818 2004-06-09 Fernando Perez <fperez@colorado.edu>
2814
2819
2815 * examples/example-embed.py: fixed all references to %n (replaced
2820 * examples/example-embed.py: fixed all references to %n (replaced
2816 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2821 with \\# for ps1/out prompts and with \\D for ps2 prompts). Done
2817 for all examples and the manual as well.
2822 for all examples and the manual as well.
2818
2823
2819 2004-06-08 Fernando Perez <fperez@colorado.edu>
2824 2004-06-08 Fernando Perez <fperez@colorado.edu>
2820
2825
2821 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2826 * IPython/Prompts.py (Prompt2.set_p_str): fixed all prompt
2822 alignment and color management. All 3 prompt subsystems now
2827 alignment and color management. All 3 prompt subsystems now
2823 inherit from BasePrompt.
2828 inherit from BasePrompt.
2824
2829
2825 * tools/release: updates for windows installer build and tag rpms
2830 * tools/release: updates for windows installer build and tag rpms
2826 with python version (since paths are fixed).
2831 with python version (since paths are fixed).
2827
2832
2828 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2833 * IPython/UserConfig/ipythonrc: modified to use \# instead of %n,
2829 which will become eventually obsolete. Also fixed the default
2834 which will become eventually obsolete. Also fixed the default
2830 prompt_in2 to use \D, so at least new users start with the correct
2835 prompt_in2 to use \D, so at least new users start with the correct
2831 defaults.
2836 defaults.
2832 WARNING: Users with existing ipythonrc files will need to apply
2837 WARNING: Users with existing ipythonrc files will need to apply
2833 this fix manually!
2838 this fix manually!
2834
2839
2835 * setup.py: make windows installer (.exe). This is finally the
2840 * setup.py: make windows installer (.exe). This is finally the
2836 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2841 integration of an old patch by Cory Dodt <dodt-AT-fcoe.k12.ca.us>,
2837 which I hadn't included because it required Python 2.3 (or recent
2842 which I hadn't included because it required Python 2.3 (or recent
2838 distutils).
2843 distutils).
2839
2844
2840 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2845 * IPython/usage.py (__doc__): update docs (and manpage) to reflect
2841 usage of new '\D' escape.
2846 usage of new '\D' escape.
2842
2847
2843 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2848 * IPython/Prompts.py (ROOT_SYMBOL): Small fix for Windows (which
2844 lacks os.getuid())
2849 lacks os.getuid())
2845 (CachedOutput.set_colors): Added the ability to turn coloring
2850 (CachedOutput.set_colors): Added the ability to turn coloring
2846 on/off with @colors even for manually defined prompt colors. It
2851 on/off with @colors even for manually defined prompt colors. It
2847 uses a nasty global, but it works safely and via the generic color
2852 uses a nasty global, but it works safely and via the generic color
2848 handling mechanism.
2853 handling mechanism.
2849 (Prompt2.__init__): Introduced new escape '\D' for continuation
2854 (Prompt2.__init__): Introduced new escape '\D' for continuation
2850 prompts. It represents the counter ('\#') as dots.
2855 prompts. It represents the counter ('\#') as dots.
2851 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2856 *** NOTE *** THIS IS A BACKWARDS-INCOMPATIBLE CHANGE. Users will
2852 need to update their ipythonrc files and replace '%n' with '\D' in
2857 need to update their ipythonrc files and replace '%n' with '\D' in
2853 their prompt_in2 settings everywhere. Sorry, but there's
2858 their prompt_in2 settings everywhere. Sorry, but there's
2854 otherwise no clean way to get all prompts to properly align. The
2859 otherwise no clean way to get all prompts to properly align. The
2855 ipythonrc shipped with IPython has been updated.
2860 ipythonrc shipped with IPython has been updated.
2856
2861
2857 2004-06-07 Fernando Perez <fperez@colorado.edu>
2862 2004-06-07 Fernando Perez <fperez@colorado.edu>
2858
2863
2859 * setup.py (isfile): Pass local_icons option to latex2html, so the
2864 * setup.py (isfile): Pass local_icons option to latex2html, so the
2860 resulting HTML file is self-contained. Thanks to
2865 resulting HTML file is self-contained. Thanks to
2861 dryice-AT-liu.com.cn for the tip.
2866 dryice-AT-liu.com.cn for the tip.
2862
2867
2863 * pysh.py: I created a new profile 'shell', which implements a
2868 * pysh.py: I created a new profile 'shell', which implements a
2864 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2869 _rudimentary_ IPython-based shell. This is in NO WAY a realy
2865 system shell, nor will it become one anytime soon. It's mainly
2870 system shell, nor will it become one anytime soon. It's mainly
2866 meant to illustrate the use of the new flexible bash-like prompts.
2871 meant to illustrate the use of the new flexible bash-like prompts.
2867 I guess it could be used by hardy souls for true shell management,
2872 I guess it could be used by hardy souls for true shell management,
2868 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2873 but it's no tcsh/bash... pysh.py is loaded by the 'shell'
2869 profile. This uses the InterpreterExec extension provided by
2874 profile. This uses the InterpreterExec extension provided by
2870 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2875 W.J. van der Laan <gnufnork-AT-hetdigitalegat.nl>
2871
2876
2872 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2877 * IPython/Prompts.py (PromptOut.__str__): now it will correctly
2873 auto-align itself with the length of the previous input prompt
2878 auto-align itself with the length of the previous input prompt
2874 (taking into account the invisible color escapes).
2879 (taking into account the invisible color escapes).
2875 (CachedOutput.__init__): Large restructuring of this class. Now
2880 (CachedOutput.__init__): Large restructuring of this class. Now
2876 all three prompts (primary1, primary2, output) are proper objects,
2881 all three prompts (primary1, primary2, output) are proper objects,
2877 managed by the 'parent' CachedOutput class. The code is still a
2882 managed by the 'parent' CachedOutput class. The code is still a
2878 bit hackish (all prompts share state via a pointer to the cache),
2883 bit hackish (all prompts share state via a pointer to the cache),
2879 but it's overall far cleaner than before.
2884 but it's overall far cleaner than before.
2880
2885
2881 * IPython/genutils.py (getoutputerror): modified to add verbose,
2886 * IPython/genutils.py (getoutputerror): modified to add verbose,
2882 debug and header options. This makes the interface of all getout*
2887 debug and header options. This makes the interface of all getout*
2883 functions uniform.
2888 functions uniform.
2884 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2889 (SystemExec.getoutputerror): added getoutputerror to SystemExec.
2885
2890
2886 * IPython/Magic.py (Magic.default_option): added a function to
2891 * IPython/Magic.py (Magic.default_option): added a function to
2887 allow registering default options for any magic command. This
2892 allow registering default options for any magic command. This
2888 makes it easy to have profiles which customize the magics globally
2893 makes it easy to have profiles which customize the magics globally
2889 for a certain use. The values set through this function are
2894 for a certain use. The values set through this function are
2890 picked up by the parse_options() method, which all magics should
2895 picked up by the parse_options() method, which all magics should
2891 use to parse their options.
2896 use to parse their options.
2892
2897
2893 * IPython/genutils.py (warn): modified the warnings framework to
2898 * IPython/genutils.py (warn): modified the warnings framework to
2894 use the Term I/O class. I'm trying to slowly unify all of
2899 use the Term I/O class. I'm trying to slowly unify all of
2895 IPython's I/O operations to pass through Term.
2900 IPython's I/O operations to pass through Term.
2896
2901
2897 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2902 * IPython/Prompts.py (Prompt2._str_other): Added functionality in
2898 the secondary prompt to correctly match the length of the primary
2903 the secondary prompt to correctly match the length of the primary
2899 one for any prompt. Now multi-line code will properly line up
2904 one for any prompt. Now multi-line code will properly line up
2900 even for path dependent prompts, such as the new ones available
2905 even for path dependent prompts, such as the new ones available
2901 via the prompt_specials.
2906 via the prompt_specials.
2902
2907
2903 2004-06-06 Fernando Perez <fperez@colorado.edu>
2908 2004-06-06 Fernando Perez <fperez@colorado.edu>
2904
2909
2905 * IPython/Prompts.py (prompt_specials): Added the ability to have
2910 * IPython/Prompts.py (prompt_specials): Added the ability to have
2906 bash-like special sequences in the prompts, which get
2911 bash-like special sequences in the prompts, which get
2907 automatically expanded. Things like hostname, current working
2912 automatically expanded. Things like hostname, current working
2908 directory and username are implemented already, but it's easy to
2913 directory and username are implemented already, but it's easy to
2909 add more in the future. Thanks to a patch by W.J. van der Laan
2914 add more in the future. Thanks to a patch by W.J. van der Laan
2910 <gnufnork-AT-hetdigitalegat.nl>
2915 <gnufnork-AT-hetdigitalegat.nl>
2911 (prompt_specials): Added color support for prompt strings, so
2916 (prompt_specials): Added color support for prompt strings, so
2912 users can define arbitrary color setups for their prompts.
2917 users can define arbitrary color setups for their prompts.
2913
2918
2914 2004-06-05 Fernando Perez <fperez@colorado.edu>
2919 2004-06-05 Fernando Perez <fperez@colorado.edu>
2915
2920
2916 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2921 * IPython/genutils.py (Term.reopen_all): Added Windows-specific
2917 code to load Gary Bishop's readline and configure it
2922 code to load Gary Bishop's readline and configure it
2918 automatically. Thanks to Gary for help on this.
2923 automatically. Thanks to Gary for help on this.
2919
2924
2920 2004-06-01 Fernando Perez <fperez@colorado.edu>
2925 2004-06-01 Fernando Perez <fperez@colorado.edu>
2921
2926
2922 * IPython/Logger.py (Logger.create_log): fix bug for logging
2927 * IPython/Logger.py (Logger.create_log): fix bug for logging
2923 with no filename (previous fix was incomplete).
2928 with no filename (previous fix was incomplete).
2924
2929
2925 2004-05-25 Fernando Perez <fperez@colorado.edu>
2930 2004-05-25 Fernando Perez <fperez@colorado.edu>
2926
2931
2927 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2932 * IPython/Magic.py (Magic.parse_options): fix bug where naked
2928 parens would get passed to the shell.
2933 parens would get passed to the shell.
2929
2934
2930 2004-05-20 Fernando Perez <fperez@colorado.edu>
2935 2004-05-20 Fernando Perez <fperez@colorado.edu>
2931
2936
2932 * IPython/Magic.py (Magic.magic_prun): changed default profile
2937 * IPython/Magic.py (Magic.magic_prun): changed default profile
2933 sort order to 'time' (the more common profiling need).
2938 sort order to 'time' (the more common profiling need).
2934
2939
2935 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2940 * IPython/OInspect.py (Inspector.pinfo): flush the inspect cache
2936 so that source code shown is guaranteed in sync with the file on
2941 so that source code shown is guaranteed in sync with the file on
2937 disk (also changed in psource). Similar fix to the one for
2942 disk (also changed in psource). Similar fix to the one for
2938 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2943 ultraTB on 2004-05-06. Thanks to a bug report by Yann Le Du
2939 <yann.ledu-AT-noos.fr>.
2944 <yann.ledu-AT-noos.fr>.
2940
2945
2941 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2946 * IPython/Magic.py (Magic.parse_options): Fixed bug where commands
2942 with a single option would not be correctly parsed. Closes
2947 with a single option would not be correctly parsed. Closes
2943 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2948 http://www.scipy.net/roundup/ipython/issue14. This bug had been
2944 introduced in 0.6.0 (on 2004-05-06).
2949 introduced in 0.6.0 (on 2004-05-06).
2945
2950
2946 2004-05-13 *** Released version 0.6.0
2951 2004-05-13 *** Released version 0.6.0
2947
2952
2948 2004-05-13 Fernando Perez <fperez@colorado.edu>
2953 2004-05-13 Fernando Perez <fperez@colorado.edu>
2949
2954
2950 * debian/: Added debian/ directory to CVS, so that debian support
2955 * debian/: Added debian/ directory to CVS, so that debian support
2951 is publicly accessible. The debian package is maintained by Jack
2956 is publicly accessible. The debian package is maintained by Jack
2952 Moffit <jack-AT-xiph.org>.
2957 Moffit <jack-AT-xiph.org>.
2953
2958
2954 * Documentation: included the notes about an ipython-based system
2959 * Documentation: included the notes about an ipython-based system
2955 shell (the hypothetical 'pysh') into the new_design.pdf document,
2960 shell (the hypothetical 'pysh') into the new_design.pdf document,
2956 so that these ideas get distributed to users along with the
2961 so that these ideas get distributed to users along with the
2957 official documentation.
2962 official documentation.
2958
2963
2959 2004-05-10 Fernando Perez <fperez@colorado.edu>
2964 2004-05-10 Fernando Perez <fperez@colorado.edu>
2960
2965
2961 * IPython/Logger.py (Logger.create_log): fix recently introduced
2966 * IPython/Logger.py (Logger.create_log): fix recently introduced
2962 bug (misindented line) where logstart would fail when not given an
2967 bug (misindented line) where logstart would fail when not given an
2963 explicit filename.
2968 explicit filename.
2964
2969
2965 2004-05-09 Fernando Perez <fperez@colorado.edu>
2970 2004-05-09 Fernando Perez <fperez@colorado.edu>
2966
2971
2967 * IPython/Magic.py (Magic.parse_options): skip system call when
2972 * IPython/Magic.py (Magic.parse_options): skip system call when
2968 there are no options to look for. Faster, cleaner for the common
2973 there are no options to look for. Faster, cleaner for the common
2969 case.
2974 case.
2970
2975
2971 * Documentation: many updates to the manual: describing Windows
2976 * Documentation: many updates to the manual: describing Windows
2972 support better, Gnuplot updates, credits, misc small stuff. Also
2977 support better, Gnuplot updates, credits, misc small stuff. Also
2973 updated the new_design doc a bit.
2978 updated the new_design doc a bit.
2974
2979
2975 2004-05-06 *** Released version 0.6.0.rc1
2980 2004-05-06 *** Released version 0.6.0.rc1
2976
2981
2977 2004-05-06 Fernando Perez <fperez@colorado.edu>
2982 2004-05-06 Fernando Perez <fperez@colorado.edu>
2978
2983
2979 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2984 * IPython/ultraTB.py (ListTB.text): modified a ton of string +=
2980 operations to use the vastly more efficient list/''.join() method.
2985 operations to use the vastly more efficient list/''.join() method.
2981 (FormattedTB.text): Fix
2986 (FormattedTB.text): Fix
2982 http://www.scipy.net/roundup/ipython/issue12 - exception source
2987 http://www.scipy.net/roundup/ipython/issue12 - exception source
2983 extract not updated after reload. Thanks to Mike Salib
2988 extract not updated after reload. Thanks to Mike Salib
2984 <msalib-AT-mit.edu> for pinning the source of the problem.
2989 <msalib-AT-mit.edu> for pinning the source of the problem.
2985 Fortunately, the solution works inside ipython and doesn't require
2990 Fortunately, the solution works inside ipython and doesn't require
2986 any changes to python proper.
2991 any changes to python proper.
2987
2992
2988 * IPython/Magic.py (Magic.parse_options): Improved to process the
2993 * IPython/Magic.py (Magic.parse_options): Improved to process the
2989 argument list as a true shell would (by actually using the
2994 argument list as a true shell would (by actually using the
2990 underlying system shell). This way, all @magics automatically get
2995 underlying system shell). This way, all @magics automatically get
2991 shell expansion for variables. Thanks to a comment by Alex
2996 shell expansion for variables. Thanks to a comment by Alex
2992 Schmolck.
2997 Schmolck.
2993
2998
2994 2004-04-04 Fernando Perez <fperez@colorado.edu>
2999 2004-04-04 Fernando Perez <fperez@colorado.edu>
2995
3000
2996 * IPython/iplib.py (InteractiveShell.interact): Added a special
3001 * IPython/iplib.py (InteractiveShell.interact): Added a special
2997 trap for a debugger quit exception, which is basically impossible
3002 trap for a debugger quit exception, which is basically impossible
2998 to handle by normal mechanisms, given what pdb does to the stack.
3003 to handle by normal mechanisms, given what pdb does to the stack.
2999 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3004 This fixes a crash reported by <fgibbons-AT-llama.med.harvard.edu>.
3000
3005
3001 2004-04-03 Fernando Perez <fperez@colorado.edu>
3006 2004-04-03 Fernando Perez <fperez@colorado.edu>
3002
3007
3003 * IPython/genutils.py (Term): Standardized the names of the Term
3008 * IPython/genutils.py (Term): Standardized the names of the Term
3004 class streams to cin/cout/cerr, following C++ naming conventions
3009 class streams to cin/cout/cerr, following C++ naming conventions
3005 (I can't use in/out/err because 'in' is not a valid attribute
3010 (I can't use in/out/err because 'in' is not a valid attribute
3006 name).
3011 name).
3007
3012
3008 * IPython/iplib.py (InteractiveShell.interact): don't increment
3013 * IPython/iplib.py (InteractiveShell.interact): don't increment
3009 the prompt if there's no user input. By Daniel 'Dang' Griffith
3014 the prompt if there's no user input. By Daniel 'Dang' Griffith
3010 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3015 <pythondev-dang-AT-lazytwinacres.net>, after a suggestion from
3011 Francois Pinard.
3016 Francois Pinard.
3012
3017
3013 2004-04-02 Fernando Perez <fperez@colorado.edu>
3018 2004-04-02 Fernando Perez <fperez@colorado.edu>
3014
3019
3015 * IPython/genutils.py (Stream.__init__): Modified to survive at
3020 * IPython/genutils.py (Stream.__init__): Modified to survive at
3016 least importing in contexts where stdin/out/err aren't true file
3021 least importing in contexts where stdin/out/err aren't true file
3017 objects, such as PyCrust (they lack fileno() and mode). However,
3022 objects, such as PyCrust (they lack fileno() and mode). However,
3018 the recovery facilities which rely on these things existing will
3023 the recovery facilities which rely on these things existing will
3019 not work.
3024 not work.
3020
3025
3021 2004-04-01 Fernando Perez <fperez@colorado.edu>
3026 2004-04-01 Fernando Perez <fperez@colorado.edu>
3022
3027
3023 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3028 * IPython/Magic.py (Magic.magic_sx): modified (as well as @sc) to
3024 use the new getoutputerror() function, so it properly
3029 use the new getoutputerror() function, so it properly
3025 distinguishes stdout/err.
3030 distinguishes stdout/err.
3026
3031
3027 * IPython/genutils.py (getoutputerror): added a function to
3032 * IPython/genutils.py (getoutputerror): added a function to
3028 capture separately the standard output and error of a command.
3033 capture separately the standard output and error of a command.
3029 After a comment from dang on the mailing lists. This code is
3034 After a comment from dang on the mailing lists. This code is
3030 basically a modified version of commands.getstatusoutput(), from
3035 basically a modified version of commands.getstatusoutput(), from
3031 the standard library.
3036 the standard library.
3032
3037
3033 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3038 * IPython/iplib.py (InteractiveShell.handle_shell_escape): added
3034 '!!' as a special syntax (shorthand) to access @sx.
3039 '!!' as a special syntax (shorthand) to access @sx.
3035
3040
3036 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3041 * IPython/Magic.py (Magic.magic_sx): new magic, to execute a shell
3037 command and return its output as a list split on '\n'.
3042 command and return its output as a list split on '\n'.
3038
3043
3039 2004-03-31 Fernando Perez <fperez@colorado.edu>
3044 2004-03-31 Fernando Perez <fperez@colorado.edu>
3040
3045
3041 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3046 * IPython/FakeModule.py (FakeModule.__init__): added __nonzero__
3042 method to dictionaries used as FakeModule instances if they lack
3047 method to dictionaries used as FakeModule instances if they lack
3043 it. At least pydoc in python2.3 breaks for runtime-defined
3048 it. At least pydoc in python2.3 breaks for runtime-defined
3044 functions without this hack. At some point I need to _really_
3049 functions without this hack. At some point I need to _really_
3045 understand what FakeModule is doing, because it's a gross hack.
3050 understand what FakeModule is doing, because it's a gross hack.
3046 But it solves Arnd's problem for now...
3051 But it solves Arnd's problem for now...
3047
3052
3048 2004-02-27 Fernando Perez <fperez@colorado.edu>
3053 2004-02-27 Fernando Perez <fperez@colorado.edu>
3049
3054
3050 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3055 * IPython/Logger.py (Logger.create_log): Fix bug where 'rotate'
3051 mode would behave erratically. Also increased the number of
3056 mode would behave erratically. Also increased the number of
3052 possible logs in rotate mod to 999. Thanks to Rod Holland
3057 possible logs in rotate mod to 999. Thanks to Rod Holland
3053 <rhh@StructureLABS.com> for the report and fixes.
3058 <rhh@StructureLABS.com> for the report and fixes.
3054
3059
3055 2004-02-26 Fernando Perez <fperez@colorado.edu>
3060 2004-02-26 Fernando Perez <fperez@colorado.edu>
3056
3061
3057 * IPython/genutils.py (page): Check that the curses module really
3062 * IPython/genutils.py (page): Check that the curses module really
3058 has the initscr attribute before trying to use it. For some
3063 has the initscr attribute before trying to use it. For some
3059 reason, the Solaris curses module is missing this. I think this
3064 reason, the Solaris curses module is missing this. I think this
3060 should be considered a Solaris python bug, but I'm not sure.
3065 should be considered a Solaris python bug, but I'm not sure.
3061
3066
3062 2004-01-17 Fernando Perez <fperez@colorado.edu>
3067 2004-01-17 Fernando Perez <fperez@colorado.edu>
3063
3068
3064 * IPython/genutils.py (Stream.__init__): Changes to try to make
3069 * IPython/genutils.py (Stream.__init__): Changes to try to make
3065 ipython robust against stdin/out/err being closed by the user.
3070 ipython robust against stdin/out/err being closed by the user.
3066 This is 'user error' (and blocks a normal python session, at least
3071 This is 'user error' (and blocks a normal python session, at least
3067 the stdout case). However, Ipython should be able to survive such
3072 the stdout case). However, Ipython should be able to survive such
3068 instances of abuse as gracefully as possible. To simplify the
3073 instances of abuse as gracefully as possible. To simplify the
3069 coding and maintain compatibility with Gary Bishop's Term
3074 coding and maintain compatibility with Gary Bishop's Term
3070 contributions, I've made use of classmethods for this. I think
3075 contributions, I've made use of classmethods for this. I think
3071 this introduces a dependency on python 2.2.
3076 this introduces a dependency on python 2.2.
3072
3077
3073 2004-01-13 Fernando Perez <fperez@colorado.edu>
3078 2004-01-13 Fernando Perez <fperez@colorado.edu>
3074
3079
3075 * IPython/numutils.py (exp_safe): simplified the code a bit and
3080 * IPython/numutils.py (exp_safe): simplified the code a bit and
3076 removed the need for importing the kinds module altogether.
3081 removed the need for importing the kinds module altogether.
3077
3082
3078 2004-01-06 Fernando Perez <fperez@colorado.edu>
3083 2004-01-06 Fernando Perez <fperez@colorado.edu>
3079
3084
3080 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3085 * IPython/Magic.py (Magic.magic_sc): Made the shell capture system
3081 a magic function instead, after some community feedback. No
3086 a magic function instead, after some community feedback. No
3082 special syntax will exist for it, but its name is deliberately
3087 special syntax will exist for it, but its name is deliberately
3083 very short.
3088 very short.
3084
3089
3085 2003-12-20 Fernando Perez <fperez@colorado.edu>
3090 2003-12-20 Fernando Perez <fperez@colorado.edu>
3086
3091
3087 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3092 * IPython/iplib.py (InteractiveShell.handle_shell_assign): Added
3088 new functionality, to automagically assign the result of a shell
3093 new functionality, to automagically assign the result of a shell
3089 command to a variable. I'll solicit some community feedback on
3094 command to a variable. I'll solicit some community feedback on
3090 this before making it permanent.
3095 this before making it permanent.
3091
3096
3092 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3097 * IPython/OInspect.py (Inspector.pinfo): Fix crash when info was
3093 requested about callables for which inspect couldn't obtain a
3098 requested about callables for which inspect couldn't obtain a
3094 proper argspec. Thanks to a crash report sent by Etienne
3099 proper argspec. Thanks to a crash report sent by Etienne
3095 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3100 Posthumus <etienne-AT-apple01.cs.vu.nl>.
3096
3101
3097 2003-12-09 Fernando Perez <fperez@colorado.edu>
3102 2003-12-09 Fernando Perez <fperez@colorado.edu>
3098
3103
3099 * IPython/genutils.py (page): patch for the pager to work across
3104 * IPython/genutils.py (page): patch for the pager to work across
3100 various versions of Windows. By Gary Bishop.
3105 various versions of Windows. By Gary Bishop.
3101
3106
3102 2003-12-04 Fernando Perez <fperez@colorado.edu>
3107 2003-12-04 Fernando Perez <fperez@colorado.edu>
3103
3108
3104 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3109 * IPython/Gnuplot2.py (PlotItems): Fixes for working with
3105 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3110 Gnuplot.py version 1.7, whose internal names changed quite a bit.
3106 While I tested this and it looks ok, there may still be corner
3111 While I tested this and it looks ok, there may still be corner
3107 cases I've missed.
3112 cases I've missed.
3108
3113
3109 2003-12-01 Fernando Perez <fperez@colorado.edu>
3114 2003-12-01 Fernando Perez <fperez@colorado.edu>
3110
3115
3111 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3116 * IPython/iplib.py (InteractiveShell._prefilter): Fixed a bug
3112 where a line like 'p,q=1,2' would fail because the automagic
3117 where a line like 'p,q=1,2' would fail because the automagic
3113 system would be triggered for @p.
3118 system would be triggered for @p.
3114
3119
3115 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3120 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): Tab-related
3116 cleanups, code unmodified.
3121 cleanups, code unmodified.
3117
3122
3118 * IPython/genutils.py (Term): added a class for IPython to handle
3123 * IPython/genutils.py (Term): added a class for IPython to handle
3119 output. In most cases it will just be a proxy for stdout/err, but
3124 output. In most cases it will just be a proxy for stdout/err, but
3120 having this allows modifications to be made for some platforms,
3125 having this allows modifications to be made for some platforms,
3121 such as handling color escapes under Windows. All of this code
3126 such as handling color escapes under Windows. All of this code
3122 was contributed by Gary Bishop, with minor modifications by me.
3127 was contributed by Gary Bishop, with minor modifications by me.
3123 The actual changes affect many files.
3128 The actual changes affect many files.
3124
3129
3125 2003-11-30 Fernando Perez <fperez@colorado.edu>
3130 2003-11-30 Fernando Perez <fperez@colorado.edu>
3126
3131
3127 * IPython/iplib.py (file_matches): new completion code, courtesy
3132 * IPython/iplib.py (file_matches): new completion code, courtesy
3128 of Jeff Collins. This enables filename completion again under
3133 of Jeff Collins. This enables filename completion again under
3129 python 2.3, which disabled it at the C level.
3134 python 2.3, which disabled it at the C level.
3130
3135
3131 2003-11-11 Fernando Perez <fperez@colorado.edu>
3136 2003-11-11 Fernando Perez <fperez@colorado.edu>
3132
3137
3133 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3138 * IPython/numutils.py (amap): Added amap() fn. Simple shorthand
3134 for Numeric.array(map(...)), but often convenient.
3139 for Numeric.array(map(...)), but often convenient.
3135
3140
3136 2003-11-05 Fernando Perez <fperez@colorado.edu>
3141 2003-11-05 Fernando Perez <fperez@colorado.edu>
3137
3142
3138 * IPython/numutils.py (frange): Changed a call from int() to
3143 * IPython/numutils.py (frange): Changed a call from int() to
3139 int(round()) to prevent a problem reported with arange() in the
3144 int(round()) to prevent a problem reported with arange() in the
3140 numpy list.
3145 numpy list.
3141
3146
3142 2003-10-06 Fernando Perez <fperez@colorado.edu>
3147 2003-10-06 Fernando Perez <fperez@colorado.edu>
3143
3148
3144 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3149 * IPython/DPyGetOpt.py (DPyGetOpt.processArguments): changed to
3145 prevent crashes if sys lacks an argv attribute (it happens with
3150 prevent crashes if sys lacks an argv attribute (it happens with
3146 embedded interpreters which build a bare-bones sys module).
3151 embedded interpreters which build a bare-bones sys module).
3147 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3152 Thanks to a report/bugfix by Adam Hupp <hupp-AT-cs.wisc.edu>.
3148
3153
3149 2003-09-24 Fernando Perez <fperez@colorado.edu>
3154 2003-09-24 Fernando Perez <fperez@colorado.edu>
3150
3155
3151 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3156 * IPython/Magic.py (Magic._ofind): blanket except around getattr()
3152 to protect against poorly written user objects where __getattr__
3157 to protect against poorly written user objects where __getattr__
3153 raises exceptions other than AttributeError. Thanks to a bug
3158 raises exceptions other than AttributeError. Thanks to a bug
3154 report by Oliver Sander <osander-AT-gmx.de>.
3159 report by Oliver Sander <osander-AT-gmx.de>.
3155
3160
3156 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3161 * IPython/FakeModule.py (FakeModule.__repr__): this method was
3157 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3162 missing. Thanks to bug report by Ralf Schmitt <ralf-AT-brainbot.com>.
3158
3163
3159 2003-09-09 Fernando Perez <fperez@colorado.edu>
3164 2003-09-09 Fernando Perez <fperez@colorado.edu>
3160
3165
3161 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3166 * IPython/iplib.py (InteractiveShell._prefilter): fix bug where
3162 unpacking a list whith a callable as first element would
3167 unpacking a list whith a callable as first element would
3163 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3168 mistakenly trigger autocalling. Thanks to a bug report by Jeffery
3164 Collins.
3169 Collins.
3165
3170
3166 2003-08-25 *** Released version 0.5.0
3171 2003-08-25 *** Released version 0.5.0
3167
3172
3168 2003-08-22 Fernando Perez <fperez@colorado.edu>
3173 2003-08-22 Fernando Perez <fperez@colorado.edu>
3169
3174
3170 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3175 * IPython/ultraTB.py (VerboseTB.linereader): Improved handling of
3171 improperly defined user exceptions. Thanks to feedback from Mark
3176 improperly defined user exceptions. Thanks to feedback from Mark
3172 Russell <mrussell-AT-verio.net>.
3177 Russell <mrussell-AT-verio.net>.
3173
3178
3174 2003-08-20 Fernando Perez <fperez@colorado.edu>
3179 2003-08-20 Fernando Perez <fperez@colorado.edu>
3175
3180
3176 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3181 * IPython/OInspect.py (Inspector.pinfo): changed String Form
3177 printing so that it would print multi-line string forms starting
3182 printing so that it would print multi-line string forms starting
3178 with a new line. This way the formatting is better respected for
3183 with a new line. This way the formatting is better respected for
3179 objects which work hard to make nice string forms.
3184 objects which work hard to make nice string forms.
3180
3185
3181 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3186 * IPython/iplib.py (InteractiveShell.handle_auto): Fix bug where
3182 autocall would overtake data access for objects with both
3187 autocall would overtake data access for objects with both
3183 __getitem__ and __call__.
3188 __getitem__ and __call__.
3184
3189
3185 2003-08-19 *** Released version 0.5.0-rc1
3190 2003-08-19 *** Released version 0.5.0-rc1
3186
3191
3187 2003-08-19 Fernando Perez <fperez@colorado.edu>
3192 2003-08-19 Fernando Perez <fperez@colorado.edu>
3188
3193
3189 * IPython/deep_reload.py (load_tail): single tiny change here
3194 * IPython/deep_reload.py (load_tail): single tiny change here
3190 seems to fix the long-standing bug of dreload() failing to work
3195 seems to fix the long-standing bug of dreload() failing to work
3191 for dotted names. But this module is pretty tricky, so I may have
3196 for dotted names. But this module is pretty tricky, so I may have
3192 missed some subtlety. Needs more testing!.
3197 missed some subtlety. Needs more testing!.
3193
3198
3194 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3199 * IPython/ultraTB.py (VerboseTB.linereader): harden against user
3195 exceptions which have badly implemented __str__ methods.
3200 exceptions which have badly implemented __str__ methods.
3196 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3201 (VerboseTB.text): harden against inspect.getinnerframes crashing,
3197 which I've been getting reports about from Python 2.3 users. I
3202 which I've been getting reports about from Python 2.3 users. I
3198 wish I had a simple test case to reproduce the problem, so I could
3203 wish I had a simple test case to reproduce the problem, so I could
3199 either write a cleaner workaround or file a bug report if
3204 either write a cleaner workaround or file a bug report if
3200 necessary.
3205 necessary.
3201
3206
3202 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3207 * IPython/Magic.py (Magic.magic_edit): fixed bug where after
3203 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3208 making a class 'foo', file 'foo.py' couldn't be edited. Thanks to
3204 a bug report by Tjabo Kloppenburg.
3209 a bug report by Tjabo Kloppenburg.
3205
3210
3206 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3211 * IPython/ultraTB.py (VerboseTB.debugger): hardened against pdb
3207 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3212 crashes. Wrapped the pdb call in a blanket try/except, since pdb
3208 seems rather unstable. Thanks to a bug report by Tjabo
3213 seems rather unstable. Thanks to a bug report by Tjabo
3209 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3214 Kloppenburg <tjabo.kloppenburg-AT-unix-ag.uni-siegen.de>.
3210
3215
3211 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3216 * IPython/Release.py (version): release 0.5.0-rc1. I want to put
3212 this out soon because of the critical fixes in the inner loop for
3217 this out soon because of the critical fixes in the inner loop for
3213 generators.
3218 generators.
3214
3219
3215 * IPython/Magic.py (Magic.getargspec): removed. This (and
3220 * IPython/Magic.py (Magic.getargspec): removed. This (and
3216 _get_def) have been obsoleted by OInspect for a long time, I
3221 _get_def) have been obsoleted by OInspect for a long time, I
3217 hadn't noticed that they were dead code.
3222 hadn't noticed that they were dead code.
3218 (Magic._ofind): restored _ofind functionality for a few literals
3223 (Magic._ofind): restored _ofind functionality for a few literals
3219 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3224 (those in ["''",'""','[]','{}','()']). But it won't work anymore
3220 for things like "hello".capitalize?, since that would require a
3225 for things like "hello".capitalize?, since that would require a
3221 potentially dangerous eval() again.
3226 potentially dangerous eval() again.
3222
3227
3223 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3228 * IPython/iplib.py (InteractiveShell._prefilter): reorganized the
3224 logic a bit more to clean up the escapes handling and minimize the
3229 logic a bit more to clean up the escapes handling and minimize the
3225 use of _ofind to only necessary cases. The interactive 'feel' of
3230 use of _ofind to only necessary cases. The interactive 'feel' of
3226 IPython should have improved quite a bit with the changes in
3231 IPython should have improved quite a bit with the changes in
3227 _prefilter and _ofind (besides being far safer than before).
3232 _prefilter and _ofind (besides being far safer than before).
3228
3233
3229 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3234 * IPython/Magic.py (Magic.magic_edit): Fixed old bug (but rather
3230 obscure, never reported). Edit would fail to find the object to
3235 obscure, never reported). Edit would fail to find the object to
3231 edit under some circumstances.
3236 edit under some circumstances.
3232 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3237 (Magic._ofind): CRITICAL FIX. Finally removed the eval() calls
3233 which were causing double-calling of generators. Those eval calls
3238 which were causing double-calling of generators. Those eval calls
3234 were _very_ dangerous, since code with side effects could be
3239 were _very_ dangerous, since code with side effects could be
3235 triggered. As they say, 'eval is evil'... These were the
3240 triggered. As they say, 'eval is evil'... These were the
3236 nastiest evals in IPython. Besides, _ofind is now far simpler,
3241 nastiest evals in IPython. Besides, _ofind is now far simpler,
3237 and it should also be quite a bit faster. Its use of inspect is
3242 and it should also be quite a bit faster. Its use of inspect is
3238 also safer, so perhaps some of the inspect-related crashes I've
3243 also safer, so perhaps some of the inspect-related crashes I've
3239 seen lately with Python 2.3 might be taken care of. That will
3244 seen lately with Python 2.3 might be taken care of. That will
3240 need more testing.
3245 need more testing.
3241
3246
3242 2003-08-17 Fernando Perez <fperez@colorado.edu>
3247 2003-08-17 Fernando Perez <fperez@colorado.edu>
3243
3248
3244 * IPython/iplib.py (InteractiveShell._prefilter): significant
3249 * IPython/iplib.py (InteractiveShell._prefilter): significant
3245 simplifications to the logic for handling user escapes. Faster
3250 simplifications to the logic for handling user escapes. Faster
3246 and simpler code.
3251 and simpler code.
3247
3252
3248 2003-08-14 Fernando Perez <fperez@colorado.edu>
3253 2003-08-14 Fernando Perez <fperez@colorado.edu>
3249
3254
3250 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3255 * IPython/numutils.py (sum_flat): rewrote to be non-recursive.
3251 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3256 Now it requires O(N) storage (N=size(a)) for non-contiguous input,
3252 but it should be quite a bit faster. And the recursive version
3257 but it should be quite a bit faster. And the recursive version
3253 generated O(log N) intermediate storage for all rank>1 arrays,
3258 generated O(log N) intermediate storage for all rank>1 arrays,
3254 even if they were contiguous.
3259 even if they were contiguous.
3255 (l1norm): Added this function.
3260 (l1norm): Added this function.
3256 (norm): Added this function for arbitrary norms (including
3261 (norm): Added this function for arbitrary norms (including
3257 l-infinity). l1 and l2 are still special cases for convenience
3262 l-infinity). l1 and l2 are still special cases for convenience
3258 and speed.
3263 and speed.
3259
3264
3260 2003-08-03 Fernando Perez <fperez@colorado.edu>
3265 2003-08-03 Fernando Perez <fperez@colorado.edu>
3261
3266
3262 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3267 * IPython/Magic.py (Magic.magic_edit): Removed all remaining string
3263 exceptions, which now raise PendingDeprecationWarnings in Python
3268 exceptions, which now raise PendingDeprecationWarnings in Python
3264 2.3. There were some in Magic and some in Gnuplot2.
3269 2.3. There were some in Magic and some in Gnuplot2.
3265
3270
3266 2003-06-30 Fernando Perez <fperez@colorado.edu>
3271 2003-06-30 Fernando Perez <fperez@colorado.edu>
3267
3272
3268 * IPython/genutils.py (page): modified to call curses only for
3273 * IPython/genutils.py (page): modified to call curses only for
3269 terminals where TERM=='xterm'. After problems under many other
3274 terminals where TERM=='xterm'. After problems under many other
3270 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3275 terminals were reported by Keith Beattie <KSBeattie-AT-lbl.gov>.
3271
3276
3272 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3277 * IPython/iplib.py (complete): removed spurious 'print "IE"' which
3273 would be triggered when readline was absent. This was just an old
3278 would be triggered when readline was absent. This was just an old
3274 debugging statement I'd forgotten to take out.
3279 debugging statement I'd forgotten to take out.
3275
3280
3276 2003-06-20 Fernando Perez <fperez@colorado.edu>
3281 2003-06-20 Fernando Perez <fperez@colorado.edu>
3277
3282
3278 * IPython/genutils.py (clock): modified to return only user time
3283 * IPython/genutils.py (clock): modified to return only user time
3279 (not counting system time), after a discussion on scipy. While
3284 (not counting system time), after a discussion on scipy. While
3280 system time may be a useful quantity occasionally, it may much
3285 system time may be a useful quantity occasionally, it may much
3281 more easily be skewed by occasional swapping or other similar
3286 more easily be skewed by occasional swapping or other similar
3282 activity.
3287 activity.
3283
3288
3284 2003-06-05 Fernando Perez <fperez@colorado.edu>
3289 2003-06-05 Fernando Perez <fperez@colorado.edu>
3285
3290
3286 * IPython/numutils.py (identity): new function, for building
3291 * IPython/numutils.py (identity): new function, for building
3287 arbitrary rank Kronecker deltas (mostly backwards compatible with
3292 arbitrary rank Kronecker deltas (mostly backwards compatible with
3288 Numeric.identity)
3293 Numeric.identity)
3289
3294
3290 2003-06-03 Fernando Perez <fperez@colorado.edu>
3295 2003-06-03 Fernando Perez <fperez@colorado.edu>
3291
3296
3292 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3297 * IPython/iplib.py (InteractiveShell.handle_magic): protect
3293 arguments passed to magics with spaces, to allow trailing '\' to
3298 arguments passed to magics with spaces, to allow trailing '\' to
3294 work normally (mainly for Windows users).
3299 work normally (mainly for Windows users).
3295
3300
3296 2003-05-29 Fernando Perez <fperez@colorado.edu>
3301 2003-05-29 Fernando Perez <fperez@colorado.edu>
3297
3302
3298 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3303 * IPython/ipmaker.py (make_IPython): Load site._Helper() as help
3299 instead of pydoc.help. This fixes a bizarre behavior where
3304 instead of pydoc.help. This fixes a bizarre behavior where
3300 printing '%s' % locals() would trigger the help system. Now
3305 printing '%s' % locals() would trigger the help system. Now
3301 ipython behaves like normal python does.
3306 ipython behaves like normal python does.
3302
3307
3303 Note that if one does 'from pydoc import help', the bizarre
3308 Note that if one does 'from pydoc import help', the bizarre
3304 behavior returns, but this will also happen in normal python, so
3309 behavior returns, but this will also happen in normal python, so
3305 it's not an ipython bug anymore (it has to do with how pydoc.help
3310 it's not an ipython bug anymore (it has to do with how pydoc.help
3306 is implemented).
3311 is implemented).
3307
3312
3308 2003-05-22 Fernando Perez <fperez@colorado.edu>
3313 2003-05-22 Fernando Perez <fperez@colorado.edu>
3309
3314
3310 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3315 * IPython/FlexCompleter.py (Completer.attr_matches): fixed to
3311 return [] instead of None when nothing matches, also match to end
3316 return [] instead of None when nothing matches, also match to end
3312 of line. Patch by Gary Bishop.
3317 of line. Patch by Gary Bishop.
3313
3318
3314 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3319 * IPython/ipmaker.py (make_IPython): Added same sys.excepthook
3315 protection as before, for files passed on the command line. This
3320 protection as before, for files passed on the command line. This
3316 prevents the CrashHandler from kicking in if user files call into
3321 prevents the CrashHandler from kicking in if user files call into
3317 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3322 sys.excepthook (such as PyQt and WxWindows have a nasty habit of
3318 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3323 doing). After a report by Kasper Souren <Kasper.Souren-AT-ircam.fr>
3319
3324
3320 2003-05-20 *** Released version 0.4.0
3325 2003-05-20 *** Released version 0.4.0
3321
3326
3322 2003-05-20 Fernando Perez <fperez@colorado.edu>
3327 2003-05-20 Fernando Perez <fperez@colorado.edu>
3323
3328
3324 * setup.py: added support for manpages. It's a bit hackish b/c of
3329 * setup.py: added support for manpages. It's a bit hackish b/c of
3325 a bug in the way the bdist_rpm distutils target handles gzipped
3330 a bug in the way the bdist_rpm distutils target handles gzipped
3326 manpages, but it works. After a patch by Jack.
3331 manpages, but it works. After a patch by Jack.
3327
3332
3328 2003-05-19 Fernando Perez <fperez@colorado.edu>
3333 2003-05-19 Fernando Perez <fperez@colorado.edu>
3329
3334
3330 * IPython/numutils.py: added a mockup of the kinds module, since
3335 * IPython/numutils.py: added a mockup of the kinds module, since
3331 it was recently removed from Numeric. This way, numutils will
3336 it was recently removed from Numeric. This way, numutils will
3332 work for all users even if they are missing kinds.
3337 work for all users even if they are missing kinds.
3333
3338
3334 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3339 * IPython/Magic.py (Magic._ofind): Harden against an inspect
3335 failure, which can occur with SWIG-wrapped extensions. After a
3340 failure, which can occur with SWIG-wrapped extensions. After a
3336 crash report from Prabhu.
3341 crash report from Prabhu.
3337
3342
3338 2003-05-16 Fernando Perez <fperez@colorado.edu>
3343 2003-05-16 Fernando Perez <fperez@colorado.edu>
3339
3344
3340 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3345 * IPython/iplib.py (InteractiveShell.excepthook): New method to
3341 protect ipython from user code which may call directly
3346 protect ipython from user code which may call directly
3342 sys.excepthook (this looks like an ipython crash to the user, even
3347 sys.excepthook (this looks like an ipython crash to the user, even
3343 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3348 when it isn't). After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3344 This is especially important to help users of WxWindows, but may
3349 This is especially important to help users of WxWindows, but may
3345 also be useful in other cases.
3350 also be useful in other cases.
3346
3351
3347 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3352 * IPython/ultraTB.py (AutoFormattedTB.__call__): Changed to allow
3348 an optional tb_offset to be specified, and to preserve exception
3353 an optional tb_offset to be specified, and to preserve exception
3349 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3354 info if given. After a patch by Gary Bishop <gb-AT-cs.unc.edu>.
3350
3355
3351 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3356 * ipython.1 (Default): Thanks to Jack's work, we now have manpages!
3352
3357
3353 2003-05-15 Fernando Perez <fperez@colorado.edu>
3358 2003-05-15 Fernando Perez <fperez@colorado.edu>
3354
3359
3355 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3360 * IPython/iplib.py (InteractiveShell.user_setup): Fix crash when
3356 installing for a new user under Windows.
3361 installing for a new user under Windows.
3357
3362
3358 2003-05-12 Fernando Perez <fperez@colorado.edu>
3363 2003-05-12 Fernando Perez <fperez@colorado.edu>
3359
3364
3360 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3365 * IPython/iplib.py (InteractiveShell.handle_emacs): New line
3361 handler for Emacs comint-based lines. Currently it doesn't do
3366 handler for Emacs comint-based lines. Currently it doesn't do
3362 much (but importantly, it doesn't update the history cache). In
3367 much (but importantly, it doesn't update the history cache). In
3363 the future it may be expanded if Alex needs more functionality
3368 the future it may be expanded if Alex needs more functionality
3364 there.
3369 there.
3365
3370
3366 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3371 * IPython/CrashHandler.py (CrashHandler.__call__): Added platform
3367 info to crash reports.
3372 info to crash reports.
3368
3373
3369 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3374 * IPython/iplib.py (InteractiveShell.mainloop): Added -c option,
3370 just like Python's -c. Also fixed crash with invalid -color
3375 just like Python's -c. Also fixed crash with invalid -color
3371 option value at startup. Thanks to Will French
3376 option value at startup. Thanks to Will French
3372 <wfrench-AT-bestweb.net> for the bug report.
3377 <wfrench-AT-bestweb.net> for the bug report.
3373
3378
3374 2003-05-09 Fernando Perez <fperez@colorado.edu>
3379 2003-05-09 Fernando Perez <fperez@colorado.edu>
3375
3380
3376 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3381 * IPython/genutils.py (EvalDict.__getitem__): Renamed EvalString
3377 to EvalDict (it's a mapping, after all) and simplified its code
3382 to EvalDict (it's a mapping, after all) and simplified its code
3378 quite a bit, after a nice discussion on c.l.py where Gustavo
3383 quite a bit, after a nice discussion on c.l.py where Gustavo
3379 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3384 CΓ³rdova <gcordova-AT-sismex.com> suggested the new version.
3380
3385
3381 2003-04-30 Fernando Perez <fperez@colorado.edu>
3386 2003-04-30 Fernando Perez <fperez@colorado.edu>
3382
3387
3383 * IPython/genutils.py (timings_out): modified it to reduce its
3388 * IPython/genutils.py (timings_out): modified it to reduce its
3384 overhead in the common reps==1 case.
3389 overhead in the common reps==1 case.
3385
3390
3386 2003-04-29 Fernando Perez <fperez@colorado.edu>
3391 2003-04-29 Fernando Perez <fperez@colorado.edu>
3387
3392
3388 * IPython/genutils.py (timings_out): Modified to use the resource
3393 * IPython/genutils.py (timings_out): Modified to use the resource
3389 module, which avoids the wraparound problems of time.clock().
3394 module, which avoids the wraparound problems of time.clock().
3390
3395
3391 2003-04-17 *** Released version 0.2.15pre4
3396 2003-04-17 *** Released version 0.2.15pre4
3392
3397
3393 2003-04-17 Fernando Perez <fperez@colorado.edu>
3398 2003-04-17 Fernando Perez <fperez@colorado.edu>
3394
3399
3395 * setup.py (scriptfiles): Split windows-specific stuff over to a
3400 * setup.py (scriptfiles): Split windows-specific stuff over to a
3396 separate file, in an attempt to have a Windows GUI installer.
3401 separate file, in an attempt to have a Windows GUI installer.
3397 That didn't work, but part of the groundwork is done.
3402 That didn't work, but part of the groundwork is done.
3398
3403
3399 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3404 * IPython/UserConfig/ipythonrc: Added M-i, M-o and M-I for
3400 indent/unindent with 4 spaces. Particularly useful in combination
3405 indent/unindent with 4 spaces. Particularly useful in combination
3401 with the new auto-indent option.
3406 with the new auto-indent option.
3402
3407
3403 2003-04-16 Fernando Perez <fperez@colorado.edu>
3408 2003-04-16 Fernando Perez <fperez@colorado.edu>
3404
3409
3405 * IPython/Magic.py: various replacements of self.rc for
3410 * IPython/Magic.py: various replacements of self.rc for
3406 self.shell.rc. A lot more remains to be done to fully disentangle
3411 self.shell.rc. A lot more remains to be done to fully disentangle
3407 this class from the main Shell class.
3412 this class from the main Shell class.
3408
3413
3409 * IPython/GnuplotRuntime.py: added checks for mouse support so
3414 * IPython/GnuplotRuntime.py: added checks for mouse support so
3410 that we don't try to enable it if the current gnuplot doesn't
3415 that we don't try to enable it if the current gnuplot doesn't
3411 really support it. Also added checks so that we don't try to
3416 really support it. Also added checks so that we don't try to
3412 enable persist under Windows (where Gnuplot doesn't recognize the
3417 enable persist under Windows (where Gnuplot doesn't recognize the
3413 option).
3418 option).
3414
3419
3415 * IPython/iplib.py (InteractiveShell.interact): Added optional
3420 * IPython/iplib.py (InteractiveShell.interact): Added optional
3416 auto-indenting code, after a patch by King C. Shu
3421 auto-indenting code, after a patch by King C. Shu
3417 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3422 <kingshu-AT-myrealbox.com>. It's off by default because it doesn't
3418 get along well with pasting indented code. If I ever figure out
3423 get along well with pasting indented code. If I ever figure out
3419 how to make that part go well, it will become on by default.
3424 how to make that part go well, it will become on by default.
3420
3425
3421 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3426 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixed bug which would
3422 crash ipython if there was an unmatched '%' in the user's prompt
3427 crash ipython if there was an unmatched '%' in the user's prompt
3423 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3428 string. Reported by Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3424
3429
3425 * IPython/iplib.py (InteractiveShell.interact): removed the
3430 * IPython/iplib.py (InteractiveShell.interact): removed the
3426 ability to ask the user whether he wants to crash or not at the
3431 ability to ask the user whether he wants to crash or not at the
3427 'last line' exception handler. Calling functions at that point
3432 'last line' exception handler. Calling functions at that point
3428 changes the stack, and the error reports would have incorrect
3433 changes the stack, and the error reports would have incorrect
3429 tracebacks.
3434 tracebacks.
3430
3435
3431 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3436 * IPython/Magic.py (Magic.magic_page): Added new @page magic, to
3432 pass through a peger a pretty-printed form of any object. After a
3437 pass through a peger a pretty-printed form of any object. After a
3433 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3438 contribution by Olivier Aubert <oaubert-AT-bat710.univ-lyon1.fr>
3434
3439
3435 2003-04-14 Fernando Perez <fperez@colorado.edu>
3440 2003-04-14 Fernando Perez <fperez@colorado.edu>
3436
3441
3437 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3442 * IPython/iplib.py (InteractiveShell.user_setup): Fixed bug where
3438 all files in ~ would be modified at first install (instead of
3443 all files in ~ would be modified at first install (instead of
3439 ~/.ipython). This could be potentially disastrous, as the
3444 ~/.ipython). This could be potentially disastrous, as the
3440 modification (make line-endings native) could damage binary files.
3445 modification (make line-endings native) could damage binary files.
3441
3446
3442 2003-04-10 Fernando Perez <fperez@colorado.edu>
3447 2003-04-10 Fernando Perez <fperez@colorado.edu>
3443
3448
3444 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3449 * IPython/iplib.py (InteractiveShell.handle_help): Modified to
3445 handle only lines which are invalid python. This now means that
3450 handle only lines which are invalid python. This now means that
3446 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3451 lines like 'x=1 #?' execute properly. Thanks to Jeffery Collins
3447 for the bug report.
3452 for the bug report.
3448
3453
3449 2003-04-01 Fernando Perez <fperez@colorado.edu>
3454 2003-04-01 Fernando Perez <fperez@colorado.edu>
3450
3455
3451 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3456 * IPython/iplib.py (InteractiveShell.showtraceback): Fixed bug
3452 where failing to set sys.last_traceback would crash pdb.pm().
3457 where failing to set sys.last_traceback would crash pdb.pm().
3453 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3458 Thanks to Jeffery D. Collins <Jeff.Collins-AT-vexcel.com> for the bug
3454 report.
3459 report.
3455
3460
3456 2003-03-25 Fernando Perez <fperez@colorado.edu>
3461 2003-03-25 Fernando Perez <fperez@colorado.edu>
3457
3462
3458 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3463 * IPython/Magic.py (Magic.magic_prun): rstrip() output of profiler
3459 before printing it (it had a lot of spurious blank lines at the
3464 before printing it (it had a lot of spurious blank lines at the
3460 end).
3465 end).
3461
3466
3462 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3467 * IPython/Gnuplot2.py (Gnuplot.hardcopy): fixed bug where lpr
3463 output would be sent 21 times! Obviously people don't use this
3468 output would be sent 21 times! Obviously people don't use this
3464 too often, or I would have heard about it.
3469 too often, or I would have heard about it.
3465
3470
3466 2003-03-24 Fernando Perez <fperez@colorado.edu>
3471 2003-03-24 Fernando Perez <fperez@colorado.edu>
3467
3472
3468 * setup.py (scriptfiles): renamed the data_files parameter from
3473 * setup.py (scriptfiles): renamed the data_files parameter from
3469 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3474 'base' to 'data' to fix rpm build issues. Thanks to Ralf Ahlbrink
3470 for the patch.
3475 for the patch.
3471
3476
3472 2003-03-20 Fernando Perez <fperez@colorado.edu>
3477 2003-03-20 Fernando Perez <fperez@colorado.edu>
3473
3478
3474 * IPython/genutils.py (error): added error() and fatal()
3479 * IPython/genutils.py (error): added error() and fatal()
3475 functions.
3480 functions.
3476
3481
3477 2003-03-18 *** Released version 0.2.15pre3
3482 2003-03-18 *** Released version 0.2.15pre3
3478
3483
3479 2003-03-18 Fernando Perez <fperez@colorado.edu>
3484 2003-03-18 Fernando Perez <fperez@colorado.edu>
3480
3485
3481 * setupext/install_data_ext.py
3486 * setupext/install_data_ext.py
3482 (install_data_ext.initialize_options): Class contributed by Jack
3487 (install_data_ext.initialize_options): Class contributed by Jack
3483 Moffit for fixing the old distutils hack. He is sending this to
3488 Moffit for fixing the old distutils hack. He is sending this to
3484 the distutils folks so in the future we may not need it as a
3489 the distutils folks so in the future we may not need it as a
3485 private fix.
3490 private fix.
3486
3491
3487 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3492 * MANIFEST.in: Extensive reorganization, based on Jack Moffit's
3488 changes for Debian packaging. See his patch for full details.
3493 changes for Debian packaging. See his patch for full details.
3489 The old distutils hack of making the ipythonrc* files carry a
3494 The old distutils hack of making the ipythonrc* files carry a
3490 bogus .py extension is gone, at last. Examples were moved to a
3495 bogus .py extension is gone, at last. Examples were moved to a
3491 separate subdir under doc/, and the separate executable scripts
3496 separate subdir under doc/, and the separate executable scripts
3492 now live in their own directory. Overall a great cleanup. The
3497 now live in their own directory. Overall a great cleanup. The
3493 manual was updated to use the new files, and setup.py has been
3498 manual was updated to use the new files, and setup.py has been
3494 fixed for this setup.
3499 fixed for this setup.
3495
3500
3496 * IPython/PyColorize.py (Parser.usage): made non-executable and
3501 * IPython/PyColorize.py (Parser.usage): made non-executable and
3497 created a pycolor wrapper around it to be included as a script.
3502 created a pycolor wrapper around it to be included as a script.
3498
3503
3499 2003-03-12 *** Released version 0.2.15pre2
3504 2003-03-12 *** Released version 0.2.15pre2
3500
3505
3501 2003-03-12 Fernando Perez <fperez@colorado.edu>
3506 2003-03-12 Fernando Perez <fperez@colorado.edu>
3502
3507
3503 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3508 * IPython/ColorANSI.py (make_color_table): Finally fixed the
3504 long-standing problem with garbage characters in some terminals.
3509 long-standing problem with garbage characters in some terminals.
3505 The issue was really that the \001 and \002 escapes must _only_ be
3510 The issue was really that the \001 and \002 escapes must _only_ be
3506 passed to input prompts (which call readline), but _never_ to
3511 passed to input prompts (which call readline), but _never_ to
3507 normal text to be printed on screen. I changed ColorANSI to have
3512 normal text to be printed on screen. I changed ColorANSI to have
3508 two classes: TermColors and InputTermColors, each with the
3513 two classes: TermColors and InputTermColors, each with the
3509 appropriate escapes for input prompts or normal text. The code in
3514 appropriate escapes for input prompts or normal text. The code in
3510 Prompts.py got slightly more complicated, but this very old and
3515 Prompts.py got slightly more complicated, but this very old and
3511 annoying bug is finally fixed.
3516 annoying bug is finally fixed.
3512
3517
3513 All the credit for nailing down the real origin of this problem
3518 All the credit for nailing down the real origin of this problem
3514 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3519 and the correct solution goes to Jack Moffit <jack-AT-xiph.org>.
3515 *Many* thanks to him for spending quite a bit of effort on this.
3520 *Many* thanks to him for spending quite a bit of effort on this.
3516
3521
3517 2003-03-05 *** Released version 0.2.15pre1
3522 2003-03-05 *** Released version 0.2.15pre1
3518
3523
3519 2003-03-03 Fernando Perez <fperez@colorado.edu>
3524 2003-03-03 Fernando Perez <fperez@colorado.edu>
3520
3525
3521 * IPython/FakeModule.py: Moved the former _FakeModule to a
3526 * IPython/FakeModule.py: Moved the former _FakeModule to a
3522 separate file, because it's also needed by Magic (to fix a similar
3527 separate file, because it's also needed by Magic (to fix a similar
3523 pickle-related issue in @run).
3528 pickle-related issue in @run).
3524
3529
3525 2003-03-02 Fernando Perez <fperez@colorado.edu>
3530 2003-03-02 Fernando Perez <fperez@colorado.edu>
3526
3531
3527 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3532 * IPython/Magic.py (Magic.magic_autocall): new magic to control
3528 the autocall option at runtime.
3533 the autocall option at runtime.
3529 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3534 (Magic.magic_dhist): changed self.user_ns to self.shell.user_ns
3530 across Magic.py to start separating Magic from InteractiveShell.
3535 across Magic.py to start separating Magic from InteractiveShell.
3531 (Magic._ofind): Fixed to return proper namespace for dotted
3536 (Magic._ofind): Fixed to return proper namespace for dotted
3532 names. Before, a dotted name would always return 'not currently
3537 names. Before, a dotted name would always return 'not currently
3533 defined', because it would find the 'parent'. s.x would be found,
3538 defined', because it would find the 'parent'. s.x would be found,
3534 but since 'x' isn't defined by itself, it would get confused.
3539 but since 'x' isn't defined by itself, it would get confused.
3535 (Magic.magic_run): Fixed pickling problems reported by Ralf
3540 (Magic.magic_run): Fixed pickling problems reported by Ralf
3536 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3541 Ahlbrink <RAhlbrink-AT-RosenInspection.net>. The fix was similar to
3537 that I'd used when Mike Heeter reported similar issues at the
3542 that I'd used when Mike Heeter reported similar issues at the
3538 top-level, but now for @run. It boils down to injecting the
3543 top-level, but now for @run. It boils down to injecting the
3539 namespace where code is being executed with something that looks
3544 namespace where code is being executed with something that looks
3540 enough like a module to fool pickle.dump(). Since a pickle stores
3545 enough like a module to fool pickle.dump(). Since a pickle stores
3541 a named reference to the importing module, we need this for
3546 a named reference to the importing module, we need this for
3542 pickles to save something sensible.
3547 pickles to save something sensible.
3543
3548
3544 * IPython/ipmaker.py (make_IPython): added an autocall option.
3549 * IPython/ipmaker.py (make_IPython): added an autocall option.
3545
3550
3546 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3551 * IPython/iplib.py (InteractiveShell._prefilter): reordered all of
3547 the auto-eval code. Now autocalling is an option, and the code is
3552 the auto-eval code. Now autocalling is an option, and the code is
3548 also vastly safer. There is no more eval() involved at all.
3553 also vastly safer. There is no more eval() involved at all.
3549
3554
3550 2003-03-01 Fernando Perez <fperez@colorado.edu>
3555 2003-03-01 Fernando Perez <fperez@colorado.edu>
3551
3556
3552 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3557 * IPython/Magic.py (Magic._ofind): Changed interface to return a
3553 dict with named keys instead of a tuple.
3558 dict with named keys instead of a tuple.
3554
3559
3555 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3560 * IPython: Started using CVS for IPython as of 0.2.15pre1.
3556
3561
3557 * setup.py (make_shortcut): Fixed message about directories
3562 * setup.py (make_shortcut): Fixed message about directories
3558 created during Windows installation (the directories were ok, just
3563 created during Windows installation (the directories were ok, just
3559 the printed message was misleading). Thanks to Chris Liechti
3564 the printed message was misleading). Thanks to Chris Liechti
3560 <cliechti-AT-gmx.net> for the heads up.
3565 <cliechti-AT-gmx.net> for the heads up.
3561
3566
3562 2003-02-21 Fernando Perez <fperez@colorado.edu>
3567 2003-02-21 Fernando Perez <fperez@colorado.edu>
3563
3568
3564 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3569 * IPython/iplib.py (InteractiveShell._prefilter): Fixed catching
3565 of ValueError exception when checking for auto-execution. This
3570 of ValueError exception when checking for auto-execution. This
3566 one is raised by things like Numeric arrays arr.flat when the
3571 one is raised by things like Numeric arrays arr.flat when the
3567 array is non-contiguous.
3572 array is non-contiguous.
3568
3573
3569 2003-01-31 Fernando Perez <fperez@colorado.edu>
3574 2003-01-31 Fernando Perez <fperez@colorado.edu>
3570
3575
3571 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3576 * IPython/genutils.py (SystemExec.bq): Fixed bug where bq would
3572 not return any value at all (even though the command would get
3577 not return any value at all (even though the command would get
3573 executed).
3578 executed).
3574 (xsys): Flush stdout right after printing the command to ensure
3579 (xsys): Flush stdout right after printing the command to ensure
3575 proper ordering of commands and command output in the total
3580 proper ordering of commands and command output in the total
3576 output.
3581 output.
3577 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3582 (SystemExec/xsys/bq): Switched the names of xsys/bq and
3578 system/getoutput as defaults. The old ones are kept for
3583 system/getoutput as defaults. The old ones are kept for
3579 compatibility reasons, so no code which uses this library needs
3584 compatibility reasons, so no code which uses this library needs
3580 changing.
3585 changing.
3581
3586
3582 2003-01-27 *** Released version 0.2.14
3587 2003-01-27 *** Released version 0.2.14
3583
3588
3584 2003-01-25 Fernando Perez <fperez@colorado.edu>
3589 2003-01-25 Fernando Perez <fperez@colorado.edu>
3585
3590
3586 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3591 * IPython/Magic.py (Magic.magic_edit): Fixed problem where
3587 functions defined in previous edit sessions could not be re-edited
3592 functions defined in previous edit sessions could not be re-edited
3588 (because the temp files were immediately removed). Now temp files
3593 (because the temp files were immediately removed). Now temp files
3589 are removed only at IPython's exit.
3594 are removed only at IPython's exit.
3590 (Magic.magic_run): Improved @run to perform shell-like expansions
3595 (Magic.magic_run): Improved @run to perform shell-like expansions
3591 on its arguments (~users and $VARS). With this, @run becomes more
3596 on its arguments (~users and $VARS). With this, @run becomes more
3592 like a normal command-line.
3597 like a normal command-line.
3593
3598
3594 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3599 * IPython/Shell.py (IPShellEmbed.__call__): Fixed a bunch of small
3595 bugs related to embedding and cleaned up that code. A fairly
3600 bugs related to embedding and cleaned up that code. A fairly
3596 important one was the impossibility to access the global namespace
3601 important one was the impossibility to access the global namespace
3597 through the embedded IPython (only local variables were visible).
3602 through the embedded IPython (only local variables were visible).
3598
3603
3599 2003-01-14 Fernando Perez <fperez@colorado.edu>
3604 2003-01-14 Fernando Perez <fperez@colorado.edu>
3600
3605
3601 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3606 * IPython/iplib.py (InteractiveShell._prefilter): Fixed
3602 auto-calling to be a bit more conservative. Now it doesn't get
3607 auto-calling to be a bit more conservative. Now it doesn't get
3603 triggered if any of '!=()<>' are in the rest of the input line, to
3608 triggered if any of '!=()<>' are in the rest of the input line, to
3604 allow comparing callables. Thanks to Alex for the heads up.
3609 allow comparing callables. Thanks to Alex for the heads up.
3605
3610
3606 2003-01-07 Fernando Perez <fperez@colorado.edu>
3611 2003-01-07 Fernando Perez <fperez@colorado.edu>
3607
3612
3608 * IPython/genutils.py (page): fixed estimation of the number of
3613 * IPython/genutils.py (page): fixed estimation of the number of
3609 lines in a string to be paged to simply count newlines. This
3614 lines in a string to be paged to simply count newlines. This
3610 prevents over-guessing due to embedded escape sequences. A better
3615 prevents over-guessing due to embedded escape sequences. A better
3611 long-term solution would involve stripping out the control chars
3616 long-term solution would involve stripping out the control chars
3612 for the count, but it's potentially so expensive I just don't
3617 for the count, but it's potentially so expensive I just don't
3613 think it's worth doing.
3618 think it's worth doing.
3614
3619
3615 2002-12-19 *** Released version 0.2.14pre50
3620 2002-12-19 *** Released version 0.2.14pre50
3616
3621
3617 2002-12-19 Fernando Perez <fperez@colorado.edu>
3622 2002-12-19 Fernando Perez <fperez@colorado.edu>
3618
3623
3619 * tools/release (version): Changed release scripts to inform
3624 * tools/release (version): Changed release scripts to inform
3620 Andrea and build a NEWS file with a list of recent changes.
3625 Andrea and build a NEWS file with a list of recent changes.
3621
3626
3622 * IPython/ColorANSI.py (__all__): changed terminal detection
3627 * IPython/ColorANSI.py (__all__): changed terminal detection
3623 code. Seems to work better for xterms without breaking
3628 code. Seems to work better for xterms without breaking
3624 konsole. Will need more testing to determine if WinXP and Mac OSX
3629 konsole. Will need more testing to determine if WinXP and Mac OSX
3625 also work ok.
3630 also work ok.
3626
3631
3627 2002-12-18 *** Released version 0.2.14pre49
3632 2002-12-18 *** Released version 0.2.14pre49
3628
3633
3629 2002-12-18 Fernando Perez <fperez@colorado.edu>
3634 2002-12-18 Fernando Perez <fperez@colorado.edu>
3630
3635
3631 * Docs: added new info about Mac OSX, from Andrea.
3636 * Docs: added new info about Mac OSX, from Andrea.
3632
3637
3633 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3638 * IPython/Gnuplot2.py (String): Added a String PlotItem class to
3634 allow direct plotting of python strings whose format is the same
3639 allow direct plotting of python strings whose format is the same
3635 of gnuplot data files.
3640 of gnuplot data files.
3636
3641
3637 2002-12-16 Fernando Perez <fperez@colorado.edu>
3642 2002-12-16 Fernando Perez <fperez@colorado.edu>
3638
3643
3639 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3644 * IPython/iplib.py (InteractiveShell.interact): fixed default (y)
3640 value of exit question to be acknowledged.
3645 value of exit question to be acknowledged.
3641
3646
3642 2002-12-03 Fernando Perez <fperez@colorado.edu>
3647 2002-12-03 Fernando Perez <fperez@colorado.edu>
3643
3648
3644 * IPython/ipmaker.py: removed generators, which had been added
3649 * IPython/ipmaker.py: removed generators, which had been added
3645 by mistake in an earlier debugging run. This was causing trouble
3650 by mistake in an earlier debugging run. This was causing trouble
3646 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3651 to users of python 2.1.x. Thanks to Abel Daniel <abli-AT-freemail.hu>
3647 for pointing this out.
3652 for pointing this out.
3648
3653
3649 2002-11-17 Fernando Perez <fperez@colorado.edu>
3654 2002-11-17 Fernando Perez <fperez@colorado.edu>
3650
3655
3651 * Manual: updated the Gnuplot section.
3656 * Manual: updated the Gnuplot section.
3652
3657
3653 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3658 * IPython/GnuplotRuntime.py: refactored a lot all this code, with
3654 a much better split of what goes in Runtime and what goes in
3659 a much better split of what goes in Runtime and what goes in
3655 Interactive.
3660 Interactive.
3656
3661
3657 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3662 * IPython/ipmaker.py: fixed bug where import_fail_info wasn't
3658 being imported from iplib.
3663 being imported from iplib.
3659
3664
3660 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3665 * IPython/GnuplotInteractive.py (magic_gpc): renamed @gp to @gpc
3661 for command-passing. Now the global Gnuplot instance is called
3666 for command-passing. Now the global Gnuplot instance is called
3662 'gp' instead of 'g', which was really a far too fragile and
3667 'gp' instead of 'g', which was really a far too fragile and
3663 common name.
3668 common name.
3664
3669
3665 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3670 * IPython/Gnuplot2.py (eps_fix_bbox): added this to fix broken
3666 bounding boxes generated by Gnuplot for square plots.
3671 bounding boxes generated by Gnuplot for square plots.
3667
3672
3668 * IPython/genutils.py (popkey): new function added. I should
3673 * IPython/genutils.py (popkey): new function added. I should
3669 suggest this on c.l.py as a dict method, it seems useful.
3674 suggest this on c.l.py as a dict method, it seems useful.
3670
3675
3671 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3676 * IPython/Gnuplot2.py (Gnuplot.plot): Overhauled plot and replot
3672 to transparently handle PostScript generation. MUCH better than
3677 to transparently handle PostScript generation. MUCH better than
3673 the previous plot_eps/replot_eps (which I removed now). The code
3678 the previous plot_eps/replot_eps (which I removed now). The code
3674 is also fairly clean and well documented now (including
3679 is also fairly clean and well documented now (including
3675 docstrings).
3680 docstrings).
3676
3681
3677 2002-11-13 Fernando Perez <fperez@colorado.edu>
3682 2002-11-13 Fernando Perez <fperez@colorado.edu>
3678
3683
3679 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3684 * IPython/Magic.py (Magic.magic_edit): fixed docstring
3680 (inconsistent with options).
3685 (inconsistent with options).
3681
3686
3682 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3687 * IPython/Gnuplot2.py (Gnuplot.hardcopy): hardcopy had been
3683 manually disabled, I don't know why. Fixed it.
3688 manually disabled, I don't know why. Fixed it.
3684 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3689 (Gnuplot._plot_eps): added new plot_eps/replot_eps to get directly
3685 eps output.
3690 eps output.
3686
3691
3687 2002-11-12 Fernando Perez <fperez@colorado.edu>
3692 2002-11-12 Fernando Perez <fperez@colorado.edu>
3688
3693
3689 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3694 * IPython/genutils.py (ask_yes_no): trap EOF and ^C so that they
3690 don't propagate up to caller. Fixes crash reported by François
3695 don't propagate up to caller. Fixes crash reported by François
3691 Pinard.
3696 Pinard.
3692
3697
3693 2002-11-09 Fernando Perez <fperez@colorado.edu>
3698 2002-11-09 Fernando Perez <fperez@colorado.edu>
3694
3699
3695 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3700 * IPython/ipmaker.py (make_IPython): fixed problem with writing
3696 history file for new users.
3701 history file for new users.
3697 (make_IPython): fixed bug where initial install would leave the
3702 (make_IPython): fixed bug where initial install would leave the
3698 user running in the .ipython dir.
3703 user running in the .ipython dir.
3699 (make_IPython): fixed bug where config dir .ipython would be
3704 (make_IPython): fixed bug where config dir .ipython would be
3700 created regardless of the given -ipythondir option. Thanks to Cory
3705 created regardless of the given -ipythondir option. Thanks to Cory
3701 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3706 Dodt <cdodt-AT-fcoe.k12.ca.us> for the bug report.
3702
3707
3703 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3708 * IPython/genutils.py (ask_yes_no): new function for asking yes/no
3704 type confirmations. Will need to use it in all of IPython's code
3709 type confirmations. Will need to use it in all of IPython's code
3705 consistently.
3710 consistently.
3706
3711
3707 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3712 * IPython/CrashHandler.py (CrashHandler.__call__): changed the
3708 context to print 31 lines instead of the default 5. This will make
3713 context to print 31 lines instead of the default 5. This will make
3709 the crash reports extremely detailed in case the problem is in
3714 the crash reports extremely detailed in case the problem is in
3710 libraries I don't have access to.
3715 libraries I don't have access to.
3711
3716
3712 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3717 * IPython/iplib.py (InteractiveShell.interact): changed the 'last
3713 line of defense' code to still crash, but giving users fair
3718 line of defense' code to still crash, but giving users fair
3714 warning. I don't want internal errors to go unreported: if there's
3719 warning. I don't want internal errors to go unreported: if there's
3715 an internal problem, IPython should crash and generate a full
3720 an internal problem, IPython should crash and generate a full
3716 report.
3721 report.
3717
3722
3718 2002-11-08 Fernando Perez <fperez@colorado.edu>
3723 2002-11-08 Fernando Perez <fperez@colorado.edu>
3719
3724
3720 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3725 * IPython/iplib.py (InteractiveShell.interact): added code to trap
3721 otherwise uncaught exceptions which can appear if people set
3726 otherwise uncaught exceptions which can appear if people set
3722 sys.stdout to something badly broken. Thanks to a crash report
3727 sys.stdout to something badly broken. Thanks to a crash report
3723 from henni-AT-mail.brainbot.com.
3728 from henni-AT-mail.brainbot.com.
3724
3729
3725 2002-11-04 Fernando Perez <fperez@colorado.edu>
3730 2002-11-04 Fernando Perez <fperez@colorado.edu>
3726
3731
3727 * IPython/iplib.py (InteractiveShell.interact): added
3732 * IPython/iplib.py (InteractiveShell.interact): added
3728 __IPYTHON__active to the builtins. It's a flag which goes on when
3733 __IPYTHON__active to the builtins. It's a flag which goes on when
3729 the interaction starts and goes off again when it stops. This
3734 the interaction starts and goes off again when it stops. This
3730 allows embedding code to detect being inside IPython. Before this
3735 allows embedding code to detect being inside IPython. Before this
3731 was done via __IPYTHON__, but that only shows that an IPython
3736 was done via __IPYTHON__, but that only shows that an IPython
3732 instance has been created.
3737 instance has been created.
3733
3738
3734 * IPython/Magic.py (Magic.magic_env): I realized that in a
3739 * IPython/Magic.py (Magic.magic_env): I realized that in a
3735 UserDict, instance.data holds the data as a normal dict. So I
3740 UserDict, instance.data holds the data as a normal dict. So I
3736 modified @env to return os.environ.data instead of rebuilding a
3741 modified @env to return os.environ.data instead of rebuilding a
3737 dict by hand.
3742 dict by hand.
3738
3743
3739 2002-11-02 Fernando Perez <fperez@colorado.edu>
3744 2002-11-02 Fernando Perez <fperez@colorado.edu>
3740
3745
3741 * IPython/genutils.py (warn): changed so that level 1 prints no
3746 * IPython/genutils.py (warn): changed so that level 1 prints no
3742 header. Level 2 is now the default (with 'WARNING' header, as
3747 header. Level 2 is now the default (with 'WARNING' header, as
3743 before). I think I tracked all places where changes were needed in
3748 before). I think I tracked all places where changes were needed in
3744 IPython, but outside code using the old level numbering may have
3749 IPython, but outside code using the old level numbering may have
3745 broken.
3750 broken.
3746
3751
3747 * IPython/iplib.py (InteractiveShell.runcode): added this to
3752 * IPython/iplib.py (InteractiveShell.runcode): added this to
3748 handle the tracebacks in SystemExit traps correctly. The previous
3753 handle the tracebacks in SystemExit traps correctly. The previous
3749 code (through interact) was printing more of the stack than
3754 code (through interact) was printing more of the stack than
3750 necessary, showing IPython internal code to the user.
3755 necessary, showing IPython internal code to the user.
3751
3756
3752 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3757 * IPython/UserConfig/ipythonrc.py: Made confirm_exit 1 by
3753 default. Now that the default at the confirmation prompt is yes,
3758 default. Now that the default at the confirmation prompt is yes,
3754 it's not so intrusive. François' argument that ipython sessions
3759 it's not so intrusive. François' argument that ipython sessions
3755 tend to be complex enough not to lose them from an accidental C-d,
3760 tend to be complex enough not to lose them from an accidental C-d,
3756 is a valid one.
3761 is a valid one.
3757
3762
3758 * IPython/iplib.py (InteractiveShell.interact): added a
3763 * IPython/iplib.py (InteractiveShell.interact): added a
3759 showtraceback() call to the SystemExit trap, and modified the exit
3764 showtraceback() call to the SystemExit trap, and modified the exit
3760 confirmation to have yes as the default.
3765 confirmation to have yes as the default.
3761
3766
3762 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3767 * IPython/UserConfig/ipythonrc.py: removed 'session' option from
3763 this file. It's been gone from the code for a long time, this was
3768 this file. It's been gone from the code for a long time, this was
3764 simply leftover junk.
3769 simply leftover junk.
3765
3770
3766 2002-11-01 Fernando Perez <fperez@colorado.edu>
3771 2002-11-01 Fernando Perez <fperez@colorado.edu>
3767
3772
3768 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3773 * IPython/UserConfig/ipythonrc.py: new confirm_exit option
3769 added. If set, IPython now traps EOF and asks for
3774 added. If set, IPython now traps EOF and asks for
3770 confirmation. After a request by François Pinard.
3775 confirmation. After a request by François Pinard.
3771
3776
3772 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3777 * IPython/Magic.py (Magic.magic_Exit): New @Exit and @Quit instead
3773 of @abort, and with a new (better) mechanism for handling the
3778 of @abort, and with a new (better) mechanism for handling the
3774 exceptions.
3779 exceptions.
3775
3780
3776 2002-10-27 Fernando Perez <fperez@colorado.edu>
3781 2002-10-27 Fernando Perez <fperez@colorado.edu>
3777
3782
3778 * IPython/usage.py (__doc__): updated the --help information and
3783 * IPython/usage.py (__doc__): updated the --help information and
3779 the ipythonrc file to indicate that -log generates
3784 the ipythonrc file to indicate that -log generates
3780 ./ipython.log. Also fixed the corresponding info in @logstart.
3785 ./ipython.log. Also fixed the corresponding info in @logstart.
3781 This and several other fixes in the manuals thanks to reports by
3786 This and several other fixes in the manuals thanks to reports by
3782 François Pinard <pinard-AT-iro.umontreal.ca>.
3787 François Pinard <pinard-AT-iro.umontreal.ca>.
3783
3788
3784 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3789 * IPython/Logger.py (Logger.switch_log): Fixed error message to
3785 refer to @logstart (instead of @log, which doesn't exist).
3790 refer to @logstart (instead of @log, which doesn't exist).
3786
3791
3787 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3792 * IPython/iplib.py (InteractiveShell._prefilter): fixed
3788 AttributeError crash. Thanks to Christopher Armstrong
3793 AttributeError crash. Thanks to Christopher Armstrong
3789 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3794 <radix-AT-twistedmatrix.com> for the report/fix. This bug had been
3790 introduced recently (in 0.2.14pre37) with the fix to the eval
3795 introduced recently (in 0.2.14pre37) with the fix to the eval
3791 problem mentioned below.
3796 problem mentioned below.
3792
3797
3793 2002-10-17 Fernando Perez <fperez@colorado.edu>
3798 2002-10-17 Fernando Perez <fperez@colorado.edu>
3794
3799
3795 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3800 * IPython/ConfigLoader.py (ConfigLoader.load): Fixes for Windows
3796 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3801 installation. Thanks to Leonardo Santagada <retype-AT-terra.com.br>.
3797
3802
3798 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3803 * IPython/iplib.py (InteractiveShell._prefilter): Many changes to
3799 this function to fix a problem reported by Alex Schmolck. He saw
3804 this function to fix a problem reported by Alex Schmolck. He saw
3800 it with list comprehensions and generators, which were getting
3805 it with list comprehensions and generators, which were getting
3801 called twice. The real problem was an 'eval' call in testing for
3806 called twice. The real problem was an 'eval' call in testing for
3802 automagic which was evaluating the input line silently.
3807 automagic which was evaluating the input line silently.
3803
3808
3804 This is a potentially very nasty bug, if the input has side
3809 This is a potentially very nasty bug, if the input has side
3805 effects which must not be repeated. The code is much cleaner now,
3810 effects which must not be repeated. The code is much cleaner now,
3806 without any blanket 'except' left and with a regexp test for
3811 without any blanket 'except' left and with a regexp test for
3807 actual function names.
3812 actual function names.
3808
3813
3809 But an eval remains, which I'm not fully comfortable with. I just
3814 But an eval remains, which I'm not fully comfortable with. I just
3810 don't know how to find out if an expression could be a callable in
3815 don't know how to find out if an expression could be a callable in
3811 the user's namespace without doing an eval on the string. However
3816 the user's namespace without doing an eval on the string. However
3812 that string is now much more strictly checked so that no code
3817 that string is now much more strictly checked so that no code
3813 slips by, so the eval should only happen for things that can
3818 slips by, so the eval should only happen for things that can
3814 really be only function/method names.
3819 really be only function/method names.
3815
3820
3816 2002-10-15 Fernando Perez <fperez@colorado.edu>
3821 2002-10-15 Fernando Perez <fperez@colorado.edu>
3817
3822
3818 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3823 * Updated LyX to 1.2.1 so I can work on the docs again. Added Mac
3819 OSX information to main manual, removed README_Mac_OSX file from
3824 OSX information to main manual, removed README_Mac_OSX file from
3820 distribution. Also updated credits for recent additions.
3825 distribution. Also updated credits for recent additions.
3821
3826
3822 2002-10-10 Fernando Perez <fperez@colorado.edu>
3827 2002-10-10 Fernando Perez <fperez@colorado.edu>
3823
3828
3824 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3829 * README_Mac_OSX: Added a README for Mac OSX users for fixing
3825 terminal-related issues. Many thanks to Andrea Riciputi
3830 terminal-related issues. Many thanks to Andrea Riciputi
3826 <andrea.riciputi-AT-libero.it> for writing it.
3831 <andrea.riciputi-AT-libero.it> for writing it.
3827
3832
3828 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3833 * IPython/UserConfig/ipythonrc.py: Fixes to various small issues,
3829 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3834 thanks to Thorsten Kampe <thorsten-AT-thorstenkampe.de>.
3830
3835
3831 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3836 * setup.py (make_shortcut): Fixes for Windows installation. Thanks
3832 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3837 to Fredrik Kant <fredrik.kant-AT-front.com> and Syver Enstad
3833 <syver-en-AT-online.no> who both submitted patches for this problem.
3838 <syver-en-AT-online.no> who both submitted patches for this problem.
3834
3839
3835 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3840 * IPython/iplib.py (InteractiveShell.embed_mainloop): Patch for
3836 global embedding to make sure that things don't overwrite user
3841 global embedding to make sure that things don't overwrite user
3837 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3842 globals accidentally. Thanks to Richard <rxe-AT-renre-europe.com>
3838
3843
3839 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3844 * IPython/Gnuplot2.py (gp): Patch for Gnuplot.py 1.6
3840 compatibility. Thanks to Hayden Callow
3845 compatibility. Thanks to Hayden Callow
3841 <h.callow-AT-elec.canterbury.ac.nz>
3846 <h.callow-AT-elec.canterbury.ac.nz>
3842
3847
3843 2002-10-04 Fernando Perez <fperez@colorado.edu>
3848 2002-10-04 Fernando Perez <fperez@colorado.edu>
3844
3849
3845 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3850 * IPython/Gnuplot2.py (PlotItem): Added 'index' option for
3846 Gnuplot.File objects.
3851 Gnuplot.File objects.
3847
3852
3848 2002-07-23 Fernando Perez <fperez@colorado.edu>
3853 2002-07-23 Fernando Perez <fperez@colorado.edu>
3849
3854
3850 * IPython/genutils.py (timing): Added timings() and timing() for
3855 * IPython/genutils.py (timing): Added timings() and timing() for
3851 quick access to the most commonly needed data, the execution
3856 quick access to the most commonly needed data, the execution
3852 times. Old timing() renamed to timings_out().
3857 times. Old timing() renamed to timings_out().
3853
3858
3854 2002-07-18 Fernando Perez <fperez@colorado.edu>
3859 2002-07-18 Fernando Perez <fperez@colorado.edu>
3855
3860
3856 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3861 * IPython/Shell.py (IPShellEmbed.restore_system_completer): fixed
3857 bug with nested instances disrupting the parent's tab completion.
3862 bug with nested instances disrupting the parent's tab completion.
3858
3863
3859 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3864 * IPython/iplib.py (all_completions): Added Alex Schmolck's
3860 all_completions code to begin the emacs integration.
3865 all_completions code to begin the emacs integration.
3861
3866
3862 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3867 * IPython/Gnuplot2.py (zip_items): Added optional 'titles'
3863 argument to allow titling individual arrays when plotting.
3868 argument to allow titling individual arrays when plotting.
3864
3869
3865 2002-07-15 Fernando Perez <fperez@colorado.edu>
3870 2002-07-15 Fernando Perez <fperez@colorado.edu>
3866
3871
3867 * setup.py (make_shortcut): changed to retrieve the value of
3872 * setup.py (make_shortcut): changed to retrieve the value of
3868 'Program Files' directory from the registry (this value changes in
3873 'Program Files' directory from the registry (this value changes in
3869 non-english versions of Windows). Thanks to Thomas Fanslau
3874 non-english versions of Windows). Thanks to Thomas Fanslau
3870 <tfanslau-AT-gmx.de> for the report.
3875 <tfanslau-AT-gmx.de> for the report.
3871
3876
3872 2002-07-10 Fernando Perez <fperez@colorado.edu>
3877 2002-07-10 Fernando Perez <fperez@colorado.edu>
3873
3878
3874 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3879 * IPython/ultraTB.py (VerboseTB.debugger): enabled workaround for
3875 a bug in pdb, which crashes if a line with only whitespace is
3880 a bug in pdb, which crashes if a line with only whitespace is
3876 entered. Bug report submitted to sourceforge.
3881 entered. Bug report submitted to sourceforge.
3877
3882
3878 2002-07-09 Fernando Perez <fperez@colorado.edu>
3883 2002-07-09 Fernando Perez <fperez@colorado.edu>
3879
3884
3880 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3885 * IPython/ultraTB.py (VerboseTB.nullrepr): fixed rare crash when
3881 reporting exceptions (it's a bug in inspect.py, I just set a
3886 reporting exceptions (it's a bug in inspect.py, I just set a
3882 workaround).
3887 workaround).
3883
3888
3884 2002-07-08 Fernando Perez <fperez@colorado.edu>
3889 2002-07-08 Fernando Perez <fperez@colorado.edu>
3885
3890
3886 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3891 * IPython/iplib.py (InteractiveShell.__init__): fixed reference to
3887 __IPYTHON__ in __builtins__ to show up in user_ns.
3892 __IPYTHON__ in __builtins__ to show up in user_ns.
3888
3893
3889 2002-07-03 Fernando Perez <fperez@colorado.edu>
3894 2002-07-03 Fernando Perez <fperez@colorado.edu>
3890
3895
3891 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3896 * IPython/GnuplotInteractive.py (magic_gp_set_default): changed
3892 name from @gp_set_instance to @gp_set_default.
3897 name from @gp_set_instance to @gp_set_default.
3893
3898
3894 * IPython/ipmaker.py (make_IPython): default editor value set to
3899 * IPython/ipmaker.py (make_IPython): default editor value set to
3895 '0' (a string), to match the rc file. Otherwise will crash when
3900 '0' (a string), to match the rc file. Otherwise will crash when
3896 .strip() is called on it.
3901 .strip() is called on it.
3897
3902
3898
3903
3899 2002-06-28 Fernando Perez <fperez@colorado.edu>
3904 2002-06-28 Fernando Perez <fperez@colorado.edu>
3900
3905
3901 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3906 * IPython/iplib.py (InteractiveShell.safe_execfile): fix importing
3902 of files in current directory when a file is executed via
3907 of files in current directory when a file is executed via
3903 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3908 @run. Patch also by RA <ralf_ahlbrink-AT-web.de>.
3904
3909
3905 * setup.py (manfiles): fix for rpm builds, submitted by RA
3910 * setup.py (manfiles): fix for rpm builds, submitted by RA
3906 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3911 <ralf_ahlbrink-AT-web.de>. Now we have RPMs!
3907
3912
3908 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3913 * IPython/ipmaker.py (make_IPython): fixed lookup of default
3909 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3914 editor when set to '0'. Problem was, '0' evaluates to True (it's a
3910 string!). A. Schmolck caught this one.
3915 string!). A. Schmolck caught this one.
3911
3916
3912 2002-06-27 Fernando Perez <fperez@colorado.edu>
3917 2002-06-27 Fernando Perez <fperez@colorado.edu>
3913
3918
3914 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3919 * IPython/ipmaker.py (make_IPython): fixed bug when running user
3915 defined files at the cmd line. __name__ wasn't being set to
3920 defined files at the cmd line. __name__ wasn't being set to
3916 __main__.
3921 __main__.
3917
3922
3918 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3923 * IPython/Gnuplot2.py (zip_items): improved it so it can plot also
3919 regular lists and tuples besides Numeric arrays.
3924 regular lists and tuples besides Numeric arrays.
3920
3925
3921 * IPython/Prompts.py (CachedOutput.__call__): Added output
3926 * IPython/Prompts.py (CachedOutput.__call__): Added output
3922 supression for input ending with ';'. Similar to Mathematica and
3927 supression for input ending with ';'. Similar to Mathematica and
3923 Matlab. The _* vars and Out[] list are still updated, just like
3928 Matlab. The _* vars and Out[] list are still updated, just like
3924 Mathematica behaves.
3929 Mathematica behaves.
3925
3930
3926 2002-06-25 Fernando Perez <fperez@colorado.edu>
3931 2002-06-25 Fernando Perez <fperez@colorado.edu>
3927
3932
3928 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3933 * IPython/ConfigLoader.py (ConfigLoader.load): fixed checking of
3929 .ini extensions for profiels under Windows.
3934 .ini extensions for profiels under Windows.
3930
3935
3931 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3936 * IPython/OInspect.py (Inspector.pinfo): improved alignment of
3932 string form. Fix contributed by Alexander Schmolck
3937 string form. Fix contributed by Alexander Schmolck
3933 <a.schmolck-AT-gmx.net>
3938 <a.schmolck-AT-gmx.net>
3934
3939
3935 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3940 * IPython/GnuplotRuntime.py (gp_new): new function. Returns a
3936 pre-configured Gnuplot instance.
3941 pre-configured Gnuplot instance.
3937
3942
3938 2002-06-21 Fernando Perez <fperez@colorado.edu>
3943 2002-06-21 Fernando Perez <fperez@colorado.edu>
3939
3944
3940 * IPython/numutils.py (exp_safe): new function, works around the
3945 * IPython/numutils.py (exp_safe): new function, works around the
3941 underflow problems in Numeric.
3946 underflow problems in Numeric.
3942 (log2): New fn. Safe log in base 2: returns exact integer answer
3947 (log2): New fn. Safe log in base 2: returns exact integer answer
3943 for exact integer powers of 2.
3948 for exact integer powers of 2.
3944
3949
3945 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3950 * IPython/Magic.py (get_py_filename): fixed it not expanding '~'
3946 properly.
3951 properly.
3947
3952
3948 2002-06-20 Fernando Perez <fperez@colorado.edu>
3953 2002-06-20 Fernando Perez <fperez@colorado.edu>
3949
3954
3950 * IPython/genutils.py (timing): new function like
3955 * IPython/genutils.py (timing): new function like
3951 Mathematica's. Similar to time_test, but returns more info.
3956 Mathematica's. Similar to time_test, but returns more info.
3952
3957
3953 2002-06-18 Fernando Perez <fperez@colorado.edu>
3958 2002-06-18 Fernando Perez <fperez@colorado.edu>
3954
3959
3955 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3960 * IPython/Magic.py (Magic.magic_save): modified @save and @r
3956 according to Mike Heeter's suggestions.
3961 according to Mike Heeter's suggestions.
3957
3962
3958 2002-06-16 Fernando Perez <fperez@colorado.edu>
3963 2002-06-16 Fernando Perez <fperez@colorado.edu>
3959
3964
3960 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3965 * IPython/GnuplotRuntime.py: Massive overhaul to the Gnuplot
3961 system. GnuplotMagic is gone as a user-directory option. New files
3966 system. GnuplotMagic is gone as a user-directory option. New files
3962 make it easier to use all the gnuplot stuff both from external
3967 make it easier to use all the gnuplot stuff both from external
3963 programs as well as from IPython. Had to rewrite part of
3968 programs as well as from IPython. Had to rewrite part of
3964 hardcopy() b/c of a strange bug: often the ps files simply don't
3969 hardcopy() b/c of a strange bug: often the ps files simply don't
3965 get created, and require a repeat of the command (often several
3970 get created, and require a repeat of the command (often several
3966 times).
3971 times).
3967
3972
3968 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3973 * IPython/ultraTB.py (AutoFormattedTB.__call__): changed to
3969 resolve output channel at call time, so that if sys.stderr has
3974 resolve output channel at call time, so that if sys.stderr has
3970 been redirected by user this gets honored.
3975 been redirected by user this gets honored.
3971
3976
3972 2002-06-13 Fernando Perez <fperez@colorado.edu>
3977 2002-06-13 Fernando Perez <fperez@colorado.edu>
3973
3978
3974 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3979 * IPython/Shell.py (IPShell.__init__): Changed IPythonShell to
3975 IPShell. Kept a copy with the old names to avoid breaking people's
3980 IPShell. Kept a copy with the old names to avoid breaking people's
3976 embedded code.
3981 embedded code.
3977
3982
3978 * IPython/ipython: simplified it to the bare minimum after
3983 * IPython/ipython: simplified it to the bare minimum after
3979 Holger's suggestions. Added info about how to use it in
3984 Holger's suggestions. Added info about how to use it in
3980 PYTHONSTARTUP.
3985 PYTHONSTARTUP.
3981
3986
3982 * IPython/Shell.py (IPythonShell): changed the options passing
3987 * IPython/Shell.py (IPythonShell): changed the options passing
3983 from a string with funky %s replacements to a straight list. Maybe
3988 from a string with funky %s replacements to a straight list. Maybe
3984 a bit more typing, but it follows sys.argv conventions, so there's
3989 a bit more typing, but it follows sys.argv conventions, so there's
3985 less special-casing to remember.
3990 less special-casing to remember.
3986
3991
3987 2002-06-12 Fernando Perez <fperez@colorado.edu>
3992 2002-06-12 Fernando Perez <fperez@colorado.edu>
3988
3993
3989 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3994 * IPython/Magic.py (Magic.magic_r): new magic auto-repeat
3990 command. Thanks to a suggestion by Mike Heeter.
3995 command. Thanks to a suggestion by Mike Heeter.
3991 (Magic.magic_pfile): added behavior to look at filenames if given
3996 (Magic.magic_pfile): added behavior to look at filenames if given
3992 arg is not a defined object.
3997 arg is not a defined object.
3993 (Magic.magic_save): New @save function to save code snippets. Also
3998 (Magic.magic_save): New @save function to save code snippets. Also
3994 a Mike Heeter idea.
3999 a Mike Heeter idea.
3995
4000
3996 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
4001 * IPython/UserConfig/GnuplotMagic.py (plot): Improvements to
3997 plot() and replot(). Much more convenient now, especially for
4002 plot() and replot(). Much more convenient now, especially for
3998 interactive use.
4003 interactive use.
3999
4004
4000 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4005 * IPython/Magic.py (Magic.magic_run): Added .py automatically to
4001 filenames.
4006 filenames.
4002
4007
4003 2002-06-02 Fernando Perez <fperez@colorado.edu>
4008 2002-06-02 Fernando Perez <fperez@colorado.edu>
4004
4009
4005 * IPython/Struct.py (Struct.__init__): modified to admit
4010 * IPython/Struct.py (Struct.__init__): modified to admit
4006 initialization via another struct.
4011 initialization via another struct.
4007
4012
4008 * IPython/genutils.py (SystemExec.__init__): New stateful
4013 * IPython/genutils.py (SystemExec.__init__): New stateful
4009 interface to xsys and bq. Useful for writing system scripts.
4014 interface to xsys and bq. Useful for writing system scripts.
4010
4015
4011 2002-05-30 Fernando Perez <fperez@colorado.edu>
4016 2002-05-30 Fernando Perez <fperez@colorado.edu>
4012
4017
4013 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4018 * MANIFEST.in: Changed docfile selection to exclude all the lyx
4014 documents. This will make the user download smaller (it's getting
4019 documents. This will make the user download smaller (it's getting
4015 too big).
4020 too big).
4016
4021
4017 2002-05-29 Fernando Perez <fperez@colorado.edu>
4022 2002-05-29 Fernando Perez <fperez@colorado.edu>
4018
4023
4019 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4024 * IPython/iplib.py (_FakeModule.__init__): New class introduced to
4020 fix problems with shelve and pickle. Seems to work, but I don't
4025 fix problems with shelve and pickle. Seems to work, but I don't
4021 know if corner cases break it. Thanks to Mike Heeter
4026 know if corner cases break it. Thanks to Mike Heeter
4022 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4027 <korora-AT-SDF.LONESTAR.ORG> for the bug reports and test cases.
4023
4028
4024 2002-05-24 Fernando Perez <fperez@colorado.edu>
4029 2002-05-24 Fernando Perez <fperez@colorado.edu>
4025
4030
4026 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4031 * IPython/Magic.py (Macro.__init__): fixed magics embedded in
4027 macros having broken.
4032 macros having broken.
4028
4033
4029 2002-05-21 Fernando Perez <fperez@colorado.edu>
4034 2002-05-21 Fernando Perez <fperez@colorado.edu>
4030
4035
4031 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4036 * IPython/Magic.py (Magic.magic_logstart): fixed recently
4032 introduced logging bug: all history before logging started was
4037 introduced logging bug: all history before logging started was
4033 being written one character per line! This came from the redesign
4038 being written one character per line! This came from the redesign
4034 of the input history as a special list which slices to strings,
4039 of the input history as a special list which slices to strings,
4035 not to lists.
4040 not to lists.
4036
4041
4037 2002-05-20 Fernando Perez <fperez@colorado.edu>
4042 2002-05-20 Fernando Perez <fperez@colorado.edu>
4038
4043
4039 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4044 * IPython/Prompts.py (CachedOutput.__init__): made the color table
4040 be an attribute of all classes in this module. The design of these
4045 be an attribute of all classes in this module. The design of these
4041 classes needs some serious overhauling.
4046 classes needs some serious overhauling.
4042
4047
4043 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4048 * IPython/DPyGetOpt.py (DPyGetOpt.setPosixCompliance): fixed bug
4044 which was ignoring '_' in option names.
4049 which was ignoring '_' in option names.
4045
4050
4046 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4051 * IPython/ultraTB.py (FormattedTB.__init__): Changed
4047 'Verbose_novars' to 'Context' and made it the new default. It's a
4052 'Verbose_novars' to 'Context' and made it the new default. It's a
4048 bit more readable and also safer than verbose.
4053 bit more readable and also safer than verbose.
4049
4054
4050 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4055 * IPython/PyColorize.py (Parser.__call__): Fixed coloring of
4051 triple-quoted strings.
4056 triple-quoted strings.
4052
4057
4053 * IPython/OInspect.py (__all__): new module exposing the object
4058 * IPython/OInspect.py (__all__): new module exposing the object
4054 introspection facilities. Now the corresponding magics are dummy
4059 introspection facilities. Now the corresponding magics are dummy
4055 wrappers around this. Having this module will make it much easier
4060 wrappers around this. Having this module will make it much easier
4056 to put these functions into our modified pdb.
4061 to put these functions into our modified pdb.
4057 This new object inspector system uses the new colorizing module,
4062 This new object inspector system uses the new colorizing module,
4058 so source code and other things are nicely syntax highlighted.
4063 so source code and other things are nicely syntax highlighted.
4059
4064
4060 2002-05-18 Fernando Perez <fperez@colorado.edu>
4065 2002-05-18 Fernando Perez <fperez@colorado.edu>
4061
4066
4062 * IPython/ColorANSI.py: Split the coloring tools into a separate
4067 * IPython/ColorANSI.py: Split the coloring tools into a separate
4063 module so I can use them in other code easier (they were part of
4068 module so I can use them in other code easier (they were part of
4064 ultraTB).
4069 ultraTB).
4065
4070
4066 2002-05-17 Fernando Perez <fperez@colorado.edu>
4071 2002-05-17 Fernando Perez <fperez@colorado.edu>
4067
4072
4068 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4073 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4069 fixed it to set the global 'g' also to the called instance, as
4074 fixed it to set the global 'g' also to the called instance, as
4070 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4075 long as 'g' was still a gnuplot instance (so it doesn't overwrite
4071 user's 'g' variables).
4076 user's 'g' variables).
4072
4077
4073 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4078 * IPython/iplib.py (InteractiveShell.__init__): Added In/Out
4074 global variables (aliases to _ih,_oh) so that users which expect
4079 global variables (aliases to _ih,_oh) so that users which expect
4075 In[5] or Out[7] to work aren't unpleasantly surprised.
4080 In[5] or Out[7] to work aren't unpleasantly surprised.
4076 (InputList.__getslice__): new class to allow executing slices of
4081 (InputList.__getslice__): new class to allow executing slices of
4077 input history directly. Very simple class, complements the use of
4082 input history directly. Very simple class, complements the use of
4078 macros.
4083 macros.
4079
4084
4080 2002-05-16 Fernando Perez <fperez@colorado.edu>
4085 2002-05-16 Fernando Perez <fperez@colorado.edu>
4081
4086
4082 * setup.py (docdirbase): make doc directory be just doc/IPython
4087 * setup.py (docdirbase): make doc directory be just doc/IPython
4083 without version numbers, it will reduce clutter for users.
4088 without version numbers, it will reduce clutter for users.
4084
4089
4085 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4090 * IPython/Magic.py (Magic.magic_run): Add explicit local dict to
4086 execfile call to prevent possible memory leak. See for details:
4091 execfile call to prevent possible memory leak. See for details:
4087 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4092 http://mail.python.org/pipermail/python-list/2002-February/088476.html
4088
4093
4089 2002-05-15 Fernando Perez <fperez@colorado.edu>
4094 2002-05-15 Fernando Perez <fperez@colorado.edu>
4090
4095
4091 * IPython/Magic.py (Magic.magic_psource): made the object
4096 * IPython/Magic.py (Magic.magic_psource): made the object
4092 introspection names be more standard: pdoc, pdef, pfile and
4097 introspection names be more standard: pdoc, pdef, pfile and
4093 psource. They all print/page their output, and it makes
4098 psource. They all print/page their output, and it makes
4094 remembering them easier. Kept old names for compatibility as
4099 remembering them easier. Kept old names for compatibility as
4095 aliases.
4100 aliases.
4096
4101
4097 2002-05-14 Fernando Perez <fperez@colorado.edu>
4102 2002-05-14 Fernando Perez <fperez@colorado.edu>
4098
4103
4099 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4104 * IPython/UserConfig/GnuplotMagic.py: I think I finally understood
4100 what the mouse problem was. The trick is to use gnuplot with temp
4105 what the mouse problem was. The trick is to use gnuplot with temp
4101 files and NOT with pipes (for data communication), because having
4106 files and NOT with pipes (for data communication), because having
4102 both pipes and the mouse on is bad news.
4107 both pipes and the mouse on is bad news.
4103
4108
4104 2002-05-13 Fernando Perez <fperez@colorado.edu>
4109 2002-05-13 Fernando Perez <fperez@colorado.edu>
4105
4110
4106 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4111 * IPython/Magic.py (Magic._ofind): fixed namespace order search
4107 bug. Information would be reported about builtins even when
4112 bug. Information would be reported about builtins even when
4108 user-defined functions overrode them.
4113 user-defined functions overrode them.
4109
4114
4110 2002-05-11 Fernando Perez <fperez@colorado.edu>
4115 2002-05-11 Fernando Perez <fperez@colorado.edu>
4111
4116
4112 * IPython/__init__.py (__all__): removed FlexCompleter from
4117 * IPython/__init__.py (__all__): removed FlexCompleter from
4113 __all__ so that things don't fail in platforms without readline.
4118 __all__ so that things don't fail in platforms without readline.
4114
4119
4115 2002-05-10 Fernando Perez <fperez@colorado.edu>
4120 2002-05-10 Fernando Perez <fperez@colorado.edu>
4116
4121
4117 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4122 * IPython/__init__.py (__all__): removed numutils from __all__ b/c
4118 it requires Numeric, effectively making Numeric a dependency for
4123 it requires Numeric, effectively making Numeric a dependency for
4119 IPython.
4124 IPython.
4120
4125
4121 * Released 0.2.13
4126 * Released 0.2.13
4122
4127
4123 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4128 * IPython/Magic.py (Magic.magic_prun): big overhaul to the
4124 profiler interface. Now all the major options from the profiler
4129 profiler interface. Now all the major options from the profiler
4125 module are directly supported in IPython, both for single
4130 module are directly supported in IPython, both for single
4126 expressions (@prun) and for full programs (@run -p).
4131 expressions (@prun) and for full programs (@run -p).
4127
4132
4128 2002-05-09 Fernando Perez <fperez@colorado.edu>
4133 2002-05-09 Fernando Perez <fperez@colorado.edu>
4129
4134
4130 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4135 * IPython/Magic.py (Magic.magic_doc): fixed to show docstrings of
4131 magic properly formatted for screen.
4136 magic properly formatted for screen.
4132
4137
4133 * setup.py (make_shortcut): Changed things to put pdf version in
4138 * setup.py (make_shortcut): Changed things to put pdf version in
4134 doc/ instead of doc/manual (had to change lyxport a bit).
4139 doc/ instead of doc/manual (had to change lyxport a bit).
4135
4140
4136 * IPython/Magic.py (Profile.string_stats): made profile runs go
4141 * IPython/Magic.py (Profile.string_stats): made profile runs go
4137 through pager (they are long and a pager allows searching, saving,
4142 through pager (they are long and a pager allows searching, saving,
4138 etc.)
4143 etc.)
4139
4144
4140 2002-05-08 Fernando Perez <fperez@colorado.edu>
4145 2002-05-08 Fernando Perez <fperez@colorado.edu>
4141
4146
4142 * Released 0.2.12
4147 * Released 0.2.12
4143
4148
4144 2002-05-06 Fernando Perez <fperez@colorado.edu>
4149 2002-05-06 Fernando Perez <fperez@colorado.edu>
4145
4150
4146 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4151 * IPython/Magic.py (Magic.magic_hist): small bug fixed (recently
4147 introduced); 'hist n1 n2' was broken.
4152 introduced); 'hist n1 n2' was broken.
4148 (Magic.magic_pdb): added optional on/off arguments to @pdb
4153 (Magic.magic_pdb): added optional on/off arguments to @pdb
4149 (Magic.magic_run): added option -i to @run, which executes code in
4154 (Magic.magic_run): added option -i to @run, which executes code in
4150 the IPython namespace instead of a clean one. Also added @irun as
4155 the IPython namespace instead of a clean one. Also added @irun as
4151 an alias to @run -i.
4156 an alias to @run -i.
4152
4157
4153 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4158 * IPython/UserConfig/GnuplotMagic.py (magic_gp_set_instance):
4154 fixed (it didn't really do anything, the namespaces were wrong).
4159 fixed (it didn't really do anything, the namespaces were wrong).
4155
4160
4156 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4161 * IPython/Debugger.py (__init__): Added workaround for python 2.1
4157
4162
4158 * IPython/__init__.py (__all__): Fixed package namespace, now
4163 * IPython/__init__.py (__all__): Fixed package namespace, now
4159 'import IPython' does give access to IPython.<all> as
4164 'import IPython' does give access to IPython.<all> as
4160 expected. Also renamed __release__ to Release.
4165 expected. Also renamed __release__ to Release.
4161
4166
4162 * IPython/Debugger.py (__license__): created new Pdb class which
4167 * IPython/Debugger.py (__license__): created new Pdb class which
4163 functions like a drop-in for the normal pdb.Pdb but does NOT
4168 functions like a drop-in for the normal pdb.Pdb but does NOT
4164 import readline by default. This way it doesn't muck up IPython's
4169 import readline by default. This way it doesn't muck up IPython's
4165 readline handling, and now tab-completion finally works in the
4170 readline handling, and now tab-completion finally works in the
4166 debugger -- sort of. It completes things globally visible, but the
4171 debugger -- sort of. It completes things globally visible, but the
4167 completer doesn't track the stack as pdb walks it. That's a bit
4172 completer doesn't track the stack as pdb walks it. That's a bit
4168 tricky, and I'll have to implement it later.
4173 tricky, and I'll have to implement it later.
4169
4174
4170 2002-05-05 Fernando Perez <fperez@colorado.edu>
4175 2002-05-05 Fernando Perez <fperez@colorado.edu>
4171
4176
4172 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4177 * IPython/Magic.py (Magic.magic_oinfo): fixed formatting bug for
4173 magic docstrings when printed via ? (explicit \'s were being
4178 magic docstrings when printed via ? (explicit \'s were being
4174 printed).
4179 printed).
4175
4180
4176 * IPython/ipmaker.py (make_IPython): fixed namespace
4181 * IPython/ipmaker.py (make_IPython): fixed namespace
4177 identification bug. Now variables loaded via logs or command-line
4182 identification bug. Now variables loaded via logs or command-line
4178 files are recognized in the interactive namespace by @who.
4183 files are recognized in the interactive namespace by @who.
4179
4184
4180 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4185 * IPython/iplib.py (InteractiveShell.safe_execfile): Fixed bug in
4181 log replay system stemming from the string form of Structs.
4186 log replay system stemming from the string form of Structs.
4182
4187
4183 * IPython/Magic.py (Macro.__init__): improved macros to properly
4188 * IPython/Magic.py (Macro.__init__): improved macros to properly
4184 handle magic commands in them.
4189 handle magic commands in them.
4185 (Magic.magic_logstart): usernames are now expanded so 'logstart
4190 (Magic.magic_logstart): usernames are now expanded so 'logstart
4186 ~/mylog' now works.
4191 ~/mylog' now works.
4187
4192
4188 * IPython/iplib.py (complete): fixed bug where paths starting with
4193 * IPython/iplib.py (complete): fixed bug where paths starting with
4189 '/' would be completed as magic names.
4194 '/' would be completed as magic names.
4190
4195
4191 2002-05-04 Fernando Perez <fperez@colorado.edu>
4196 2002-05-04 Fernando Perez <fperez@colorado.edu>
4192
4197
4193 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4198 * IPython/Magic.py (Magic.magic_run): added options -p and -f to
4194 allow running full programs under the profiler's control.
4199 allow running full programs under the profiler's control.
4195
4200
4196 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4201 * IPython/ultraTB.py (FormattedTB.__init__): Added Verbose_novars
4197 mode to report exceptions verbosely but without formatting
4202 mode to report exceptions verbosely but without formatting
4198 variables. This addresses the issue of ipython 'freezing' (it's
4203 variables. This addresses the issue of ipython 'freezing' (it's
4199 not frozen, but caught in an expensive formatting loop) when huge
4204 not frozen, but caught in an expensive formatting loop) when huge
4200 variables are in the context of an exception.
4205 variables are in the context of an exception.
4201 (VerboseTB.text): Added '--->' markers at line where exception was
4206 (VerboseTB.text): Added '--->' markers at line where exception was
4202 triggered. Much clearer to read, especially in NoColor modes.
4207 triggered. Much clearer to read, especially in NoColor modes.
4203
4208
4204 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4209 * IPython/Magic.py (Magic.magic_run): bugfix: -n option had been
4205 implemented in reverse when changing to the new parse_options().
4210 implemented in reverse when changing to the new parse_options().
4206
4211
4207 2002-05-03 Fernando Perez <fperez@colorado.edu>
4212 2002-05-03 Fernando Perez <fperez@colorado.edu>
4208
4213
4209 * IPython/Magic.py (Magic.parse_options): new function so that
4214 * IPython/Magic.py (Magic.parse_options): new function so that
4210 magics can parse options easier.
4215 magics can parse options easier.
4211 (Magic.magic_prun): new function similar to profile.run(),
4216 (Magic.magic_prun): new function similar to profile.run(),
4212 suggested by Chris Hart.
4217 suggested by Chris Hart.
4213 (Magic.magic_cd): fixed behavior so that it only changes if
4218 (Magic.magic_cd): fixed behavior so that it only changes if
4214 directory actually is in history.
4219 directory actually is in history.
4215
4220
4216 * IPython/usage.py (__doc__): added information about potential
4221 * IPython/usage.py (__doc__): added information about potential
4217 slowness of Verbose exception mode when there are huge data
4222 slowness of Verbose exception mode when there are huge data
4218 structures to be formatted (thanks to Archie Paulson).
4223 structures to be formatted (thanks to Archie Paulson).
4219
4224
4220 * IPython/ipmaker.py (make_IPython): Changed default logging
4225 * IPython/ipmaker.py (make_IPython): Changed default logging
4221 (when simply called with -log) to use curr_dir/ipython.log in
4226 (when simply called with -log) to use curr_dir/ipython.log in
4222 rotate mode. Fixed crash which was occuring with -log before
4227 rotate mode. Fixed crash which was occuring with -log before
4223 (thanks to Jim Boyle).
4228 (thanks to Jim Boyle).
4224
4229
4225 2002-05-01 Fernando Perez <fperez@colorado.edu>
4230 2002-05-01 Fernando Perez <fperez@colorado.edu>
4226
4231
4227 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4232 * Released 0.2.11 for these fixes (mainly the ultraTB one which
4228 was nasty -- though somewhat of a corner case).
4233 was nasty -- though somewhat of a corner case).
4229
4234
4230 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4235 * IPython/ultraTB.py (AutoFormattedTB.text): renamed __text to
4231 text (was a bug).
4236 text (was a bug).
4232
4237
4233 2002-04-30 Fernando Perez <fperez@colorado.edu>
4238 2002-04-30 Fernando Perez <fperez@colorado.edu>
4234
4239
4235 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4240 * IPython/UserConfig/GnuplotMagic.py (magic_gp): Minor fix to add
4236 a print after ^D or ^C from the user so that the In[] prompt
4241 a print after ^D or ^C from the user so that the In[] prompt
4237 doesn't over-run the gnuplot one.
4242 doesn't over-run the gnuplot one.
4238
4243
4239 2002-04-29 Fernando Perez <fperez@colorado.edu>
4244 2002-04-29 Fernando Perez <fperez@colorado.edu>
4240
4245
4241 * Released 0.2.10
4246 * Released 0.2.10
4242
4247
4243 * IPython/__release__.py (version): get date dynamically.
4248 * IPython/__release__.py (version): get date dynamically.
4244
4249
4245 * Misc. documentation updates thanks to Arnd's comments. Also ran
4250 * Misc. documentation updates thanks to Arnd's comments. Also ran
4246 a full spellcheck on the manual (hadn't been done in a while).
4251 a full spellcheck on the manual (hadn't been done in a while).
4247
4252
4248 2002-04-27 Fernando Perez <fperez@colorado.edu>
4253 2002-04-27 Fernando Perez <fperez@colorado.edu>
4249
4254
4250 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4255 * IPython/Magic.py (Magic.magic_logstart): Fixed bug where
4251 starting a log in mid-session would reset the input history list.
4256 starting a log in mid-session would reset the input history list.
4252
4257
4253 2002-04-26 Fernando Perez <fperez@colorado.edu>
4258 2002-04-26 Fernando Perez <fperez@colorado.edu>
4254
4259
4255 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4260 * IPython/iplib.py (InteractiveShell.wait): Fixed bug where not
4256 all files were being included in an update. Now anything in
4261 all files were being included in an update. Now anything in
4257 UserConfig that matches [A-Za-z]*.py will go (this excludes
4262 UserConfig that matches [A-Za-z]*.py will go (this excludes
4258 __init__.py)
4263 __init__.py)
4259
4264
4260 2002-04-25 Fernando Perez <fperez@colorado.edu>
4265 2002-04-25 Fernando Perez <fperez@colorado.edu>
4261
4266
4262 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4267 * IPython/iplib.py (InteractiveShell.__init__): Added __IPYTHON__
4263 to __builtins__ so that any form of embedded or imported code can
4268 to __builtins__ so that any form of embedded or imported code can
4264 test for being inside IPython.
4269 test for being inside IPython.
4265
4270
4266 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4271 * IPython/UserConfig/GnuplotMagic.py: (magic_gp_set_instance):
4267 changed to GnuplotMagic because it's now an importable module,
4272 changed to GnuplotMagic because it's now an importable module,
4268 this makes the name follow that of the standard Gnuplot module.
4273 this makes the name follow that of the standard Gnuplot module.
4269 GnuplotMagic can now be loaded at any time in mid-session.
4274 GnuplotMagic can now be loaded at any time in mid-session.
4270
4275
4271 2002-04-24 Fernando Perez <fperez@colorado.edu>
4276 2002-04-24 Fernando Perez <fperez@colorado.edu>
4272
4277
4273 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4278 * IPython/numutils.py: removed SIUnits. It doesn't properly set
4274 the globals (IPython has its own namespace) and the
4279 the globals (IPython has its own namespace) and the
4275 PhysicalQuantity stuff is much better anyway.
4280 PhysicalQuantity stuff is much better anyway.
4276
4281
4277 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4282 * IPython/UserConfig/example-gnuplot.py (g2): Added gnuplot
4278 embedding example to standard user directory for
4283 embedding example to standard user directory for
4279 distribution. Also put it in the manual.
4284 distribution. Also put it in the manual.
4280
4285
4281 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4286 * IPython/numutils.py (gnuplot_exec): Changed to take a gnuplot
4282 instance as first argument (so it doesn't rely on some obscure
4287 instance as first argument (so it doesn't rely on some obscure
4283 hidden global).
4288 hidden global).
4284
4289
4285 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4290 * IPython/UserConfig/ipythonrc.py: put () back in accepted
4286 delimiters. While it prevents ().TAB from working, it allows
4291 delimiters. While it prevents ().TAB from working, it allows
4287 completions in open (... expressions. This is by far a more common
4292 completions in open (... expressions. This is by far a more common
4288 case.
4293 case.
4289
4294
4290 2002-04-23 Fernando Perez <fperez@colorado.edu>
4295 2002-04-23 Fernando Perez <fperez@colorado.edu>
4291
4296
4292 * IPython/Extensions/InterpreterPasteInput.py: new
4297 * IPython/Extensions/InterpreterPasteInput.py: new
4293 syntax-processing module for pasting lines with >>> or ... at the
4298 syntax-processing module for pasting lines with >>> or ... at the
4294 start.
4299 start.
4295
4300
4296 * IPython/Extensions/PhysicalQ_Interactive.py
4301 * IPython/Extensions/PhysicalQ_Interactive.py
4297 (PhysicalQuantityInteractive.__int__): fixed to work with either
4302 (PhysicalQuantityInteractive.__int__): fixed to work with either
4298 Numeric or math.
4303 Numeric or math.
4299
4304
4300 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4305 * IPython/UserConfig/ipythonrc-numeric.py: reorganized the
4301 provided profiles. Now we have:
4306 provided profiles. Now we have:
4302 -math -> math module as * and cmath with its own namespace.
4307 -math -> math module as * and cmath with its own namespace.
4303 -numeric -> Numeric as *, plus gnuplot & grace
4308 -numeric -> Numeric as *, plus gnuplot & grace
4304 -physics -> same as before
4309 -physics -> same as before
4305
4310
4306 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4311 * IPython/Magic.py (Magic.magic_magic): Fixed bug where
4307 user-defined magics wouldn't be found by @magic if they were
4312 user-defined magics wouldn't be found by @magic if they were
4308 defined as class methods. Also cleaned up the namespace search
4313 defined as class methods. Also cleaned up the namespace search
4309 logic and the string building (to use %s instead of many repeated
4314 logic and the string building (to use %s instead of many repeated
4310 string adds).
4315 string adds).
4311
4316
4312 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4317 * IPython/UserConfig/example-magic.py (magic_foo): updated example
4313 of user-defined magics to operate with class methods (cleaner, in
4318 of user-defined magics to operate with class methods (cleaner, in
4314 line with the gnuplot code).
4319 line with the gnuplot code).
4315
4320
4316 2002-04-22 Fernando Perez <fperez@colorado.edu>
4321 2002-04-22 Fernando Perez <fperez@colorado.edu>
4317
4322
4318 * setup.py: updated dependency list so that manual is updated when
4323 * setup.py: updated dependency list so that manual is updated when
4319 all included files change.
4324 all included files change.
4320
4325
4321 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4326 * IPython/ipmaker.py (make_IPython): Fixed bug which was ignoring
4322 the delimiter removal option (the fix is ugly right now).
4327 the delimiter removal option (the fix is ugly right now).
4323
4328
4324 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4329 * IPython/UserConfig/ipythonrc-physics.py: simplified not to load
4325 all of the math profile (quicker loading, no conflict between
4330 all of the math profile (quicker loading, no conflict between
4326 g-9.8 and g-gnuplot).
4331 g-9.8 and g-gnuplot).
4327
4332
4328 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4333 * IPython/CrashHandler.py (CrashHandler.__call__): changed default
4329 name of post-mortem files to IPython_crash_report.txt.
4334 name of post-mortem files to IPython_crash_report.txt.
4330
4335
4331 * Cleanup/update of the docs. Added all the new readline info and
4336 * Cleanup/update of the docs. Added all the new readline info and
4332 formatted all lists as 'real lists'.
4337 formatted all lists as 'real lists'.
4333
4338
4334 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4339 * IPython/ipmaker.py (make_IPython): removed now-obsolete
4335 tab-completion options, since the full readline parse_and_bind is
4340 tab-completion options, since the full readline parse_and_bind is
4336 now accessible.
4341 now accessible.
4337
4342
4338 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4343 * IPython/iplib.py (InteractiveShell.init_readline): Changed
4339 handling of readline options. Now users can specify any string to
4344 handling of readline options. Now users can specify any string to
4340 be passed to parse_and_bind(), as well as the delimiters to be
4345 be passed to parse_and_bind(), as well as the delimiters to be
4341 removed.
4346 removed.
4342 (InteractiveShell.__init__): Added __name__ to the global
4347 (InteractiveShell.__init__): Added __name__ to the global
4343 namespace so that things like Itpl which rely on its existence
4348 namespace so that things like Itpl which rely on its existence
4344 don't crash.
4349 don't crash.
4345 (InteractiveShell._prefilter): Defined the default with a _ so
4350 (InteractiveShell._prefilter): Defined the default with a _ so
4346 that prefilter() is easier to override, while the default one
4351 that prefilter() is easier to override, while the default one
4347 remains available.
4352 remains available.
4348
4353
4349 2002-04-18 Fernando Perez <fperez@colorado.edu>
4354 2002-04-18 Fernando Perez <fperez@colorado.edu>
4350
4355
4351 * Added information about pdb in the docs.
4356 * Added information about pdb in the docs.
4352
4357
4353 2002-04-17 Fernando Perez <fperez@colorado.edu>
4358 2002-04-17 Fernando Perez <fperez@colorado.edu>
4354
4359
4355 * IPython/ipmaker.py (make_IPython): added rc_override option to
4360 * IPython/ipmaker.py (make_IPython): added rc_override option to
4356 allow passing config options at creation time which may override
4361 allow passing config options at creation time which may override
4357 anything set in the config files or command line. This is
4362 anything set in the config files or command line. This is
4358 particularly useful for configuring embedded instances.
4363 particularly useful for configuring embedded instances.
4359
4364
4360 2002-04-15 Fernando Perez <fperez@colorado.edu>
4365 2002-04-15 Fernando Perez <fperez@colorado.edu>
4361
4366
4362 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4367 * IPython/Logger.py (Logger.log): Fixed a nasty bug which could
4363 crash embedded instances because of the input cache falling out of
4368 crash embedded instances because of the input cache falling out of
4364 sync with the output counter.
4369 sync with the output counter.
4365
4370
4366 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4371 * IPython/Shell.py (IPythonShellEmbed.__init__): added a debug
4367 mode which calls pdb after an uncaught exception in IPython itself.
4372 mode which calls pdb after an uncaught exception in IPython itself.
4368
4373
4369 2002-04-14 Fernando Perez <fperez@colorado.edu>
4374 2002-04-14 Fernando Perez <fperez@colorado.edu>
4370
4375
4371 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4376 * IPython/iplib.py (InteractiveShell.showtraceback): pdb mucks up
4372 readline, fix it back after each call.
4377 readline, fix it back after each call.
4373
4378
4374 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4379 * IPython/ultraTB.py (AutoFormattedTB.__text): made text a private
4375 method to force all access via __call__(), which guarantees that
4380 method to force all access via __call__(), which guarantees that
4376 traceback references are properly deleted.
4381 traceback references are properly deleted.
4377
4382
4378 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4383 * IPython/Prompts.py (CachedOutput._display): minor fixes to
4379 improve printing when pprint is in use.
4384 improve printing when pprint is in use.
4380
4385
4381 2002-04-13 Fernando Perez <fperez@colorado.edu>
4386 2002-04-13 Fernando Perez <fperez@colorado.edu>
4382
4387
4383 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4388 * IPython/Shell.py (IPythonShellEmbed.__call__): SystemExit
4384 exceptions aren't caught anymore. If the user triggers one, he
4389 exceptions aren't caught anymore. If the user triggers one, he
4385 should know why he's doing it and it should go all the way up,
4390 should know why he's doing it and it should go all the way up,
4386 just like any other exception. So now @abort will fully kill the
4391 just like any other exception. So now @abort will fully kill the
4387 embedded interpreter and the embedding code (unless that happens
4392 embedded interpreter and the embedding code (unless that happens
4388 to catch SystemExit).
4393 to catch SystemExit).
4389
4394
4390 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4395 * IPython/ultraTB.py (VerboseTB.__init__): added a call_pdb flag
4391 and a debugger() method to invoke the interactive pdb debugger
4396 and a debugger() method to invoke the interactive pdb debugger
4392 after printing exception information. Also added the corresponding
4397 after printing exception information. Also added the corresponding
4393 -pdb option and @pdb magic to control this feature, and updated
4398 -pdb option and @pdb magic to control this feature, and updated
4394 the docs. After a suggestion from Christopher Hart
4399 the docs. After a suggestion from Christopher Hart
4395 (hart-AT-caltech.edu).
4400 (hart-AT-caltech.edu).
4396
4401
4397 2002-04-12 Fernando Perez <fperez@colorado.edu>
4402 2002-04-12 Fernando Perez <fperez@colorado.edu>
4398
4403
4399 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4404 * IPython/Shell.py (IPythonShellEmbed.__init__): modified to use
4400 the exception handlers defined by the user (not the CrashHandler)
4405 the exception handlers defined by the user (not the CrashHandler)
4401 so that user exceptions don't trigger an ipython bug report.
4406 so that user exceptions don't trigger an ipython bug report.
4402
4407
4403 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4408 * IPython/ultraTB.py (ColorTB.__init__): made the color scheme
4404 configurable (it should have always been so).
4409 configurable (it should have always been so).
4405
4410
4406 2002-03-26 Fernando Perez <fperez@colorado.edu>
4411 2002-03-26 Fernando Perez <fperez@colorado.edu>
4407
4412
4408 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4413 * IPython/Shell.py (IPythonShellEmbed.__call__): many changes here
4409 and there to fix embedding namespace issues. This should all be
4414 and there to fix embedding namespace issues. This should all be
4410 done in a more elegant way.
4415 done in a more elegant way.
4411
4416
4412 2002-03-25 Fernando Perez <fperez@colorado.edu>
4417 2002-03-25 Fernando Perez <fperez@colorado.edu>
4413
4418
4414 * IPython/genutils.py (get_home_dir): Try to make it work under
4419 * IPython/genutils.py (get_home_dir): Try to make it work under
4415 win9x also.
4420 win9x also.
4416
4421
4417 2002-03-20 Fernando Perez <fperez@colorado.edu>
4422 2002-03-20 Fernando Perez <fperez@colorado.edu>
4418
4423
4419 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4424 * IPython/Shell.py (IPythonShellEmbed.__init__): leave
4420 sys.displayhook untouched upon __init__.
4425 sys.displayhook untouched upon __init__.
4421
4426
4422 2002-03-19 Fernando Perez <fperez@colorado.edu>
4427 2002-03-19 Fernando Perez <fperez@colorado.edu>
4423
4428
4424 * Released 0.2.9 (for embedding bug, basically).
4429 * Released 0.2.9 (for embedding bug, basically).
4425
4430
4426 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4431 * IPython/Shell.py (IPythonShellEmbed.__call__): Trap SystemExit
4427 exceptions so that enclosing shell's state can be restored.
4432 exceptions so that enclosing shell's state can be restored.
4428
4433
4429 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4434 * Changed magic_gnuplot.py to magic-gnuplot.py to standardize
4430 naming conventions in the .ipython/ dir.
4435 naming conventions in the .ipython/ dir.
4431
4436
4432 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4437 * IPython/iplib.py (InteractiveShell.init_readline): removed '-'
4433 from delimiters list so filenames with - in them get expanded.
4438 from delimiters list so filenames with - in them get expanded.
4434
4439
4435 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4440 * IPython/Shell.py (IPythonShellEmbed.__call__): fixed bug with
4436 sys.displayhook not being properly restored after an embedded call.
4441 sys.displayhook not being properly restored after an embedded call.
4437
4442
4438 2002-03-18 Fernando Perez <fperez@colorado.edu>
4443 2002-03-18 Fernando Perez <fperez@colorado.edu>
4439
4444
4440 * Released 0.2.8
4445 * Released 0.2.8
4441
4446
4442 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4447 * IPython/iplib.py (InteractiveShell.user_setup): fixed bug where
4443 some files weren't being included in a -upgrade.
4448 some files weren't being included in a -upgrade.
4444 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4449 (InteractiveShell.init_readline): Added 'set show-all-if-ambiguous
4445 on' so that the first tab completes.
4450 on' so that the first tab completes.
4446 (InteractiveShell.handle_magic): fixed bug with spaces around
4451 (InteractiveShell.handle_magic): fixed bug with spaces around
4447 quotes breaking many magic commands.
4452 quotes breaking many magic commands.
4448
4453
4449 * setup.py: added note about ignoring the syntax error messages at
4454 * setup.py: added note about ignoring the syntax error messages at
4450 installation.
4455 installation.
4451
4456
4452 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4457 * IPython/UserConfig/magic_gnuplot.py (magic_gp): finished
4453 streamlining the gnuplot interface, now there's only one magic @gp.
4458 streamlining the gnuplot interface, now there's only one magic @gp.
4454
4459
4455 2002-03-17 Fernando Perez <fperez@colorado.edu>
4460 2002-03-17 Fernando Perez <fperez@colorado.edu>
4456
4461
4457 * IPython/UserConfig/magic_gnuplot.py: new name for the
4462 * IPython/UserConfig/magic_gnuplot.py: new name for the
4458 example-magic_pm.py file. Much enhanced system, now with a shell
4463 example-magic_pm.py file. Much enhanced system, now with a shell
4459 for communicating directly with gnuplot, one command at a time.
4464 for communicating directly with gnuplot, one command at a time.
4460
4465
4461 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4466 * IPython/Magic.py (Magic.magic_run): added option -n to prevent
4462 setting __name__=='__main__'.
4467 setting __name__=='__main__'.
4463
4468
4464 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4469 * IPython/UserConfig/example-magic_pm.py (magic_pm): Added
4465 mini-shell for accessing gnuplot from inside ipython. Should
4470 mini-shell for accessing gnuplot from inside ipython. Should
4466 extend it later for grace access too. Inspired by Arnd's
4471 extend it later for grace access too. Inspired by Arnd's
4467 suggestion.
4472 suggestion.
4468
4473
4469 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4474 * IPython/iplib.py (InteractiveShell.handle_magic): fixed bug when
4470 calling magic functions with () in their arguments. Thanks to Arnd
4475 calling magic functions with () in their arguments. Thanks to Arnd
4471 Baecker for pointing this to me.
4476 Baecker for pointing this to me.
4472
4477
4473 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4478 * IPython/numutils.py (sum_flat): fixed bug. Would recurse
4474 infinitely for integer or complex arrays (only worked with floats).
4479 infinitely for integer or complex arrays (only worked with floats).
4475
4480
4476 2002-03-16 Fernando Perez <fperez@colorado.edu>
4481 2002-03-16 Fernando Perez <fperez@colorado.edu>
4477
4482
4478 * setup.py: Merged setup and setup_windows into a single script
4483 * setup.py: Merged setup and setup_windows into a single script
4479 which properly handles things for windows users.
4484 which properly handles things for windows users.
4480
4485
4481 2002-03-15 Fernando Perez <fperez@colorado.edu>
4486 2002-03-15 Fernando Perez <fperez@colorado.edu>
4482
4487
4483 * Big change to the manual: now the magics are all automatically
4488 * Big change to the manual: now the magics are all automatically
4484 documented. This information is generated from their docstrings
4489 documented. This information is generated from their docstrings
4485 and put in a latex file included by the manual lyx file. This way
4490 and put in a latex file included by the manual lyx file. This way
4486 we get always up to date information for the magics. The manual
4491 we get always up to date information for the magics. The manual
4487 now also has proper version information, also auto-synced.
4492 now also has proper version information, also auto-synced.
4488
4493
4489 For this to work, an undocumented --magic_docstrings option was added.
4494 For this to work, an undocumented --magic_docstrings option was added.
4490
4495
4491 2002-03-13 Fernando Perez <fperez@colorado.edu>
4496 2002-03-13 Fernando Perez <fperez@colorado.edu>
4492
4497
4493 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4498 * IPython/ultraTB.py (TermColors): fixed problem with dark colors
4494 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4499 under CDE terminals. An explicit ;2 color reset is needed in the escapes.
4495
4500
4496 2002-03-12 Fernando Perez <fperez@colorado.edu>
4501 2002-03-12 Fernando Perez <fperez@colorado.edu>
4497
4502
4498 * IPython/ultraTB.py (TermColors): changed color escapes again to
4503 * IPython/ultraTB.py (TermColors): changed color escapes again to
4499 fix the (old, reintroduced) line-wrapping bug. Basically, if
4504 fix the (old, reintroduced) line-wrapping bug. Basically, if
4500 \001..\002 aren't given in the color escapes, lines get wrapped
4505 \001..\002 aren't given in the color escapes, lines get wrapped
4501 weirdly. But giving those screws up old xterms and emacs terms. So
4506 weirdly. But giving those screws up old xterms and emacs terms. So
4502 I added some logic for emacs terms to be ok, but I can't identify old
4507 I added some logic for emacs terms to be ok, but I can't identify old
4503 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4508 xterms separately ($TERM=='xterm' for many terminals, like konsole).
4504
4509
4505 2002-03-10 Fernando Perez <fperez@colorado.edu>
4510 2002-03-10 Fernando Perez <fperez@colorado.edu>
4506
4511
4507 * IPython/usage.py (__doc__): Various documentation cleanups and
4512 * IPython/usage.py (__doc__): Various documentation cleanups and
4508 updates, both in usage docstrings and in the manual.
4513 updates, both in usage docstrings and in the manual.
4509
4514
4510 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4515 * IPython/Prompts.py (CachedOutput.set_colors): cleanups for
4511 handling of caching. Set minimum acceptabe value for having a
4516 handling of caching. Set minimum acceptabe value for having a
4512 cache at 20 values.
4517 cache at 20 values.
4513
4518
4514 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4519 * IPython/iplib.py (InteractiveShell.user_setup): moved the
4515 install_first_time function to a method, renamed it and added an
4520 install_first_time function to a method, renamed it and added an
4516 'upgrade' mode. Now people can update their config directory with
4521 'upgrade' mode. Now people can update their config directory with
4517 a simple command line switch (-upgrade, also new).
4522 a simple command line switch (-upgrade, also new).
4518
4523
4519 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4524 * IPython/Magic.py (Magic.magic_pfile): Made @pfile an alias to
4520 @file (convenient for automagic users under Python >= 2.2).
4525 @file (convenient for automagic users under Python >= 2.2).
4521 Removed @files (it seemed more like a plural than an abbrev. of
4526 Removed @files (it seemed more like a plural than an abbrev. of
4522 'file show').
4527 'file show').
4523
4528
4524 * IPython/iplib.py (install_first_time): Fixed crash if there were
4529 * IPython/iplib.py (install_first_time): Fixed crash if there were
4525 backup files ('~') in .ipython/ install directory.
4530 backup files ('~') in .ipython/ install directory.
4526
4531
4527 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4532 * IPython/ipmaker.py (make_IPython): fixes for new prompt
4528 system. Things look fine, but these changes are fairly
4533 system. Things look fine, but these changes are fairly
4529 intrusive. Test them for a few days.
4534 intrusive. Test them for a few days.
4530
4535
4531 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4536 * IPython/Prompts.py (CachedOutput.__init__): Massive rewrite of
4532 the prompts system. Now all in/out prompt strings are user
4537 the prompts system. Now all in/out prompt strings are user
4533 controllable. This is particularly useful for embedding, as one
4538 controllable. This is particularly useful for embedding, as one
4534 can tag embedded instances with particular prompts.
4539 can tag embedded instances with particular prompts.
4535
4540
4536 Also removed global use of sys.ps1/2, which now allows nested
4541 Also removed global use of sys.ps1/2, which now allows nested
4537 embeddings without any problems. Added command-line options for
4542 embeddings without any problems. Added command-line options for
4538 the prompt strings.
4543 the prompt strings.
4539
4544
4540 2002-03-08 Fernando Perez <fperez@colorado.edu>
4545 2002-03-08 Fernando Perez <fperez@colorado.edu>
4541
4546
4542 * IPython/UserConfig/example-embed-short.py (ipshell): added
4547 * IPython/UserConfig/example-embed-short.py (ipshell): added
4543 example file with the bare minimum code for embedding.
4548 example file with the bare minimum code for embedding.
4544
4549
4545 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4550 * IPython/Shell.py (IPythonShellEmbed.set_dummy_mode): added
4546 functionality for the embeddable shell to be activated/deactivated
4551 functionality for the embeddable shell to be activated/deactivated
4547 either globally or at each call.
4552 either globally or at each call.
4548
4553
4549 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4554 * IPython/Prompts.py (Prompt1.auto_rewrite): Fixes the problem of
4550 rewriting the prompt with '--->' for auto-inputs with proper
4555 rewriting the prompt with '--->' for auto-inputs with proper
4551 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4556 coloring. Now the previous UGLY hack in handle_auto() is gone, and
4552 this is handled by the prompts class itself, as it should.
4557 this is handled by the prompts class itself, as it should.
4553
4558
4554 2002-03-05 Fernando Perez <fperez@colorado.edu>
4559 2002-03-05 Fernando Perez <fperez@colorado.edu>
4555
4560
4556 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4561 * IPython/Magic.py (Magic.magic_logstart): Changed @log to
4557 @logstart to avoid name clashes with the math log function.
4562 @logstart to avoid name clashes with the math log function.
4558
4563
4559 * Big updates to X/Emacs section of the manual.
4564 * Big updates to X/Emacs section of the manual.
4560
4565
4561 * Removed ipython_emacs. Milan explained to me how to pass
4566 * Removed ipython_emacs. Milan explained to me how to pass
4562 arguments to ipython through Emacs. Some day I'm going to end up
4567 arguments to ipython through Emacs. Some day I'm going to end up
4563 learning some lisp...
4568 learning some lisp...
4564
4569
4565 2002-03-04 Fernando Perez <fperez@colorado.edu>
4570 2002-03-04 Fernando Perez <fperez@colorado.edu>
4566
4571
4567 * IPython/ipython_emacs: Created script to be used as the
4572 * IPython/ipython_emacs: Created script to be used as the
4568 py-python-command Emacs variable so we can pass IPython
4573 py-python-command Emacs variable so we can pass IPython
4569 parameters. I can't figure out how to tell Emacs directly to pass
4574 parameters. I can't figure out how to tell Emacs directly to pass
4570 parameters to IPython, so a dummy shell script will do it.
4575 parameters to IPython, so a dummy shell script will do it.
4571
4576
4572 Other enhancements made for things to work better under Emacs'
4577 Other enhancements made for things to work better under Emacs'
4573 various types of terminals. Many thanks to Milan Zamazal
4578 various types of terminals. Many thanks to Milan Zamazal
4574 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4579 <pdm-AT-zamazal.org> for all the suggestions and pointers.
4575
4580
4576 2002-03-01 Fernando Perez <fperez@colorado.edu>
4581 2002-03-01 Fernando Perez <fperez@colorado.edu>
4577
4582
4578 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4583 * IPython/ipmaker.py (make_IPython): added a --readline! option so
4579 that loading of readline is now optional. This gives better
4584 that loading of readline is now optional. This gives better
4580 control to emacs users.
4585 control to emacs users.
4581
4586
4582 * IPython/ultraTB.py (__date__): Modified color escape sequences
4587 * IPython/ultraTB.py (__date__): Modified color escape sequences
4583 and now things work fine under xterm and in Emacs' term buffers
4588 and now things work fine under xterm and in Emacs' term buffers
4584 (though not shell ones). Well, in emacs you get colors, but all
4589 (though not shell ones). Well, in emacs you get colors, but all
4585 seem to be 'light' colors (no difference between dark and light
4590 seem to be 'light' colors (no difference between dark and light
4586 ones). But the garbage chars are gone, and also in xterms. It
4591 ones). But the garbage chars are gone, and also in xterms. It
4587 seems that now I'm using 'cleaner' ansi sequences.
4592 seems that now I'm using 'cleaner' ansi sequences.
4588
4593
4589 2002-02-21 Fernando Perez <fperez@colorado.edu>
4594 2002-02-21 Fernando Perez <fperez@colorado.edu>
4590
4595
4591 * Released 0.2.7 (mainly to publish the scoping fix).
4596 * Released 0.2.7 (mainly to publish the scoping fix).
4592
4597
4593 * IPython/Logger.py (Logger.logstate): added. A corresponding
4598 * IPython/Logger.py (Logger.logstate): added. A corresponding
4594 @logstate magic was created.
4599 @logstate magic was created.
4595
4600
4596 * IPython/Magic.py: fixed nested scoping problem under Python
4601 * IPython/Magic.py: fixed nested scoping problem under Python
4597 2.1.x (automagic wasn't working).
4602 2.1.x (automagic wasn't working).
4598
4603
4599 2002-02-20 Fernando Perez <fperez@colorado.edu>
4604 2002-02-20 Fernando Perez <fperez@colorado.edu>
4600
4605
4601 * Released 0.2.6.
4606 * Released 0.2.6.
4602
4607
4603 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4608 * IPython/OutputTrap.py (OutputTrap.__init__): added a 'quiet'
4604 option so that logs can come out without any headers at all.
4609 option so that logs can come out without any headers at all.
4605
4610
4606 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4611 * IPython/UserConfig/ipythonrc-scipy.py: created a profile for
4607 SciPy.
4612 SciPy.
4608
4613
4609 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4614 * IPython/iplib.py (InteractiveShell.embed_mainloop): Changed so
4610 that embedded IPython calls don't require vars() to be explicitly
4615 that embedded IPython calls don't require vars() to be explicitly
4611 passed. Now they are extracted from the caller's frame (code
4616 passed. Now they are extracted from the caller's frame (code
4612 snatched from Eric Jones' weave). Added better documentation to
4617 snatched from Eric Jones' weave). Added better documentation to
4613 the section on embedding and the example file.
4618 the section on embedding and the example file.
4614
4619
4615 * IPython/genutils.py (page): Changed so that under emacs, it just
4620 * IPython/genutils.py (page): Changed so that under emacs, it just
4616 prints the string. You can then page up and down in the emacs
4621 prints the string. You can then page up and down in the emacs
4617 buffer itself. This is how the builtin help() works.
4622 buffer itself. This is how the builtin help() works.
4618
4623
4619 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4624 * IPython/Prompts.py (CachedOutput.__call__): Fixed issue with
4620 macro scoping: macros need to be executed in the user's namespace
4625 macro scoping: macros need to be executed in the user's namespace
4621 to work as if they had been typed by the user.
4626 to work as if they had been typed by the user.
4622
4627
4623 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4628 * IPython/Magic.py (Magic.magic_macro): Changed macros so they
4624 execute automatically (no need to type 'exec...'). They then
4629 execute automatically (no need to type 'exec...'). They then
4625 behave like 'true macros'. The printing system was also modified
4630 behave like 'true macros'. The printing system was also modified
4626 for this to work.
4631 for this to work.
4627
4632
4628 2002-02-19 Fernando Perez <fperez@colorado.edu>
4633 2002-02-19 Fernando Perez <fperez@colorado.edu>
4629
4634
4630 * IPython/genutils.py (page_file): new function for paging files
4635 * IPython/genutils.py (page_file): new function for paging files
4631 in an OS-independent way. Also necessary for file viewing to work
4636 in an OS-independent way. Also necessary for file viewing to work
4632 well inside Emacs buffers.
4637 well inside Emacs buffers.
4633 (page): Added checks for being in an emacs buffer.
4638 (page): Added checks for being in an emacs buffer.
4634 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4639 (page): fixed bug for Windows ($TERM isn't set in Windows). Fixed
4635 same bug in iplib.
4640 same bug in iplib.
4636
4641
4637 2002-02-18 Fernando Perez <fperez@colorado.edu>
4642 2002-02-18 Fernando Perez <fperez@colorado.edu>
4638
4643
4639 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4644 * IPython/iplib.py (InteractiveShell.init_readline): modified use
4640 of readline so that IPython can work inside an Emacs buffer.
4645 of readline so that IPython can work inside an Emacs buffer.
4641
4646
4642 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4647 * IPython/ultraTB.py (AutoFormattedTB.__call__): some fixes to
4643 method signatures (they weren't really bugs, but it looks cleaner
4648 method signatures (they weren't really bugs, but it looks cleaner
4644 and keeps PyChecker happy).
4649 and keeps PyChecker happy).
4645
4650
4646 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4651 * IPython/ipmaker.py (make_IPython): added hooks Struct to __IP
4647 for implementing various user-defined hooks. Currently only
4652 for implementing various user-defined hooks. Currently only
4648 display is done.
4653 display is done.
4649
4654
4650 * IPython/Prompts.py (CachedOutput._display): changed display
4655 * IPython/Prompts.py (CachedOutput._display): changed display
4651 functions so that they can be dynamically changed by users easily.
4656 functions so that they can be dynamically changed by users easily.
4652
4657
4653 * IPython/Extensions/numeric_formats.py (num_display): added an
4658 * IPython/Extensions/numeric_formats.py (num_display): added an
4654 extension for printing NumPy arrays in flexible manners. It
4659 extension for printing NumPy arrays in flexible manners. It
4655 doesn't do anything yet, but all the structure is in
4660 doesn't do anything yet, but all the structure is in
4656 place. Ultimately the plan is to implement output format control
4661 place. Ultimately the plan is to implement output format control
4657 like in Octave.
4662 like in Octave.
4658
4663
4659 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4664 * IPython/Magic.py (Magic.lsmagic): changed so that bound magic
4660 methods are found at run-time by all the automatic machinery.
4665 methods are found at run-time by all the automatic machinery.
4661
4666
4662 2002-02-17 Fernando Perez <fperez@colorado.edu>
4667 2002-02-17 Fernando Perez <fperez@colorado.edu>
4663
4668
4664 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4669 * setup_Windows.py (make_shortcut): documented. Cleaned up the
4665 whole file a little.
4670 whole file a little.
4666
4671
4667 * ToDo: closed this document. Now there's a new_design.lyx
4672 * ToDo: closed this document. Now there's a new_design.lyx
4668 document for all new ideas. Added making a pdf of it for the
4673 document for all new ideas. Added making a pdf of it for the
4669 end-user distro.
4674 end-user distro.
4670
4675
4671 * IPython/Logger.py (Logger.switch_log): Created this to replace
4676 * IPython/Logger.py (Logger.switch_log): Created this to replace
4672 logon() and logoff(). It also fixes a nasty crash reported by
4677 logon() and logoff(). It also fixes a nasty crash reported by
4673 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4678 Philip Hisley <compsys-AT-starpower.net>. Many thanks to him.
4674
4679
4675 * IPython/iplib.py (complete): got auto-completion to work with
4680 * IPython/iplib.py (complete): got auto-completion to work with
4676 automagic (I had wanted this for a long time).
4681 automagic (I had wanted this for a long time).
4677
4682
4678 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4683 * IPython/Magic.py (Magic.magic_files): Added @files as an alias
4679 to @file, since file() is now a builtin and clashes with automagic
4684 to @file, since file() is now a builtin and clashes with automagic
4680 for @file.
4685 for @file.
4681
4686
4682 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4687 * Made some new files: Prompts, CrashHandler, Magic, Logger. All
4683 of this was previously in iplib, which had grown to more than 2000
4688 of this was previously in iplib, which had grown to more than 2000
4684 lines, way too long. No new functionality, but it makes managing
4689 lines, way too long. No new functionality, but it makes managing
4685 the code a bit easier.
4690 the code a bit easier.
4686
4691
4687 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4692 * IPython/iplib.py (IPythonCrashHandler.__call__): Added version
4688 information to crash reports.
4693 information to crash reports.
4689
4694
4690 2002-02-12 Fernando Perez <fperez@colorado.edu>
4695 2002-02-12 Fernando Perez <fperez@colorado.edu>
4691
4696
4692 * Released 0.2.5.
4697 * Released 0.2.5.
4693
4698
4694 2002-02-11 Fernando Perez <fperez@colorado.edu>
4699 2002-02-11 Fernando Perez <fperez@colorado.edu>
4695
4700
4696 * Wrote a relatively complete Windows installer. It puts
4701 * Wrote a relatively complete Windows installer. It puts
4697 everything in place, creates Start Menu entries and fixes the
4702 everything in place, creates Start Menu entries and fixes the
4698 color issues. Nothing fancy, but it works.
4703 color issues. Nothing fancy, but it works.
4699
4704
4700 2002-02-10 Fernando Perez <fperez@colorado.edu>
4705 2002-02-10 Fernando Perez <fperez@colorado.edu>
4701
4706
4702 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4707 * IPython/iplib.py (InteractiveShell.safe_execfile): added an
4703 os.path.expanduser() call so that we can type @run ~/myfile.py and
4708 os.path.expanduser() call so that we can type @run ~/myfile.py and
4704 have thigs work as expected.
4709 have thigs work as expected.
4705
4710
4706 * IPython/genutils.py (page): fixed exception handling so things
4711 * IPython/genutils.py (page): fixed exception handling so things
4707 work both in Unix and Windows correctly. Quitting a pager triggers
4712 work both in Unix and Windows correctly. Quitting a pager triggers
4708 an IOError/broken pipe in Unix, and in windows not finding a pager
4713 an IOError/broken pipe in Unix, and in windows not finding a pager
4709 is also an IOError, so I had to actually look at the return value
4714 is also an IOError, so I had to actually look at the return value
4710 of the exception, not just the exception itself. Should be ok now.
4715 of the exception, not just the exception itself. Should be ok now.
4711
4716
4712 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4717 * IPython/ultraTB.py (ColorSchemeTable.set_active_scheme):
4713 modified to allow case-insensitive color scheme changes.
4718 modified to allow case-insensitive color scheme changes.
4714
4719
4715 2002-02-09 Fernando Perez <fperez@colorado.edu>
4720 2002-02-09 Fernando Perez <fperez@colorado.edu>
4716
4721
4717 * IPython/genutils.py (native_line_ends): new function to leave
4722 * IPython/genutils.py (native_line_ends): new function to leave
4718 user config files with os-native line-endings.
4723 user config files with os-native line-endings.
4719
4724
4720 * README and manual updates.
4725 * README and manual updates.
4721
4726
4722 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4727 * IPython/genutils.py: fixed unicode bug: use types.StringTypes
4723 instead of StringType to catch Unicode strings.
4728 instead of StringType to catch Unicode strings.
4724
4729
4725 * IPython/genutils.py (filefind): fixed bug for paths with
4730 * IPython/genutils.py (filefind): fixed bug for paths with
4726 embedded spaces (very common in Windows).
4731 embedded spaces (very common in Windows).
4727
4732
4728 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4733 * IPython/ipmaker.py (make_IPython): added a '.ini' to the rc
4729 files under Windows, so that they get automatically associated
4734 files under Windows, so that they get automatically associated
4730 with a text editor. Windows makes it a pain to handle
4735 with a text editor. Windows makes it a pain to handle
4731 extension-less files.
4736 extension-less files.
4732
4737
4733 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4738 * IPython/iplib.py (InteractiveShell.init_readline): Made the
4734 warning about readline only occur for Posix. In Windows there's no
4739 warning about readline only occur for Posix. In Windows there's no
4735 way to get readline, so why bother with the warning.
4740 way to get readline, so why bother with the warning.
4736
4741
4737 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4742 * IPython/Struct.py (Struct.__str__): fixed to use self.__dict__
4738 for __str__ instead of dir(self), since dir() changed in 2.2.
4743 for __str__ instead of dir(self), since dir() changed in 2.2.
4739
4744
4740 * Ported to Windows! Tested on XP, I suspect it should work fine
4745 * Ported to Windows! Tested on XP, I suspect it should work fine
4741 on NT/2000, but I don't think it will work on 98 et al. That
4746 on NT/2000, but I don't think it will work on 98 et al. That
4742 series of Windows is such a piece of junk anyway that I won't try
4747 series of Windows is such a piece of junk anyway that I won't try
4743 porting it there. The XP port was straightforward, showed a few
4748 porting it there. The XP port was straightforward, showed a few
4744 bugs here and there (fixed all), in particular some string
4749 bugs here and there (fixed all), in particular some string
4745 handling stuff which required considering Unicode strings (which
4750 handling stuff which required considering Unicode strings (which
4746 Windows uses). This is good, but hasn't been too tested :) No
4751 Windows uses). This is good, but hasn't been too tested :) No
4747 fancy installer yet, I'll put a note in the manual so people at
4752 fancy installer yet, I'll put a note in the manual so people at
4748 least make manually a shortcut.
4753 least make manually a shortcut.
4749
4754
4750 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4755 * IPython/iplib.py (Magic.magic_colors): Unified the color options
4751 into a single one, "colors". This now controls both prompt and
4756 into a single one, "colors". This now controls both prompt and
4752 exception color schemes, and can be changed both at startup
4757 exception color schemes, and can be changed both at startup
4753 (either via command-line switches or via ipythonrc files) and at
4758 (either via command-line switches or via ipythonrc files) and at
4754 runtime, with @colors.
4759 runtime, with @colors.
4755 (Magic.magic_run): renamed @prun to @run and removed the old
4760 (Magic.magic_run): renamed @prun to @run and removed the old
4756 @run. The two were too similar to warrant keeping both.
4761 @run. The two were too similar to warrant keeping both.
4757
4762
4758 2002-02-03 Fernando Perez <fperez@colorado.edu>
4763 2002-02-03 Fernando Perez <fperez@colorado.edu>
4759
4764
4760 * IPython/iplib.py (install_first_time): Added comment on how to
4765 * IPython/iplib.py (install_first_time): Added comment on how to
4761 configure the color options for first-time users. Put a <return>
4766 configure the color options for first-time users. Put a <return>
4762 request at the end so that small-terminal users get a chance to
4767 request at the end so that small-terminal users get a chance to
4763 read the startup info.
4768 read the startup info.
4764
4769
4765 2002-01-23 Fernando Perez <fperez@colorado.edu>
4770 2002-01-23 Fernando Perez <fperez@colorado.edu>
4766
4771
4767 * IPython/iplib.py (CachedOutput.update): Changed output memory
4772 * IPython/iplib.py (CachedOutput.update): Changed output memory
4768 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4773 variable names from _o,_oo,_ooo,_o<n> to simply _,__,___,_<n>. For
4769 input history we still use _i. Did this b/c these variable are
4774 input history we still use _i. Did this b/c these variable are
4770 very commonly used in interactive work, so the less we need to
4775 very commonly used in interactive work, so the less we need to
4771 type the better off we are.
4776 type the better off we are.
4772 (Magic.magic_prun): updated @prun to better handle the namespaces
4777 (Magic.magic_prun): updated @prun to better handle the namespaces
4773 the file will run in, including a fix for __name__ not being set
4778 the file will run in, including a fix for __name__ not being set
4774 before.
4779 before.
4775
4780
4776 2002-01-20 Fernando Perez <fperez@colorado.edu>
4781 2002-01-20 Fernando Perez <fperez@colorado.edu>
4777
4782
4778 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4783 * IPython/ultraTB.py (VerboseTB.linereader): Fixed printing of
4779 extra garbage for Python 2.2. Need to look more carefully into
4784 extra garbage for Python 2.2. Need to look more carefully into
4780 this later.
4785 this later.
4781
4786
4782 2002-01-19 Fernando Perez <fperez@colorado.edu>
4787 2002-01-19 Fernando Perez <fperez@colorado.edu>
4783
4788
4784 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4789 * IPython/iplib.py (InteractiveShell.showtraceback): fixed to
4785 display SyntaxError exceptions properly formatted when they occur
4790 display SyntaxError exceptions properly formatted when they occur
4786 (they can be triggered by imported code).
4791 (they can be triggered by imported code).
4787
4792
4788 2002-01-18 Fernando Perez <fperez@colorado.edu>
4793 2002-01-18 Fernando Perez <fperez@colorado.edu>
4789
4794
4790 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4795 * IPython/iplib.py (InteractiveShell.safe_execfile): now
4791 SyntaxError exceptions are reported nicely formatted, instead of
4796 SyntaxError exceptions are reported nicely formatted, instead of
4792 spitting out only offset information as before.
4797 spitting out only offset information as before.
4793 (Magic.magic_prun): Added the @prun function for executing
4798 (Magic.magic_prun): Added the @prun function for executing
4794 programs with command line args inside IPython.
4799 programs with command line args inside IPython.
4795
4800
4796 2002-01-16 Fernando Perez <fperez@colorado.edu>
4801 2002-01-16 Fernando Perez <fperez@colorado.edu>
4797
4802
4798 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4803 * IPython/iplib.py (Magic.magic_hist): Changed @hist and @dhist
4799 to *not* include the last item given in a range. This brings their
4804 to *not* include the last item given in a range. This brings their
4800 behavior in line with Python's slicing:
4805 behavior in line with Python's slicing:
4801 a[n1:n2] -> a[n1]...a[n2-1]
4806 a[n1:n2] -> a[n1]...a[n2-1]
4802 It may be a bit less convenient, but I prefer to stick to Python's
4807 It may be a bit less convenient, but I prefer to stick to Python's
4803 conventions *everywhere*, so users never have to wonder.
4808 conventions *everywhere*, so users never have to wonder.
4804 (Magic.magic_macro): Added @macro function to ease the creation of
4809 (Magic.magic_macro): Added @macro function to ease the creation of
4805 macros.
4810 macros.
4806
4811
4807 2002-01-05 Fernando Perez <fperez@colorado.edu>
4812 2002-01-05 Fernando Perez <fperez@colorado.edu>
4808
4813
4809 * Released 0.2.4.
4814 * Released 0.2.4.
4810
4815
4811 * IPython/iplib.py (Magic.magic_pdef):
4816 * IPython/iplib.py (Magic.magic_pdef):
4812 (InteractiveShell.safe_execfile): report magic lines and error
4817 (InteractiveShell.safe_execfile): report magic lines and error
4813 lines without line numbers so one can easily copy/paste them for
4818 lines without line numbers so one can easily copy/paste them for
4814 re-execution.
4819 re-execution.
4815
4820
4816 * Updated manual with recent changes.
4821 * Updated manual with recent changes.
4817
4822
4818 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4823 * IPython/iplib.py (Magic.magic_oinfo): added constructor
4819 docstring printing when class? is called. Very handy for knowing
4824 docstring printing when class? is called. Very handy for knowing
4820 how to create class instances (as long as __init__ is well
4825 how to create class instances (as long as __init__ is well
4821 documented, of course :)
4826 documented, of course :)
4822 (Magic.magic_doc): print both class and constructor docstrings.
4827 (Magic.magic_doc): print both class and constructor docstrings.
4823 (Magic.magic_pdef): give constructor info if passed a class and
4828 (Magic.magic_pdef): give constructor info if passed a class and
4824 __call__ info for callable object instances.
4829 __call__ info for callable object instances.
4825
4830
4826 2002-01-04 Fernando Perez <fperez@colorado.edu>
4831 2002-01-04 Fernando Perez <fperez@colorado.edu>
4827
4832
4828 * Made deep_reload() off by default. It doesn't always work
4833 * Made deep_reload() off by default. It doesn't always work
4829 exactly as intended, so it's probably safer to have it off. It's
4834 exactly as intended, so it's probably safer to have it off. It's
4830 still available as dreload() anyway, so nothing is lost.
4835 still available as dreload() anyway, so nothing is lost.
4831
4836
4832 2002-01-02 Fernando Perez <fperez@colorado.edu>
4837 2002-01-02 Fernando Perez <fperez@colorado.edu>
4833
4838
4834 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4839 * Released 0.2.3 (contacted R.Singh at CU about biopython course,
4835 so I wanted an updated release).
4840 so I wanted an updated release).
4836
4841
4837 2001-12-27 Fernando Perez <fperez@colorado.edu>
4842 2001-12-27 Fernando Perez <fperez@colorado.edu>
4838
4843
4839 * IPython/iplib.py (InteractiveShell.interact): Added the original
4844 * IPython/iplib.py (InteractiveShell.interact): Added the original
4840 code from 'code.py' for this module in order to change the
4845 code from 'code.py' for this module in order to change the
4841 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4846 handling of a KeyboardInterrupt. This was necessary b/c otherwise
4842 the history cache would break when the user hit Ctrl-C, and
4847 the history cache would break when the user hit Ctrl-C, and
4843 interact() offers no way to add any hooks to it.
4848 interact() offers no way to add any hooks to it.
4844
4849
4845 2001-12-23 Fernando Perez <fperez@colorado.edu>
4850 2001-12-23 Fernando Perez <fperez@colorado.edu>
4846
4851
4847 * setup.py: added check for 'MANIFEST' before trying to remove
4852 * setup.py: added check for 'MANIFEST' before trying to remove
4848 it. Thanks to Sean Reifschneider.
4853 it. Thanks to Sean Reifschneider.
4849
4854
4850 2001-12-22 Fernando Perez <fperez@colorado.edu>
4855 2001-12-22 Fernando Perez <fperez@colorado.edu>
4851
4856
4852 * Released 0.2.2.
4857 * Released 0.2.2.
4853
4858
4854 * Finished (reasonably) writing the manual. Later will add the
4859 * Finished (reasonably) writing the manual. Later will add the
4855 python-standard navigation stylesheets, but for the time being
4860 python-standard navigation stylesheets, but for the time being
4856 it's fairly complete. Distribution will include html and pdf
4861 it's fairly complete. Distribution will include html and pdf
4857 versions.
4862 versions.
4858
4863
4859 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4864 * Bugfix: '.' wasn't being added to sys.path. Thanks to Prabhu
4860 (MayaVi author).
4865 (MayaVi author).
4861
4866
4862 2001-12-21 Fernando Perez <fperez@colorado.edu>
4867 2001-12-21 Fernando Perez <fperez@colorado.edu>
4863
4868
4864 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4869 * Released 0.2.1. Barring any nasty bugs, this is it as far as a
4865 good public release, I think (with the manual and the distutils
4870 good public release, I think (with the manual and the distutils
4866 installer). The manual can use some work, but that can go
4871 installer). The manual can use some work, but that can go
4867 slowly. Otherwise I think it's quite nice for end users. Next
4872 slowly. Otherwise I think it's quite nice for end users. Next
4868 summer, rewrite the guts of it...
4873 summer, rewrite the guts of it...
4869
4874
4870 * Changed format of ipythonrc files to use whitespace as the
4875 * Changed format of ipythonrc files to use whitespace as the
4871 separator instead of an explicit '='. Cleaner.
4876 separator instead of an explicit '='. Cleaner.
4872
4877
4873 2001-12-20 Fernando Perez <fperez@colorado.edu>
4878 2001-12-20 Fernando Perez <fperez@colorado.edu>
4874
4879
4875 * Started a manual in LyX. For now it's just a quick merge of the
4880 * Started a manual in LyX. For now it's just a quick merge of the
4876 various internal docstrings and READMEs. Later it may grow into a
4881 various internal docstrings and READMEs. Later it may grow into a
4877 nice, full-blown manual.
4882 nice, full-blown manual.
4878
4883
4879 * Set up a distutils based installer. Installation should now be
4884 * Set up a distutils based installer. Installation should now be
4880 trivially simple for end-users.
4885 trivially simple for end-users.
4881
4886
4882 2001-12-11 Fernando Perez <fperez@colorado.edu>
4887 2001-12-11 Fernando Perez <fperez@colorado.edu>
4883
4888
4884 * Released 0.2.0. First public release, announced it at
4889 * Released 0.2.0. First public release, announced it at
4885 comp.lang.python. From now on, just bugfixes...
4890 comp.lang.python. From now on, just bugfixes...
4886
4891
4887 * Went through all the files, set copyright/license notices and
4892 * Went through all the files, set copyright/license notices and
4888 cleaned up things. Ready for release.
4893 cleaned up things. Ready for release.
4889
4894
4890 2001-12-10 Fernando Perez <fperez@colorado.edu>
4895 2001-12-10 Fernando Perez <fperez@colorado.edu>
4891
4896
4892 * Changed the first-time installer not to use tarfiles. It's more
4897 * Changed the first-time installer not to use tarfiles. It's more
4893 robust now and less unix-dependent. Also makes it easier for
4898 robust now and less unix-dependent. Also makes it easier for
4894 people to later upgrade versions.
4899 people to later upgrade versions.
4895
4900
4896 * Changed @exit to @abort to reflect the fact that it's pretty
4901 * Changed @exit to @abort to reflect the fact that it's pretty
4897 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4902 brutal (a sys.exit()). The difference between @abort and Ctrl-D
4898 becomes significant only when IPyhton is embedded: in that case,
4903 becomes significant only when IPyhton is embedded: in that case,
4899 C-D closes IPython only, but @abort kills the enclosing program
4904 C-D closes IPython only, but @abort kills the enclosing program
4900 too (unless it had called IPython inside a try catching
4905 too (unless it had called IPython inside a try catching
4901 SystemExit).
4906 SystemExit).
4902
4907
4903 * Created Shell module which exposes the actuall IPython Shell
4908 * Created Shell module which exposes the actuall IPython Shell
4904 classes, currently the normal and the embeddable one. This at
4909 classes, currently the normal and the embeddable one. This at
4905 least offers a stable interface we won't need to change when
4910 least offers a stable interface we won't need to change when
4906 (later) the internals are rewritten. That rewrite will be confined
4911 (later) the internals are rewritten. That rewrite will be confined
4907 to iplib and ipmaker, but the Shell interface should remain as is.
4912 to iplib and ipmaker, but the Shell interface should remain as is.
4908
4913
4909 * Added embed module which offers an embeddable IPShell object,
4914 * Added embed module which offers an embeddable IPShell object,
4910 useful to fire up IPython *inside* a running program. Great for
4915 useful to fire up IPython *inside* a running program. Great for
4911 debugging or dynamical data analysis.
4916 debugging or dynamical data analysis.
4912
4917
4913 2001-12-08 Fernando Perez <fperez@colorado.edu>
4918 2001-12-08 Fernando Perez <fperez@colorado.edu>
4914
4919
4915 * Fixed small bug preventing seeing info from methods of defined
4920 * Fixed small bug preventing seeing info from methods of defined
4916 objects (incorrect namespace in _ofind()).
4921 objects (incorrect namespace in _ofind()).
4917
4922
4918 * Documentation cleanup. Moved the main usage docstrings to a
4923 * Documentation cleanup. Moved the main usage docstrings to a
4919 separate file, usage.py (cleaner to maintain, and hopefully in the
4924 separate file, usage.py (cleaner to maintain, and hopefully in the
4920 future some perlpod-like way of producing interactive, man and
4925 future some perlpod-like way of producing interactive, man and
4921 html docs out of it will be found).
4926 html docs out of it will be found).
4922
4927
4923 * Added @profile to see your profile at any time.
4928 * Added @profile to see your profile at any time.
4924
4929
4925 * Added @p as an alias for 'print'. It's especially convenient if
4930 * Added @p as an alias for 'print'. It's especially convenient if
4926 using automagic ('p x' prints x).
4931 using automagic ('p x' prints x).
4927
4932
4928 * Small cleanups and fixes after a pychecker run.
4933 * Small cleanups and fixes after a pychecker run.
4929
4934
4930 * Changed the @cd command to handle @cd - and @cd -<n> for
4935 * Changed the @cd command to handle @cd - and @cd -<n> for
4931 visiting any directory in _dh.
4936 visiting any directory in _dh.
4932
4937
4933 * Introduced _dh, a history of visited directories. @dhist prints
4938 * Introduced _dh, a history of visited directories. @dhist prints
4934 it out with numbers.
4939 it out with numbers.
4935
4940
4936 2001-12-07 Fernando Perez <fperez@colorado.edu>
4941 2001-12-07 Fernando Perez <fperez@colorado.edu>
4937
4942
4938 * Released 0.1.22
4943 * Released 0.1.22
4939
4944
4940 * Made initialization a bit more robust against invalid color
4945 * Made initialization a bit more robust against invalid color
4941 options in user input (exit, not traceback-crash).
4946 options in user input (exit, not traceback-crash).
4942
4947
4943 * Changed the bug crash reporter to write the report only in the
4948 * Changed the bug crash reporter to write the report only in the
4944 user's .ipython directory. That way IPython won't litter people's
4949 user's .ipython directory. That way IPython won't litter people's
4945 hard disks with crash files all over the place. Also print on
4950 hard disks with crash files all over the place. Also print on
4946 screen the necessary mail command.
4951 screen the necessary mail command.
4947
4952
4948 * With the new ultraTB, implemented LightBG color scheme for light
4953 * With the new ultraTB, implemented LightBG color scheme for light
4949 background terminals. A lot of people like white backgrounds, so I
4954 background terminals. A lot of people like white backgrounds, so I
4950 guess we should at least give them something readable.
4955 guess we should at least give them something readable.
4951
4956
4952 2001-12-06 Fernando Perez <fperez@colorado.edu>
4957 2001-12-06 Fernando Perez <fperez@colorado.edu>
4953
4958
4954 * Modified the structure of ultraTB. Now there's a proper class
4959 * Modified the structure of ultraTB. Now there's a proper class
4955 for tables of color schemes which allow adding schemes easily and
4960 for tables of color schemes which allow adding schemes easily and
4956 switching the active scheme without creating a new instance every
4961 switching the active scheme without creating a new instance every
4957 time (which was ridiculous). The syntax for creating new schemes
4962 time (which was ridiculous). The syntax for creating new schemes
4958 is also cleaner. I think ultraTB is finally done, with a clean
4963 is also cleaner. I think ultraTB is finally done, with a clean
4959 class structure. Names are also much cleaner (now there's proper
4964 class structure. Names are also much cleaner (now there's proper
4960 color tables, no need for every variable to also have 'color' in
4965 color tables, no need for every variable to also have 'color' in
4961 its name).
4966 its name).
4962
4967
4963 * Broke down genutils into separate files. Now genutils only
4968 * Broke down genutils into separate files. Now genutils only
4964 contains utility functions, and classes have been moved to their
4969 contains utility functions, and classes have been moved to their
4965 own files (they had enough independent functionality to warrant
4970 own files (they had enough independent functionality to warrant
4966 it): ConfigLoader, OutputTrap, Struct.
4971 it): ConfigLoader, OutputTrap, Struct.
4967
4972
4968 2001-12-05 Fernando Perez <fperez@colorado.edu>
4973 2001-12-05 Fernando Perez <fperez@colorado.edu>
4969
4974
4970 * IPython turns 21! Released version 0.1.21, as a candidate for
4975 * IPython turns 21! Released version 0.1.21, as a candidate for
4971 public consumption. If all goes well, release in a few days.
4976 public consumption. If all goes well, release in a few days.
4972
4977
4973 * Fixed path bug (files in Extensions/ directory wouldn't be found
4978 * Fixed path bug (files in Extensions/ directory wouldn't be found
4974 unless IPython/ was explicitly in sys.path).
4979 unless IPython/ was explicitly in sys.path).
4975
4980
4976 * Extended the FlexCompleter class as MagicCompleter to allow
4981 * Extended the FlexCompleter class as MagicCompleter to allow
4977 completion of @-starting lines.
4982 completion of @-starting lines.
4978
4983
4979 * Created __release__.py file as a central repository for release
4984 * Created __release__.py file as a central repository for release
4980 info that other files can read from.
4985 info that other files can read from.
4981
4986
4982 * Fixed small bug in logging: when logging was turned on in
4987 * Fixed small bug in logging: when logging was turned on in
4983 mid-session, old lines with special meanings (!@?) were being
4988 mid-session, old lines with special meanings (!@?) were being
4984 logged without the prepended comment, which is necessary since
4989 logged without the prepended comment, which is necessary since
4985 they are not truly valid python syntax. This should make session
4990 they are not truly valid python syntax. This should make session
4986 restores produce less errors.
4991 restores produce less errors.
4987
4992
4988 * The namespace cleanup forced me to make a FlexCompleter class
4993 * The namespace cleanup forced me to make a FlexCompleter class
4989 which is nothing but a ripoff of rlcompleter, but with selectable
4994 which is nothing but a ripoff of rlcompleter, but with selectable
4990 namespace (rlcompleter only works in __main__.__dict__). I'll try
4995 namespace (rlcompleter only works in __main__.__dict__). I'll try
4991 to submit a note to the authors to see if this change can be
4996 to submit a note to the authors to see if this change can be
4992 incorporated in future rlcompleter releases (Dec.6: done)
4997 incorporated in future rlcompleter releases (Dec.6: done)
4993
4998
4994 * More fixes to namespace handling. It was a mess! Now all
4999 * More fixes to namespace handling. It was a mess! Now all
4995 explicit references to __main__.__dict__ are gone (except when
5000 explicit references to __main__.__dict__ are gone (except when
4996 really needed) and everything is handled through the namespace
5001 really needed) and everything is handled through the namespace
4997 dicts in the IPython instance. We seem to be getting somewhere
5002 dicts in the IPython instance. We seem to be getting somewhere
4998 with this, finally...
5003 with this, finally...
4999
5004
5000 * Small documentation updates.
5005 * Small documentation updates.
5001
5006
5002 * Created the Extensions directory under IPython (with an
5007 * Created the Extensions directory under IPython (with an
5003 __init__.py). Put the PhysicalQ stuff there. This directory should
5008 __init__.py). Put the PhysicalQ stuff there. This directory should
5004 be used for all special-purpose extensions.
5009 be used for all special-purpose extensions.
5005
5010
5006 * File renaming:
5011 * File renaming:
5007 ipythonlib --> ipmaker
5012 ipythonlib --> ipmaker
5008 ipplib --> iplib
5013 ipplib --> iplib
5009 This makes a bit more sense in terms of what these files actually do.
5014 This makes a bit more sense in terms of what these files actually do.
5010
5015
5011 * Moved all the classes and functions in ipythonlib to ipplib, so
5016 * Moved all the classes and functions in ipythonlib to ipplib, so
5012 now ipythonlib only has make_IPython(). This will ease up its
5017 now ipythonlib only has make_IPython(). This will ease up its
5013 splitting in smaller functional chunks later.
5018 splitting in smaller functional chunks later.
5014
5019
5015 * Cleaned up (done, I think) output of @whos. Better column
5020 * Cleaned up (done, I think) output of @whos. Better column
5016 formatting, and now shows str(var) for as much as it can, which is
5021 formatting, and now shows str(var) for as much as it can, which is
5017 typically what one gets with a 'print var'.
5022 typically what one gets with a 'print var'.
5018
5023
5019 2001-12-04 Fernando Perez <fperez@colorado.edu>
5024 2001-12-04 Fernando Perez <fperez@colorado.edu>
5020
5025
5021 * Fixed namespace problems. Now builtin/IPyhton/user names get
5026 * Fixed namespace problems. Now builtin/IPyhton/user names get
5022 properly reported in their namespace. Internal namespace handling
5027 properly reported in their namespace. Internal namespace handling
5023 is finally getting decent (not perfect yet, but much better than
5028 is finally getting decent (not perfect yet, but much better than
5024 the ad-hoc mess we had).
5029 the ad-hoc mess we had).
5025
5030
5026 * Removed -exit option. If people just want to run a python
5031 * Removed -exit option. If people just want to run a python
5027 script, that's what the normal interpreter is for. Less
5032 script, that's what the normal interpreter is for. Less
5028 unnecessary options, less chances for bugs.
5033 unnecessary options, less chances for bugs.
5029
5034
5030 * Added a crash handler which generates a complete post-mortem if
5035 * Added a crash handler which generates a complete post-mortem if
5031 IPython crashes. This will help a lot in tracking bugs down the
5036 IPython crashes. This will help a lot in tracking bugs down the
5032 road.
5037 road.
5033
5038
5034 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5039 * Fixed nasty bug in auto-evaluation part of prefilter(). Names
5035 which were boud to functions being reassigned would bypass the
5040 which were boud to functions being reassigned would bypass the
5036 logger, breaking the sync of _il with the prompt counter. This
5041 logger, breaking the sync of _il with the prompt counter. This
5037 would then crash IPython later when a new line was logged.
5042 would then crash IPython later when a new line was logged.
5038
5043
5039 2001-12-02 Fernando Perez <fperez@colorado.edu>
5044 2001-12-02 Fernando Perez <fperez@colorado.edu>
5040
5045
5041 * Made IPython a package. This means people don't have to clutter
5046 * Made IPython a package. This means people don't have to clutter
5042 their sys.path with yet another directory. Changed the INSTALL
5047 their sys.path with yet another directory. Changed the INSTALL
5043 file accordingly.
5048 file accordingly.
5044
5049
5045 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5050 * Cleaned up the output of @who_ls, @who and @whos. @who_ls now
5046 sorts its output (so @who shows it sorted) and @whos formats the
5051 sorts its output (so @who shows it sorted) and @whos formats the
5047 table according to the width of the first column. Nicer, easier to
5052 table according to the width of the first column. Nicer, easier to
5048 read. Todo: write a generic table_format() which takes a list of
5053 read. Todo: write a generic table_format() which takes a list of
5049 lists and prints it nicely formatted, with optional row/column
5054 lists and prints it nicely formatted, with optional row/column
5050 separators and proper padding and justification.
5055 separators and proper padding and justification.
5051
5056
5052 * Released 0.1.20
5057 * Released 0.1.20
5053
5058
5054 * Fixed bug in @log which would reverse the inputcache list (a
5059 * Fixed bug in @log which would reverse the inputcache list (a
5055 copy operation was missing).
5060 copy operation was missing).
5056
5061
5057 * Code cleanup. @config was changed to use page(). Better, since
5062 * Code cleanup. @config was changed to use page(). Better, since
5058 its output is always quite long.
5063 its output is always quite long.
5059
5064
5060 * Itpl is back as a dependency. I was having too many problems
5065 * Itpl is back as a dependency. I was having too many problems
5061 getting the parametric aliases to work reliably, and it's just
5066 getting the parametric aliases to work reliably, and it's just
5062 easier to code weird string operations with it than playing %()s
5067 easier to code weird string operations with it than playing %()s
5063 games. It's only ~6k, so I don't think it's too big a deal.
5068 games. It's only ~6k, so I don't think it's too big a deal.
5064
5069
5065 * Found (and fixed) a very nasty bug with history. !lines weren't
5070 * Found (and fixed) a very nasty bug with history. !lines weren't
5066 getting cached, and the out of sync caches would crash
5071 getting cached, and the out of sync caches would crash
5067 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5072 IPython. Fixed it by reorganizing the prefilter/handlers/logger
5068 division of labor a bit better. Bug fixed, cleaner structure.
5073 division of labor a bit better. Bug fixed, cleaner structure.
5069
5074
5070 2001-12-01 Fernando Perez <fperez@colorado.edu>
5075 2001-12-01 Fernando Perez <fperez@colorado.edu>
5071
5076
5072 * Released 0.1.19
5077 * Released 0.1.19
5073
5078
5074 * Added option -n to @hist to prevent line number printing. Much
5079 * Added option -n to @hist to prevent line number printing. Much
5075 easier to copy/paste code this way.
5080 easier to copy/paste code this way.
5076
5081
5077 * Created global _il to hold the input list. Allows easy
5082 * Created global _il to hold the input list. Allows easy
5078 re-execution of blocks of code by slicing it (inspired by Janko's
5083 re-execution of blocks of code by slicing it (inspired by Janko's
5079 comment on 'macros').
5084 comment on 'macros').
5080
5085
5081 * Small fixes and doc updates.
5086 * Small fixes and doc updates.
5082
5087
5083 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5088 * Rewrote @history function (was @h). Renamed it to @hist, @h is
5084 much too fragile with automagic. Handles properly multi-line
5089 much too fragile with automagic. Handles properly multi-line
5085 statements and takes parameters.
5090 statements and takes parameters.
5086
5091
5087 2001-11-30 Fernando Perez <fperez@colorado.edu>
5092 2001-11-30 Fernando Perez <fperez@colorado.edu>
5088
5093
5089 * Version 0.1.18 released.
5094 * Version 0.1.18 released.
5090
5095
5091 * Fixed nasty namespace bug in initial module imports.
5096 * Fixed nasty namespace bug in initial module imports.
5092
5097
5093 * Added copyright/license notes to all code files (except
5098 * Added copyright/license notes to all code files (except
5094 DPyGetOpt). For the time being, LGPL. That could change.
5099 DPyGetOpt). For the time being, LGPL. That could change.
5095
5100
5096 * Rewrote a much nicer README, updated INSTALL, cleaned up
5101 * Rewrote a much nicer README, updated INSTALL, cleaned up
5097 ipythonrc-* samples.
5102 ipythonrc-* samples.
5098
5103
5099 * Overall code/documentation cleanup. Basically ready for
5104 * Overall code/documentation cleanup. Basically ready for
5100 release. Only remaining thing: licence decision (LGPL?).
5105 release. Only remaining thing: licence decision (LGPL?).
5101
5106
5102 * Converted load_config to a class, ConfigLoader. Now recursion
5107 * Converted load_config to a class, ConfigLoader. Now recursion
5103 control is better organized. Doesn't include the same file twice.
5108 control is better organized. Doesn't include the same file twice.
5104
5109
5105 2001-11-29 Fernando Perez <fperez@colorado.edu>
5110 2001-11-29 Fernando Perez <fperez@colorado.edu>
5106
5111
5107 * Got input history working. Changed output history variables from
5112 * Got input history working. Changed output history variables from
5108 _p to _o so that _i is for input and _o for output. Just cleaner
5113 _p to _o so that _i is for input and _o for output. Just cleaner
5109 convention.
5114 convention.
5110
5115
5111 * Implemented parametric aliases. This pretty much allows the
5116 * Implemented parametric aliases. This pretty much allows the
5112 alias system to offer full-blown shell convenience, I think.
5117 alias system to offer full-blown shell convenience, I think.
5113
5118
5114 * Version 0.1.17 released, 0.1.18 opened.
5119 * Version 0.1.17 released, 0.1.18 opened.
5115
5120
5116 * dot_ipython/ipythonrc (alias): added documentation.
5121 * dot_ipython/ipythonrc (alias): added documentation.
5117 (xcolor): Fixed small bug (xcolors -> xcolor)
5122 (xcolor): Fixed small bug (xcolors -> xcolor)
5118
5123
5119 * Changed the alias system. Now alias is a magic command to define
5124 * Changed the alias system. Now alias is a magic command to define
5120 aliases just like the shell. Rationale: the builtin magics should
5125 aliases just like the shell. Rationale: the builtin magics should
5121 be there for things deeply connected to IPython's
5126 be there for things deeply connected to IPython's
5122 architecture. And this is a much lighter system for what I think
5127 architecture. And this is a much lighter system for what I think
5123 is the really important feature: allowing users to define quickly
5128 is the really important feature: allowing users to define quickly
5124 magics that will do shell things for them, so they can customize
5129 magics that will do shell things for them, so they can customize
5125 IPython easily to match their work habits. If someone is really
5130 IPython easily to match their work habits. If someone is really
5126 desperate to have another name for a builtin alias, they can
5131 desperate to have another name for a builtin alias, they can
5127 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5132 always use __IP.magic_newname = __IP.magic_oldname. Hackish but
5128 works.
5133 works.
5129
5134
5130 2001-11-28 Fernando Perez <fperez@colorado.edu>
5135 2001-11-28 Fernando Perez <fperez@colorado.edu>
5131
5136
5132 * Changed @file so that it opens the source file at the proper
5137 * Changed @file so that it opens the source file at the proper
5133 line. Since it uses less, if your EDITOR environment is
5138 line. Since it uses less, if your EDITOR environment is
5134 configured, typing v will immediately open your editor of choice
5139 configured, typing v will immediately open your editor of choice
5135 right at the line where the object is defined. Not as quick as
5140 right at the line where the object is defined. Not as quick as
5136 having a direct @edit command, but for all intents and purposes it
5141 having a direct @edit command, but for all intents and purposes it
5137 works. And I don't have to worry about writing @edit to deal with
5142 works. And I don't have to worry about writing @edit to deal with
5138 all the editors, less does that.
5143 all the editors, less does that.
5139
5144
5140 * Version 0.1.16 released, 0.1.17 opened.
5145 * Version 0.1.16 released, 0.1.17 opened.
5141
5146
5142 * Fixed some nasty bugs in the page/page_dumb combo that could
5147 * Fixed some nasty bugs in the page/page_dumb combo that could
5143 crash IPython.
5148 crash IPython.
5144
5149
5145 2001-11-27 Fernando Perez <fperez@colorado.edu>
5150 2001-11-27 Fernando Perez <fperez@colorado.edu>
5146
5151
5147 * Version 0.1.15 released, 0.1.16 opened.
5152 * Version 0.1.15 released, 0.1.16 opened.
5148
5153
5149 * Finally got ? and ?? to work for undefined things: now it's
5154 * Finally got ? and ?? to work for undefined things: now it's
5150 possible to type {}.get? and get information about the get method
5155 possible to type {}.get? and get information about the get method
5151 of dicts, or os.path? even if only os is defined (so technically
5156 of dicts, or os.path? even if only os is defined (so technically
5152 os.path isn't). Works at any level. For example, after import os,
5157 os.path isn't). Works at any level. For example, after import os,
5153 os?, os.path?, os.path.abspath? all work. This is great, took some
5158 os?, os.path?, os.path.abspath? all work. This is great, took some
5154 work in _ofind.
5159 work in _ofind.
5155
5160
5156 * Fixed more bugs with logging. The sanest way to do it was to add
5161 * Fixed more bugs with logging. The sanest way to do it was to add
5157 to @log a 'mode' parameter. Killed two in one shot (this mode
5162 to @log a 'mode' parameter. Killed two in one shot (this mode
5158 option was a request of Janko's). I think it's finally clean
5163 option was a request of Janko's). I think it's finally clean
5159 (famous last words).
5164 (famous last words).
5160
5165
5161 * Added a page_dumb() pager which does a decent job of paging on
5166 * Added a page_dumb() pager which does a decent job of paging on
5162 screen, if better things (like less) aren't available. One less
5167 screen, if better things (like less) aren't available. One less
5163 unix dependency (someday maybe somebody will port this to
5168 unix dependency (someday maybe somebody will port this to
5164 windows).
5169 windows).
5165
5170
5166 * Fixed problem in magic_log: would lock of logging out if log
5171 * Fixed problem in magic_log: would lock of logging out if log
5167 creation failed (because it would still think it had succeeded).
5172 creation failed (because it would still think it had succeeded).
5168
5173
5169 * Improved the page() function using curses to auto-detect screen
5174 * Improved the page() function using curses to auto-detect screen
5170 size. Now it can make a much better decision on whether to print
5175 size. Now it can make a much better decision on whether to print
5171 or page a string. Option screen_length was modified: a value 0
5176 or page a string. Option screen_length was modified: a value 0
5172 means auto-detect, and that's the default now.
5177 means auto-detect, and that's the default now.
5173
5178
5174 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5179 * Version 0.1.14 released, 0.1.15 opened. I think this is ready to
5175 go out. I'll test it for a few days, then talk to Janko about
5180 go out. I'll test it for a few days, then talk to Janko about
5176 licences and announce it.
5181 licences and announce it.
5177
5182
5178 * Fixed the length of the auto-generated ---> prompt which appears
5183 * Fixed the length of the auto-generated ---> prompt which appears
5179 for auto-parens and auto-quotes. Getting this right isn't trivial,
5184 for auto-parens and auto-quotes. Getting this right isn't trivial,
5180 with all the color escapes, different prompt types and optional
5185 with all the color escapes, different prompt types and optional
5181 separators. But it seems to be working in all the combinations.
5186 separators. But it seems to be working in all the combinations.
5182
5187
5183 2001-11-26 Fernando Perez <fperez@colorado.edu>
5188 2001-11-26 Fernando Perez <fperez@colorado.edu>
5184
5189
5185 * Wrote a regexp filter to get option types from the option names
5190 * Wrote a regexp filter to get option types from the option names
5186 string. This eliminates the need to manually keep two duplicate
5191 string. This eliminates the need to manually keep two duplicate
5187 lists.
5192 lists.
5188
5193
5189 * Removed the unneeded check_option_names. Now options are handled
5194 * Removed the unneeded check_option_names. Now options are handled
5190 in a much saner manner and it's easy to visually check that things
5195 in a much saner manner and it's easy to visually check that things
5191 are ok.
5196 are ok.
5192
5197
5193 * Updated version numbers on all files I modified to carry a
5198 * Updated version numbers on all files I modified to carry a
5194 notice so Janko and Nathan have clear version markers.
5199 notice so Janko and Nathan have clear version markers.
5195
5200
5196 * Updated docstring for ultraTB with my changes. I should send
5201 * Updated docstring for ultraTB with my changes. I should send
5197 this to Nathan.
5202 this to Nathan.
5198
5203
5199 * Lots of small fixes. Ran everything through pychecker again.
5204 * Lots of small fixes. Ran everything through pychecker again.
5200
5205
5201 * Made loading of deep_reload an cmd line option. If it's not too
5206 * Made loading of deep_reload an cmd line option. If it's not too
5202 kosher, now people can just disable it. With -nodeep_reload it's
5207 kosher, now people can just disable it. With -nodeep_reload it's
5203 still available as dreload(), it just won't overwrite reload().
5208 still available as dreload(), it just won't overwrite reload().
5204
5209
5205 * Moved many options to the no| form (-opt and -noopt
5210 * Moved many options to the no| form (-opt and -noopt
5206 accepted). Cleaner.
5211 accepted). Cleaner.
5207
5212
5208 * Changed magic_log so that if called with no parameters, it uses
5213 * Changed magic_log so that if called with no parameters, it uses
5209 'rotate' mode. That way auto-generated logs aren't automatically
5214 'rotate' mode. That way auto-generated logs aren't automatically
5210 over-written. For normal logs, now a backup is made if it exists
5215 over-written. For normal logs, now a backup is made if it exists
5211 (only 1 level of backups). A new 'backup' mode was added to the
5216 (only 1 level of backups). A new 'backup' mode was added to the
5212 Logger class to support this. This was a request by Janko.
5217 Logger class to support this. This was a request by Janko.
5213
5218
5214 * Added @logoff/@logon to stop/restart an active log.
5219 * Added @logoff/@logon to stop/restart an active log.
5215
5220
5216 * Fixed a lot of bugs in log saving/replay. It was pretty
5221 * Fixed a lot of bugs in log saving/replay. It was pretty
5217 broken. Now special lines (!@,/) appear properly in the command
5222 broken. Now special lines (!@,/) appear properly in the command
5218 history after a log replay.
5223 history after a log replay.
5219
5224
5220 * Tried and failed to implement full session saving via pickle. My
5225 * Tried and failed to implement full session saving via pickle. My
5221 idea was to pickle __main__.__dict__, but modules can't be
5226 idea was to pickle __main__.__dict__, but modules can't be
5222 pickled. This would be a better alternative to replaying logs, but
5227 pickled. This would be a better alternative to replaying logs, but
5223 seems quite tricky to get to work. Changed -session to be called
5228 seems quite tricky to get to work. Changed -session to be called
5224 -logplay, which more accurately reflects what it does. And if we
5229 -logplay, which more accurately reflects what it does. And if we
5225 ever get real session saving working, -session is now available.
5230 ever get real session saving working, -session is now available.
5226
5231
5227 * Implemented color schemes for prompts also. As for tracebacks,
5232 * Implemented color schemes for prompts also. As for tracebacks,
5228 currently only NoColor and Linux are supported. But now the
5233 currently only NoColor and Linux are supported. But now the
5229 infrastructure is in place, based on a generic ColorScheme
5234 infrastructure is in place, based on a generic ColorScheme
5230 class. So writing and activating new schemes both for the prompts
5235 class. So writing and activating new schemes both for the prompts
5231 and the tracebacks should be straightforward.
5236 and the tracebacks should be straightforward.
5232
5237
5233 * Version 0.1.13 released, 0.1.14 opened.
5238 * Version 0.1.13 released, 0.1.14 opened.
5234
5239
5235 * Changed handling of options for output cache. Now counter is
5240 * Changed handling of options for output cache. Now counter is
5236 hardwired starting at 1 and one specifies the maximum number of
5241 hardwired starting at 1 and one specifies the maximum number of
5237 entries *in the outcache* (not the max prompt counter). This is
5242 entries *in the outcache* (not the max prompt counter). This is
5238 much better, since many statements won't increase the cache
5243 much better, since many statements won't increase the cache
5239 count. It also eliminated some confusing options, now there's only
5244 count. It also eliminated some confusing options, now there's only
5240 one: cache_size.
5245 one: cache_size.
5241
5246
5242 * Added 'alias' magic function and magic_alias option in the
5247 * Added 'alias' magic function and magic_alias option in the
5243 ipythonrc file. Now the user can easily define whatever names he
5248 ipythonrc file. Now the user can easily define whatever names he
5244 wants for the magic functions without having to play weird
5249 wants for the magic functions without having to play weird
5245 namespace games. This gives IPython a real shell-like feel.
5250 namespace games. This gives IPython a real shell-like feel.
5246
5251
5247 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5252 * Fixed doc/?/?? for magics. Now all work, in all forms (explicit
5248 @ or not).
5253 @ or not).
5249
5254
5250 This was one of the last remaining 'visible' bugs (that I know
5255 This was one of the last remaining 'visible' bugs (that I know
5251 of). I think if I can clean up the session loading so it works
5256 of). I think if I can clean up the session loading so it works
5252 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5257 100% I'll release a 0.2.0 version on c.p.l (talk to Janko first
5253 about licensing).
5258 about licensing).
5254
5259
5255 2001-11-25 Fernando Perez <fperez@colorado.edu>
5260 2001-11-25 Fernando Perez <fperez@colorado.edu>
5256
5261
5257 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5262 * Rewrote somewhat oinfo (?/??). Nicer, now uses page() and
5258 there's a cleaner distinction between what ? and ?? show.
5263 there's a cleaner distinction between what ? and ?? show.
5259
5264
5260 * Added screen_length option. Now the user can define his own
5265 * Added screen_length option. Now the user can define his own
5261 screen size for page() operations.
5266 screen size for page() operations.
5262
5267
5263 * Implemented magic shell-like functions with automatic code
5268 * Implemented magic shell-like functions with automatic code
5264 generation. Now adding another function is just a matter of adding
5269 generation. Now adding another function is just a matter of adding
5265 an entry to a dict, and the function is dynamically generated at
5270 an entry to a dict, and the function is dynamically generated at
5266 run-time. Python has some really cool features!
5271 run-time. Python has some really cool features!
5267
5272
5268 * Renamed many options to cleanup conventions a little. Now all
5273 * Renamed many options to cleanup conventions a little. Now all
5269 are lowercase, and only underscores where needed. Also in the code
5274 are lowercase, and only underscores where needed. Also in the code
5270 option name tables are clearer.
5275 option name tables are clearer.
5271
5276
5272 * Changed prompts a little. Now input is 'In [n]:' instead of
5277 * Changed prompts a little. Now input is 'In [n]:' instead of
5273 'In[n]:='. This allows it the numbers to be aligned with the
5278 'In[n]:='. This allows it the numbers to be aligned with the
5274 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5279 Out[n] numbers, and removes usage of ':=' which doesn't exist in
5275 Python (it was a Mathematica thing). The '...' continuation prompt
5280 Python (it was a Mathematica thing). The '...' continuation prompt
5276 was also changed a little to align better.
5281 was also changed a little to align better.
5277
5282
5278 * Fixed bug when flushing output cache. Not all _p<n> variables
5283 * Fixed bug when flushing output cache. Not all _p<n> variables
5279 exist, so their deletion needs to be wrapped in a try:
5284 exist, so their deletion needs to be wrapped in a try:
5280
5285
5281 * Figured out how to properly use inspect.formatargspec() (it
5286 * Figured out how to properly use inspect.formatargspec() (it
5282 requires the args preceded by *). So I removed all the code from
5287 requires the args preceded by *). So I removed all the code from
5283 _get_pdef in Magic, which was just replicating that.
5288 _get_pdef in Magic, which was just replicating that.
5284
5289
5285 * Added test to prefilter to allow redefining magic function names
5290 * Added test to prefilter to allow redefining magic function names
5286 as variables. This is ok, since the @ form is always available,
5291 as variables. This is ok, since the @ form is always available,
5287 but whe should allow the user to define a variable called 'ls' if
5292 but whe should allow the user to define a variable called 'ls' if
5288 he needs it.
5293 he needs it.
5289
5294
5290 * Moved the ToDo information from README into a separate ToDo.
5295 * Moved the ToDo information from README into a separate ToDo.
5291
5296
5292 * General code cleanup and small bugfixes. I think it's close to a
5297 * General code cleanup and small bugfixes. I think it's close to a
5293 state where it can be released, obviously with a big 'beta'
5298 state where it can be released, obviously with a big 'beta'
5294 warning on it.
5299 warning on it.
5295
5300
5296 * Got the magic function split to work. Now all magics are defined
5301 * Got the magic function split to work. Now all magics are defined
5297 in a separate class. It just organizes things a bit, and now
5302 in a separate class. It just organizes things a bit, and now
5298 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5303 Xemacs behaves nicer (it was choking on InteractiveShell b/c it
5299 was too long).
5304 was too long).
5300
5305
5301 * Changed @clear to @reset to avoid potential confusions with
5306 * Changed @clear to @reset to avoid potential confusions with
5302 the shell command clear. Also renamed @cl to @clear, which does
5307 the shell command clear. Also renamed @cl to @clear, which does
5303 exactly what people expect it to from their shell experience.
5308 exactly what people expect it to from their shell experience.
5304
5309
5305 Added a check to the @reset command (since it's so
5310 Added a check to the @reset command (since it's so
5306 destructive, it's probably a good idea to ask for confirmation).
5311 destructive, it's probably a good idea to ask for confirmation).
5307 But now reset only works for full namespace resetting. Since the
5312 But now reset only works for full namespace resetting. Since the
5308 del keyword is already there for deleting a few specific
5313 del keyword is already there for deleting a few specific
5309 variables, I don't see the point of having a redundant magic
5314 variables, I don't see the point of having a redundant magic
5310 function for the same task.
5315 function for the same task.
5311
5316
5312 2001-11-24 Fernando Perez <fperez@colorado.edu>
5317 2001-11-24 Fernando Perez <fperez@colorado.edu>
5313
5318
5314 * Updated the builtin docs (esp. the ? ones).
5319 * Updated the builtin docs (esp. the ? ones).
5315
5320
5316 * Ran all the code through pychecker. Not terribly impressed with
5321 * Ran all the code through pychecker. Not terribly impressed with
5317 it: lots of spurious warnings and didn't really find anything of
5322 it: lots of spurious warnings and didn't really find anything of
5318 substance (just a few modules being imported and not used).
5323 substance (just a few modules being imported and not used).
5319
5324
5320 * Implemented the new ultraTB functionality into IPython. New
5325 * Implemented the new ultraTB functionality into IPython. New
5321 option: xcolors. This chooses color scheme. xmode now only selects
5326 option: xcolors. This chooses color scheme. xmode now only selects
5322 between Plain and Verbose. Better orthogonality.
5327 between Plain and Verbose. Better orthogonality.
5323
5328
5324 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5329 * Large rewrite of ultraTB. Much cleaner now, with a separation of
5325 mode and color scheme for the exception handlers. Now it's
5330 mode and color scheme for the exception handlers. Now it's
5326 possible to have the verbose traceback with no coloring.
5331 possible to have the verbose traceback with no coloring.
5327
5332
5328 2001-11-23 Fernando Perez <fperez@colorado.edu>
5333 2001-11-23 Fernando Perez <fperez@colorado.edu>
5329
5334
5330 * Version 0.1.12 released, 0.1.13 opened.
5335 * Version 0.1.12 released, 0.1.13 opened.
5331
5336
5332 * Removed option to set auto-quote and auto-paren escapes by
5337 * Removed option to set auto-quote and auto-paren escapes by
5333 user. The chances of breaking valid syntax are just too high. If
5338 user. The chances of breaking valid syntax are just too high. If
5334 someone *really* wants, they can always dig into the code.
5339 someone *really* wants, they can always dig into the code.
5335
5340
5336 * Made prompt separators configurable.
5341 * Made prompt separators configurable.
5337
5342
5338 2001-11-22 Fernando Perez <fperez@colorado.edu>
5343 2001-11-22 Fernando Perez <fperez@colorado.edu>
5339
5344
5340 * Small bugfixes in many places.
5345 * Small bugfixes in many places.
5341
5346
5342 * Removed the MyCompleter class from ipplib. It seemed redundant
5347 * Removed the MyCompleter class from ipplib. It seemed redundant
5343 with the C-p,C-n history search functionality. Less code to
5348 with the C-p,C-n history search functionality. Less code to
5344 maintain.
5349 maintain.
5345
5350
5346 * Moved all the original ipython.py code into ipythonlib.py. Right
5351 * Moved all the original ipython.py code into ipythonlib.py. Right
5347 now it's just one big dump into a function called make_IPython, so
5352 now it's just one big dump into a function called make_IPython, so
5348 no real modularity has been gained. But at least it makes the
5353 no real modularity has been gained. But at least it makes the
5349 wrapper script tiny, and since ipythonlib is a module, it gets
5354 wrapper script tiny, and since ipythonlib is a module, it gets
5350 compiled and startup is much faster.
5355 compiled and startup is much faster.
5351
5356
5352 This is a reasobably 'deep' change, so we should test it for a
5357 This is a reasobably 'deep' change, so we should test it for a
5353 while without messing too much more with the code.
5358 while without messing too much more with the code.
5354
5359
5355 2001-11-21 Fernando Perez <fperez@colorado.edu>
5360 2001-11-21 Fernando Perez <fperez@colorado.edu>
5356
5361
5357 * Version 0.1.11 released, 0.1.12 opened for further work.
5362 * Version 0.1.11 released, 0.1.12 opened for further work.
5358
5363
5359 * Removed dependency on Itpl. It was only needed in one place. It
5364 * Removed dependency on Itpl. It was only needed in one place. It
5360 would be nice if this became part of python, though. It makes life
5365 would be nice if this became part of python, though. It makes life
5361 *a lot* easier in some cases.
5366 *a lot* easier in some cases.
5362
5367
5363 * Simplified the prefilter code a bit. Now all handlers are
5368 * Simplified the prefilter code a bit. Now all handlers are
5364 expected to explicitly return a value (at least a blank string).
5369 expected to explicitly return a value (at least a blank string).
5365
5370
5366 * Heavy edits in ipplib. Removed the help system altogether. Now
5371 * Heavy edits in ipplib. Removed the help system altogether. Now
5367 obj?/?? is used for inspecting objects, a magic @doc prints
5372 obj?/?? is used for inspecting objects, a magic @doc prints
5368 docstrings, and full-blown Python help is accessed via the 'help'
5373 docstrings, and full-blown Python help is accessed via the 'help'
5369 keyword. This cleans up a lot of code (less to maintain) and does
5374 keyword. This cleans up a lot of code (less to maintain) and does
5370 the job. Since 'help' is now a standard Python component, might as
5375 the job. Since 'help' is now a standard Python component, might as
5371 well use it and remove duplicate functionality.
5376 well use it and remove duplicate functionality.
5372
5377
5373 Also removed the option to use ipplib as a standalone program. By
5378 Also removed the option to use ipplib as a standalone program. By
5374 now it's too dependent on other parts of IPython to function alone.
5379 now it's too dependent on other parts of IPython to function alone.
5375
5380
5376 * Fixed bug in genutils.pager. It would crash if the pager was
5381 * Fixed bug in genutils.pager. It would crash if the pager was
5377 exited immediately after opening (broken pipe).
5382 exited immediately after opening (broken pipe).
5378
5383
5379 * Trimmed down the VerboseTB reporting a little. The header is
5384 * Trimmed down the VerboseTB reporting a little. The header is
5380 much shorter now and the repeated exception arguments at the end
5385 much shorter now and the repeated exception arguments at the end
5381 have been removed. For interactive use the old header seemed a bit
5386 have been removed. For interactive use the old header seemed a bit
5382 excessive.
5387 excessive.
5383
5388
5384 * Fixed small bug in output of @whos for variables with multi-word
5389 * Fixed small bug in output of @whos for variables with multi-word
5385 types (only first word was displayed).
5390 types (only first word was displayed).
5386
5391
5387 2001-11-17 Fernando Perez <fperez@colorado.edu>
5392 2001-11-17 Fernando Perez <fperez@colorado.edu>
5388
5393
5389 * Version 0.1.10 released, 0.1.11 opened for further work.
5394 * Version 0.1.10 released, 0.1.11 opened for further work.
5390
5395
5391 * Modified dirs and friends. dirs now *returns* the stack (not
5396 * Modified dirs and friends. dirs now *returns* the stack (not
5392 prints), so one can manipulate it as a variable. Convenient to
5397 prints), so one can manipulate it as a variable. Convenient to
5393 travel along many directories.
5398 travel along many directories.
5394
5399
5395 * Fixed bug in magic_pdef: would only work with functions with
5400 * Fixed bug in magic_pdef: would only work with functions with
5396 arguments with default values.
5401 arguments with default values.
5397
5402
5398 2001-11-14 Fernando Perez <fperez@colorado.edu>
5403 2001-11-14 Fernando Perez <fperez@colorado.edu>
5399
5404
5400 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5405 * Added the PhysicsInput stuff to dot_ipython so it ships as an
5401 example with IPython. Various other minor fixes and cleanups.
5406 example with IPython. Various other minor fixes and cleanups.
5402
5407
5403 * Version 0.1.9 released, 0.1.10 opened for further work.
5408 * Version 0.1.9 released, 0.1.10 opened for further work.
5404
5409
5405 * Added sys.path to the list of directories searched in the
5410 * Added sys.path to the list of directories searched in the
5406 execfile= option. It used to be the current directory and the
5411 execfile= option. It used to be the current directory and the
5407 user's IPYTHONDIR only.
5412 user's IPYTHONDIR only.
5408
5413
5409 2001-11-13 Fernando Perez <fperez@colorado.edu>
5414 2001-11-13 Fernando Perez <fperez@colorado.edu>
5410
5415
5411 * Reinstated the raw_input/prefilter separation that Janko had
5416 * Reinstated the raw_input/prefilter separation that Janko had
5412 initially. This gives a more convenient setup for extending the
5417 initially. This gives a more convenient setup for extending the
5413 pre-processor from the outside: raw_input always gets a string,
5418 pre-processor from the outside: raw_input always gets a string,
5414 and prefilter has to process it. We can then redefine prefilter
5419 and prefilter has to process it. We can then redefine prefilter
5415 from the outside and implement extensions for special
5420 from the outside and implement extensions for special
5416 purposes.
5421 purposes.
5417
5422
5418 Today I got one for inputting PhysicalQuantity objects
5423 Today I got one for inputting PhysicalQuantity objects
5419 (from Scientific) without needing any function calls at
5424 (from Scientific) without needing any function calls at
5420 all. Extremely convenient, and it's all done as a user-level
5425 all. Extremely convenient, and it's all done as a user-level
5421 extension (no IPython code was touched). Now instead of:
5426 extension (no IPython code was touched). Now instead of:
5422 a = PhysicalQuantity(4.2,'m/s**2')
5427 a = PhysicalQuantity(4.2,'m/s**2')
5423 one can simply say
5428 one can simply say
5424 a = 4.2 m/s**2
5429 a = 4.2 m/s**2
5425 or even
5430 or even
5426 a = 4.2 m/s^2
5431 a = 4.2 m/s^2
5427
5432
5428 I use this, but it's also a proof of concept: IPython really is
5433 I use this, but it's also a proof of concept: IPython really is
5429 fully user-extensible, even at the level of the parsing of the
5434 fully user-extensible, even at the level of the parsing of the
5430 command line. It's not trivial, but it's perfectly doable.
5435 command line. It's not trivial, but it's perfectly doable.
5431
5436
5432 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5437 * Added 'add_flip' method to inclusion conflict resolver. Fixes
5433 the problem of modules being loaded in the inverse order in which
5438 the problem of modules being loaded in the inverse order in which
5434 they were defined in
5439 they were defined in
5435
5440
5436 * Version 0.1.8 released, 0.1.9 opened for further work.
5441 * Version 0.1.8 released, 0.1.9 opened for further work.
5437
5442
5438 * Added magics pdef, source and file. They respectively show the
5443 * Added magics pdef, source and file. They respectively show the
5439 definition line ('prototype' in C), source code and full python
5444 definition line ('prototype' in C), source code and full python
5440 file for any callable object. The object inspector oinfo uses
5445 file for any callable object. The object inspector oinfo uses
5441 these to show the same information.
5446 these to show the same information.
5442
5447
5443 * Version 0.1.7 released, 0.1.8 opened for further work.
5448 * Version 0.1.7 released, 0.1.8 opened for further work.
5444
5449
5445 * Separated all the magic functions into a class called Magic. The
5450 * Separated all the magic functions into a class called Magic. The
5446 InteractiveShell class was becoming too big for Xemacs to handle
5451 InteractiveShell class was becoming too big for Xemacs to handle
5447 (de-indenting a line would lock it up for 10 seconds while it
5452 (de-indenting a line would lock it up for 10 seconds while it
5448 backtracked on the whole class!)
5453 backtracked on the whole class!)
5449
5454
5450 FIXME: didn't work. It can be done, but right now namespaces are
5455 FIXME: didn't work. It can be done, but right now namespaces are
5451 all messed up. Do it later (reverted it for now, so at least
5456 all messed up. Do it later (reverted it for now, so at least
5452 everything works as before).
5457 everything works as before).
5453
5458
5454 * Got the object introspection system (magic_oinfo) working! I
5459 * Got the object introspection system (magic_oinfo) working! I
5455 think this is pretty much ready for release to Janko, so he can
5460 think this is pretty much ready for release to Janko, so he can
5456 test it for a while and then announce it. Pretty much 100% of what
5461 test it for a while and then announce it. Pretty much 100% of what
5457 I wanted for the 'phase 1' release is ready. Happy, tired.
5462 I wanted for the 'phase 1' release is ready. Happy, tired.
5458
5463
5459 2001-11-12 Fernando Perez <fperez@colorado.edu>
5464 2001-11-12 Fernando Perez <fperez@colorado.edu>
5460
5465
5461 * Version 0.1.6 released, 0.1.7 opened for further work.
5466 * Version 0.1.6 released, 0.1.7 opened for further work.
5462
5467
5463 * Fixed bug in printing: it used to test for truth before
5468 * Fixed bug in printing: it used to test for truth before
5464 printing, so 0 wouldn't print. Now checks for None.
5469 printing, so 0 wouldn't print. Now checks for None.
5465
5470
5466 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5471 * Fixed bug where auto-execs increase the prompt counter by 2 (b/c
5467 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5472 they have to call len(str(sys.ps1)) ). But the fix is ugly, it
5468 reaches by hand into the outputcache. Think of a better way to do
5473 reaches by hand into the outputcache. Think of a better way to do
5469 this later.
5474 this later.
5470
5475
5471 * Various small fixes thanks to Nathan's comments.
5476 * Various small fixes thanks to Nathan's comments.
5472
5477
5473 * Changed magic_pprint to magic_Pprint. This way it doesn't
5478 * Changed magic_pprint to magic_Pprint. This way it doesn't
5474 collide with pprint() and the name is consistent with the command
5479 collide with pprint() and the name is consistent with the command
5475 line option.
5480 line option.
5476
5481
5477 * Changed prompt counter behavior to be fully like
5482 * Changed prompt counter behavior to be fully like
5478 Mathematica's. That is, even input that doesn't return a result
5483 Mathematica's. That is, even input that doesn't return a result
5479 raises the prompt counter. The old behavior was kind of confusing
5484 raises the prompt counter. The old behavior was kind of confusing
5480 (getting the same prompt number several times if the operation
5485 (getting the same prompt number several times if the operation
5481 didn't return a result).
5486 didn't return a result).
5482
5487
5483 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5488 * Fixed Nathan's last name in a couple of places (Gray, not Graham).
5484
5489
5485 * Fixed -Classic mode (wasn't working anymore).
5490 * Fixed -Classic mode (wasn't working anymore).
5486
5491
5487 * Added colored prompts using Nathan's new code. Colors are
5492 * Added colored prompts using Nathan's new code. Colors are
5488 currently hardwired, they can be user-configurable. For
5493 currently hardwired, they can be user-configurable. For
5489 developers, they can be chosen in file ipythonlib.py, at the
5494 developers, they can be chosen in file ipythonlib.py, at the
5490 beginning of the CachedOutput class def.
5495 beginning of the CachedOutput class def.
5491
5496
5492 2001-11-11 Fernando Perez <fperez@colorado.edu>
5497 2001-11-11 Fernando Perez <fperez@colorado.edu>
5493
5498
5494 * Version 0.1.5 released, 0.1.6 opened for further work.
5499 * Version 0.1.5 released, 0.1.6 opened for further work.
5495
5500
5496 * Changed magic_env to *return* the environment as a dict (not to
5501 * Changed magic_env to *return* the environment as a dict (not to
5497 print it). This way it prints, but it can also be processed.
5502 print it). This way it prints, but it can also be processed.
5498
5503
5499 * Added Verbose exception reporting to interactive
5504 * Added Verbose exception reporting to interactive
5500 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5505 exceptions. Very nice, now even 1/0 at the prompt gives a verbose
5501 traceback. Had to make some changes to the ultraTB file. This is
5506 traceback. Had to make some changes to the ultraTB file. This is
5502 probably the last 'big' thing in my mental todo list. This ties
5507 probably the last 'big' thing in my mental todo list. This ties
5503 in with the next entry:
5508 in with the next entry:
5504
5509
5505 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5510 * Changed -Xi and -Xf to a single -xmode option. Now all the user
5506 has to specify is Plain, Color or Verbose for all exception
5511 has to specify is Plain, Color or Verbose for all exception
5507 handling.
5512 handling.
5508
5513
5509 * Removed ShellServices option. All this can really be done via
5514 * Removed ShellServices option. All this can really be done via
5510 the magic system. It's easier to extend, cleaner and has automatic
5515 the magic system. It's easier to extend, cleaner and has automatic
5511 namespace protection and documentation.
5516 namespace protection and documentation.
5512
5517
5513 2001-11-09 Fernando Perez <fperez@colorado.edu>
5518 2001-11-09 Fernando Perez <fperez@colorado.edu>
5514
5519
5515 * Fixed bug in output cache flushing (missing parameter to
5520 * Fixed bug in output cache flushing (missing parameter to
5516 __init__). Other small bugs fixed (found using pychecker).
5521 __init__). Other small bugs fixed (found using pychecker).
5517
5522
5518 * Version 0.1.4 opened for bugfixing.
5523 * Version 0.1.4 opened for bugfixing.
5519
5524
5520 2001-11-07 Fernando Perez <fperez@colorado.edu>
5525 2001-11-07 Fernando Perez <fperez@colorado.edu>
5521
5526
5522 * Version 0.1.3 released, mainly because of the raw_input bug.
5527 * Version 0.1.3 released, mainly because of the raw_input bug.
5523
5528
5524 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5529 * Fixed NASTY bug in raw_input: input line wasn't properly parsed
5525 and when testing for whether things were callable, a call could
5530 and when testing for whether things were callable, a call could
5526 actually be made to certain functions. They would get called again
5531 actually be made to certain functions. They would get called again
5527 once 'really' executed, with a resulting double call. A disaster
5532 once 'really' executed, with a resulting double call. A disaster
5528 in many cases (list.reverse() would never work!).
5533 in many cases (list.reverse() would never work!).
5529
5534
5530 * Removed prefilter() function, moved its code to raw_input (which
5535 * Removed prefilter() function, moved its code to raw_input (which
5531 after all was just a near-empty caller for prefilter). This saves
5536 after all was just a near-empty caller for prefilter). This saves
5532 a function call on every prompt, and simplifies the class a tiny bit.
5537 a function call on every prompt, and simplifies the class a tiny bit.
5533
5538
5534 * Fix _ip to __ip name in magic example file.
5539 * Fix _ip to __ip name in magic example file.
5535
5540
5536 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5541 * Changed 'tar -x -f' to 'tar xvf' in auto-installer. This should
5537 work with non-gnu versions of tar.
5542 work with non-gnu versions of tar.
5538
5543
5539 2001-11-06 Fernando Perez <fperez@colorado.edu>
5544 2001-11-06 Fernando Perez <fperez@colorado.edu>
5540
5545
5541 * Version 0.1.2. Just to keep track of the recent changes.
5546 * Version 0.1.2. Just to keep track of the recent changes.
5542
5547
5543 * Fixed nasty bug in output prompt routine. It used to check 'if
5548 * Fixed nasty bug in output prompt routine. It used to check 'if
5544 arg != None...'. Problem is, this fails if arg implements a
5549 arg != None...'. Problem is, this fails if arg implements a
5545 special comparison (__cmp__) which disallows comparing to
5550 special comparison (__cmp__) which disallows comparing to
5546 None. Found it when trying to use the PhysicalQuantity module from
5551 None. Found it when trying to use the PhysicalQuantity module from
5547 ScientificPython.
5552 ScientificPython.
5548
5553
5549 2001-11-05 Fernando Perez <fperez@colorado.edu>
5554 2001-11-05 Fernando Perez <fperez@colorado.edu>
5550
5555
5551 * Also added dirs. Now the pushd/popd/dirs family functions
5556 * Also added dirs. Now the pushd/popd/dirs family functions
5552 basically like the shell, with the added convenience of going home
5557 basically like the shell, with the added convenience of going home
5553 when called with no args.
5558 when called with no args.
5554
5559
5555 * pushd/popd slightly modified to mimic shell behavior more
5560 * pushd/popd slightly modified to mimic shell behavior more
5556 closely.
5561 closely.
5557
5562
5558 * Added env,pushd,popd from ShellServices as magic functions. I
5563 * Added env,pushd,popd from ShellServices as magic functions. I
5559 think the cleanest will be to port all desired functions from
5564 think the cleanest will be to port all desired functions from
5560 ShellServices as magics and remove ShellServices altogether. This
5565 ShellServices as magics and remove ShellServices altogether. This
5561 will provide a single, clean way of adding functionality
5566 will provide a single, clean way of adding functionality
5562 (shell-type or otherwise) to IP.
5567 (shell-type or otherwise) to IP.
5563
5568
5564 2001-11-04 Fernando Perez <fperez@colorado.edu>
5569 2001-11-04 Fernando Perez <fperez@colorado.edu>
5565
5570
5566 * Added .ipython/ directory to sys.path. This way users can keep
5571 * Added .ipython/ directory to sys.path. This way users can keep
5567 customizations there and access them via import.
5572 customizations there and access them via import.
5568
5573
5569 2001-11-03 Fernando Perez <fperez@colorado.edu>
5574 2001-11-03 Fernando Perez <fperez@colorado.edu>
5570
5575
5571 * Opened version 0.1.1 for new changes.
5576 * Opened version 0.1.1 for new changes.
5572
5577
5573 * Changed version number to 0.1.0: first 'public' release, sent to
5578 * Changed version number to 0.1.0: first 'public' release, sent to
5574 Nathan and Janko.
5579 Nathan and Janko.
5575
5580
5576 * Lots of small fixes and tweaks.
5581 * Lots of small fixes and tweaks.
5577
5582
5578 * Minor changes to whos format. Now strings are shown, snipped if
5583 * Minor changes to whos format. Now strings are shown, snipped if
5579 too long.
5584 too long.
5580
5585
5581 * Changed ShellServices to work on __main__ so they show up in @who
5586 * Changed ShellServices to work on __main__ so they show up in @who
5582
5587
5583 * Help also works with ? at the end of a line:
5588 * Help also works with ? at the end of a line:
5584 ?sin and sin?
5589 ?sin and sin?
5585 both produce the same effect. This is nice, as often I use the
5590 both produce the same effect. This is nice, as often I use the
5586 tab-complete to find the name of a method, but I used to then have
5591 tab-complete to find the name of a method, but I used to then have
5587 to go to the beginning of the line to put a ? if I wanted more
5592 to go to the beginning of the line to put a ? if I wanted more
5588 info. Now I can just add the ? and hit return. Convenient.
5593 info. Now I can just add the ? and hit return. Convenient.
5589
5594
5590 2001-11-02 Fernando Perez <fperez@colorado.edu>
5595 2001-11-02 Fernando Perez <fperez@colorado.edu>
5591
5596
5592 * Python version check (>=2.1) added.
5597 * Python version check (>=2.1) added.
5593
5598
5594 * Added LazyPython documentation. At this point the docs are quite
5599 * Added LazyPython documentation. At this point the docs are quite
5595 a mess. A cleanup is in order.
5600 a mess. A cleanup is in order.
5596
5601
5597 * Auto-installer created. For some bizarre reason, the zipfiles
5602 * Auto-installer created. For some bizarre reason, the zipfiles
5598 module isn't working on my system. So I made a tar version
5603 module isn't working on my system. So I made a tar version
5599 (hopefully the command line options in various systems won't kill
5604 (hopefully the command line options in various systems won't kill
5600 me).
5605 me).
5601
5606
5602 * Fixes to Struct in genutils. Now all dictionary-like methods are
5607 * Fixes to Struct in genutils. Now all dictionary-like methods are
5603 protected (reasonably).
5608 protected (reasonably).
5604
5609
5605 * Added pager function to genutils and changed ? to print usage
5610 * Added pager function to genutils and changed ? to print usage
5606 note through it (it was too long).
5611 note through it (it was too long).
5607
5612
5608 * Added the LazyPython functionality. Works great! I changed the
5613 * Added the LazyPython functionality. Works great! I changed the
5609 auto-quote escape to ';', it's on home row and next to '. But
5614 auto-quote escape to ';', it's on home row and next to '. But
5610 both auto-quote and auto-paren (still /) escapes are command-line
5615 both auto-quote and auto-paren (still /) escapes are command-line
5611 parameters.
5616 parameters.
5612
5617
5613
5618
5614 2001-11-01 Fernando Perez <fperez@colorado.edu>
5619 2001-11-01 Fernando Perez <fperez@colorado.edu>
5615
5620
5616 * Version changed to 0.0.7. Fairly large change: configuration now
5621 * Version changed to 0.0.7. Fairly large change: configuration now
5617 is all stored in a directory, by default .ipython. There, all
5622 is all stored in a directory, by default .ipython. There, all
5618 config files have normal looking names (not .names)
5623 config files have normal looking names (not .names)
5619
5624
5620 * Version 0.0.6 Released first to Lucas and Archie as a test
5625 * Version 0.0.6 Released first to Lucas and Archie as a test
5621 run. Since it's the first 'semi-public' release, change version to
5626 run. Since it's the first 'semi-public' release, change version to
5622 > 0.0.6 for any changes now.
5627 > 0.0.6 for any changes now.
5623
5628
5624 * Stuff I had put in the ipplib.py changelog:
5629 * Stuff I had put in the ipplib.py changelog:
5625
5630
5626 Changes to InteractiveShell:
5631 Changes to InteractiveShell:
5627
5632
5628 - Made the usage message a parameter.
5633 - Made the usage message a parameter.
5629
5634
5630 - Require the name of the shell variable to be given. It's a bit
5635 - Require the name of the shell variable to be given. It's a bit
5631 of a hack, but allows the name 'shell' not to be hardwired in the
5636 of a hack, but allows the name 'shell' not to be hardwired in the
5632 magic (@) handler, which is problematic b/c it requires
5637 magic (@) handler, which is problematic b/c it requires
5633 polluting the global namespace with 'shell'. This in turn is
5638 polluting the global namespace with 'shell'. This in turn is
5634 fragile: if a user redefines a variable called shell, things
5639 fragile: if a user redefines a variable called shell, things
5635 break.
5640 break.
5636
5641
5637 - magic @: all functions available through @ need to be defined
5642 - magic @: all functions available through @ need to be defined
5638 as magic_<name>, even though they can be called simply as
5643 as magic_<name>, even though they can be called simply as
5639 @<name>. This allows the special command @magic to gather
5644 @<name>. This allows the special command @magic to gather
5640 information automatically about all existing magic functions,
5645 information automatically about all existing magic functions,
5641 even if they are run-time user extensions, by parsing the shell
5646 even if they are run-time user extensions, by parsing the shell
5642 instance __dict__ looking for special magic_ names.
5647 instance __dict__ looking for special magic_ names.
5643
5648
5644 - mainloop: added *two* local namespace parameters. This allows
5649 - mainloop: added *two* local namespace parameters. This allows
5645 the class to differentiate between parameters which were there
5650 the class to differentiate between parameters which were there
5646 before and after command line initialization was processed. This
5651 before and after command line initialization was processed. This
5647 way, later @who can show things loaded at startup by the
5652 way, later @who can show things loaded at startup by the
5648 user. This trick was necessary to make session saving/reloading
5653 user. This trick was necessary to make session saving/reloading
5649 really work: ideally after saving/exiting/reloading a session,
5654 really work: ideally after saving/exiting/reloading a session,
5650 *everything* should look the same, including the output of @who. I
5655 *everything* should look the same, including the output of @who. I
5651 was only able to make this work with this double namespace
5656 was only able to make this work with this double namespace
5652 trick.
5657 trick.
5653
5658
5654 - added a header to the logfile which allows (almost) full
5659 - added a header to the logfile which allows (almost) full
5655 session restoring.
5660 session restoring.
5656
5661
5657 - prepend lines beginning with @ or !, with a and log
5662 - prepend lines beginning with @ or !, with a and log
5658 them. Why? !lines: may be useful to know what you did @lines:
5663 them. Why? !lines: may be useful to know what you did @lines:
5659 they may affect session state. So when restoring a session, at
5664 they may affect session state. So when restoring a session, at
5660 least inform the user of their presence. I couldn't quite get
5665 least inform the user of their presence. I couldn't quite get
5661 them to properly re-execute, but at least the user is warned.
5666 them to properly re-execute, but at least the user is warned.
5662
5667
5663 * Started ChangeLog.
5668 * Started ChangeLog.
General Comments 0
You need to be logged in to leave comments. Login now